From 76d7903c6f51552c3a8aac3df76e9b488867df59 Mon Sep 17 00:00:00 2001 From: david Date: Fri, 23 Sep 2011 17:16:17 +0000 Subject: [PATCH] Web montada con plantilla sin contenido git-svn-id: https://192.168.0.254/svn/Proyectos.Instaldeco_Web/trunk@3 d4ca0941-a869-4c45-9eab-2e1fd2dd58c0 --- db/instaldeco.sql | 514 + src/index.php | 18 + src/licencia.txt | 322 + src/license.txt | 281 + src/readme.html | 104 + src/wp-activate.php | 102 + src/wp-admin/admin-ajax.php | 1555 ++ src/wp-admin/admin-footer.php | 51 + src/wp-admin/admin-functions.php | 16 + src/wp-admin/admin-header.php | 219 + src/wp-admin/admin-post.php | 33 + src/wp-admin/admin.php | 238 + src/wp-admin/async-upload.php | 70 + src/wp-admin/comment.php | 289 + src/wp-admin/credits.php | 176 + src/wp-admin/css/colors-classic-rtl.css | 1 + src/wp-admin/css/colors-classic-rtl.dev.css | 98 + src/wp-admin/css/colors-classic.css | 1 + src/wp-admin/css/colors-classic.dev.css | 2087 +++ src/wp-admin/css/colors-fresh-rtl.css | 1 + src/wp-admin/css/colors-fresh-rtl.dev.css | 98 + src/wp-admin/css/colors-fresh.css | 1 + src/wp-admin/css/colors-fresh.dev.css | 2091 +++ src/wp-admin/css/dashboard-rtl.css | 1 + src/wp-admin/css/dashboard-rtl.dev.css | 110 + src/wp-admin/css/dashboard.css | 1 + src/wp-admin/css/dashboard.dev.css | 486 + src/wp-admin/css/farbtastic-rtl.css | 7 + src/wp-admin/css/farbtastic.css | 32 + src/wp-admin/css/global-rtl.css | 1 + src/wp-admin/css/global-rtl.dev.css | 181 + src/wp-admin/css/global.css | 1 + src/wp-admin/css/global.dev.css | 607 + src/wp-admin/css/ie-rtl.css | 1 + src/wp-admin/css/ie-rtl.dev.css | 156 + src/wp-admin/css/ie.css | 1 + src/wp-admin/css/ie.dev.css | 494 + src/wp-admin/css/install-rtl.css | 1 + src/wp-admin/css/install-rtl.dev.css | 23 + src/wp-admin/css/install.css | 1 + src/wp-admin/css/install.dev.css | 213 + src/wp-admin/css/login-rtl.css | 1 + src/wp-admin/css/login-rtl.dev.css | 29 + src/wp-admin/css/login.css | 1 + src/wp-admin/css/login.dev.css | 144 + src/wp-admin/css/media-rtl.css | 1 + src/wp-admin/css/media-rtl.dev.css | 92 + src/wp-admin/css/media.css | 1 + src/wp-admin/css/media.dev.css | 382 + src/wp-admin/css/ms.css | 1 + src/wp-admin/css/ms.dev.css | 38 + src/wp-admin/css/nav-menu-rtl.css | 1 + src/wp-admin/css/nav-menu-rtl.dev.css | 210 + src/wp-admin/css/nav-menu.css | 1 + src/wp-admin/css/nav-menu.dev.css | 705 + src/wp-admin/css/plugin-install-rtl.css | 1 + src/wp-admin/css/plugin-install-rtl.dev.css | 43 + src/wp-admin/css/plugin-install.css | 1 + src/wp-admin/css/plugin-install.dev.css | 150 + src/wp-admin/css/press-this-rtl.css | 1 + src/wp-admin/css/press-this-rtl.dev.css | 140 + src/wp-admin/css/press-this.css | 1 + src/wp-admin/css/press-this.dev.css | 678 + src/wp-admin/css/theme-editor-rtl.css | 1 + src/wp-admin/css/theme-editor-rtl.dev.css | 3 + src/wp-admin/css/theme-editor.css | 1 + src/wp-admin/css/theme-editor.dev.css | 82 + src/wp-admin/css/theme-install-rtl.css | 1 + src/wp-admin/css/theme-install-rtl.dev.css | 41 + src/wp-admin/css/theme-install.css | 1 + src/wp-admin/css/theme-install.dev.css | 155 + src/wp-admin/css/widgets-rtl.css | 1 + src/wp-admin/css/widgets-rtl.dev.css | 47 + src/wp-admin/css/widgets.css | 1 + src/wp-admin/css/widgets.dev.css | 382 + src/wp-admin/css/wp-admin-rtl.css | 1 + src/wp-admin/css/wp-admin-rtl.dev.css | 1336 ++ src/wp-admin/css/wp-admin.css | 1 + src/wp-admin/css/wp-admin.dev.css | 4709 +++++ src/wp-admin/custom-background.php | 361 + src/wp-admin/custom-header.php | 791 + src/wp-admin/edit-comments.php | 242 + src/wp-admin/edit-form-advanced.php | 315 + src/wp-admin/edit-form-comment.php | 147 + src/wp-admin/edit-link-form.php | 129 + src/wp-admin/edit-tag-form.php | 93 + src/wp-admin/edit-tags.php | 394 + src/wp-admin/edit.php | 263 + src/wp-admin/export.php | 206 + src/wp-admin/freedoms.php | 42 + src/wp-admin/gears-manifest.php | 51 + src/wp-admin/images/align-center.png | Bin 0 -> 571 bytes src/wp-admin/images/align-left.png | Bin 0 -> 587 bytes src/wp-admin/images/align-none.png | Bin 0 -> 453 bytes src/wp-admin/images/align-right.png | Bin 0 -> 556 bytes src/wp-admin/images/archive-link.png | Bin 0 -> 133 bytes src/wp-admin/images/arrows-dark-vs.png | Bin 0 -> 1376 bytes src/wp-admin/images/arrows-dark.png | Bin 0 -> 495 bytes src/wp-admin/images/arrows-vs.png | Bin 0 -> 1378 bytes src/wp-admin/images/arrows.png | Bin 0 -> 494 bytes src/wp-admin/images/blue-grad.png | Bin 0 -> 337 bytes src/wp-admin/images/bubble_bg-rtl.gif | Bin 0 -> 400 bytes src/wp-admin/images/bubble_bg.gif | Bin 0 -> 395 bytes src/wp-admin/images/button-grad-active.png | Bin 0 -> 284 bytes src/wp-admin/images/button-grad.png | Bin 0 -> 243 bytes src/wp-admin/images/comment-grey-bubble.png | Bin 0 -> 158 bytes src/wp-admin/images/date-button.gif | Bin 0 -> 111 bytes src/wp-admin/images/ed-bg-vs.gif | Bin 0 -> 444 bytes src/wp-admin/images/ed-bg.gif | Bin 0 -> 190 bytes src/wp-admin/images/fade-butt.png | Bin 0 -> 785 bytes src/wp-admin/images/fav-arrow-rtl.gif | Bin 0 -> 243 bytes src/wp-admin/images/fav-arrow.gif | Bin 0 -> 241 bytes src/wp-admin/images/fav-vs.png | Bin 0 -> 142 bytes src/wp-admin/images/fav.png | Bin 0 -> 214 bytes src/wp-admin/images/generic.png | Bin 0 -> 3580 bytes src/wp-admin/images/gray-grad.png | Bin 0 -> 213 bytes src/wp-admin/images/gray-star.png | Bin 0 -> 625 bytes src/wp-admin/images/icons32-vs.png | Bin 0 -> 14927 bytes src/wp-admin/images/icons32.png | Bin 0 -> 14649 bytes src/wp-admin/images/imgedit-icons.png | Bin 0 -> 9607 bytes src/wp-admin/images/list.png | Bin 0 -> 1104 bytes src/wp-admin/images/loading-publish.gif | Bin 0 -> 1849 bytes src/wp-admin/images/loading.gif | Bin 0 -> 2530 bytes src/wp-admin/images/logo-ghost.png | Bin 0 -> 559 bytes src/wp-admin/images/logo-login.png | Bin 0 -> 8891 bytes src/wp-admin/images/logo.gif | Bin 0 -> 1289 bytes src/wp-admin/images/marker.png | Bin 0 -> 652 bytes src/wp-admin/images/mask.png | Bin 0 -> 2020 bytes src/wp-admin/images/media-button-image.gif | Bin 0 -> 206 bytes src/wp-admin/images/media-button-music.gif | Bin 0 -> 205 bytes src/wp-admin/images/media-button-other.gif | Bin 0 -> 245 bytes src/wp-admin/images/media-button-video.gif | Bin 0 -> 139 bytes src/wp-admin/images/menu-arrow-frame-rtl.png | Bin 0 -> 1391 bytes src/wp-admin/images/menu-arrow-frame.png | Bin 0 -> 564 bytes src/wp-admin/images/menu-arrows.gif | Bin 0 -> 330 bytes src/wp-admin/images/menu-bits-rtl-vs.gif | Bin 0 -> 1555 bytes src/wp-admin/images/menu-bits-rtl.gif | Bin 0 -> 1267 bytes src/wp-admin/images/menu-bits-vs.gif | Bin 0 -> 1448 bytes src/wp-admin/images/menu-bits.gif | Bin 0 -> 1139 bytes src/wp-admin/images/menu-dark-rtl-vs.gif | Bin 0 -> 245 bytes src/wp-admin/images/menu-dark-rtl.gif | Bin 0 -> 950 bytes src/wp-admin/images/menu-dark-vs.gif | Bin 0 -> 245 bytes src/wp-admin/images/menu-dark.gif | Bin 0 -> 245 bytes src/wp-admin/images/menu-shadow-rtl.png | Bin 0 -> 891 bytes src/wp-admin/images/menu-shadow.png | Bin 0 -> 131 bytes src/wp-admin/images/menu-vs.png | Bin 0 -> 12231 bytes src/wp-admin/images/menu.png | Bin 0 -> 12527 bytes src/wp-admin/images/no.png | Bin 0 -> 792 bytes src/wp-admin/images/press-this.png | Bin 0 -> 818 bytes src/wp-admin/images/required.gif | Bin 0 -> 62 bytes src/wp-admin/images/resize-rtl.gif | Bin 0 -> 1418 bytes src/wp-admin/images/resize.gif | Bin 0 -> 71 bytes .../images/screen-options-toggle-vs.gif | Bin 0 -> 152 bytes src/wp-admin/images/screen-options-toggle.gif | Bin 0 -> 205 bytes src/wp-admin/images/se.png | Bin 0 -> 127 bytes src/wp-admin/images/sort.gif | Bin 0 -> 54 bytes src/wp-admin/images/star.png | Bin 0 -> 611 bytes src/wp-admin/images/toggle-arrow-rtl.gif | Bin 0 -> 72 bytes src/wp-admin/images/toggle-arrow.gif | Bin 0 -> 71 bytes src/wp-admin/images/upload-classic.png | Bin 0 -> 1631 bytes src/wp-admin/images/upload-fresh.png | Bin 0 -> 1051 bytes src/wp-admin/images/wheel.png | Bin 0 -> 11733 bytes src/wp-admin/images/white-grad-active.png | Bin 0 -> 223 bytes src/wp-admin/images/white-grad.png | Bin 0 -> 210 bytes src/wp-admin/images/widgets-arrow-vs.gif | Bin 0 -> 213 bytes src/wp-admin/images/widgets-arrow.gif | Bin 0 -> 334 bytes src/wp-admin/images/wordpress-logo.png | Bin 0 -> 2334 bytes src/wp-admin/images/wp-logo-vs.png | Bin 0 -> 958 bytes src/wp-admin/images/wp-logo.png | Bin 0 -> 849 bytes src/wp-admin/images/wpspin_dark.gif | Bin 0 -> 2547 bytes src/wp-admin/images/wpspin_light.gif | Bin 0 -> 2193 bytes src/wp-admin/images/xit.gif | Bin 0 -> 181 bytes src/wp-admin/images/yes.png | Bin 0 -> 612 bytes src/wp-admin/import.php | 147 + src/wp-admin/includes/admin.php | 64 + src/wp-admin/includes/bookmark.php | 269 + src/wp-admin/includes/class-ftp-pure.php | 190 + src/wp-admin/includes/class-ftp-sockets.php | 250 + src/wp-admin/includes/class-ftp.php | 906 + src/wp-admin/includes/class-pclzip.php | 5687 ++++++ .../includes/class-wp-comments-list-table.php | 559 + .../includes/class-wp-filesystem-base.php | 332 + .../includes/class-wp-filesystem-direct.php | 364 + .../includes/class-wp-filesystem-ftpext.php | 387 + .../class-wp-filesystem-ftpsockets.php | 327 + .../includes/class-wp-filesystem-ssh2.php | 383 + src/wp-admin/includes/class-wp-importer.php | 307 + .../includes/class-wp-links-list-table.php | 186 + src/wp-admin/includes/class-wp-list-table.php | 908 + .../includes/class-wp-media-list-table.php | 374 + .../includes/class-wp-ms-sites-list-table.php | 340 + .../class-wp-ms-themes-list-table.php | 361 + .../includes/class-wp-ms-users-list-table.php | 277 + .../class-wp-plugin-install-list-table.php | 244 + .../includes/class-wp-plugins-list-table.php | 458 + .../includes/class-wp-posts-list-table.php | 1021 ++ .../includes/class-wp-terms-list-table.php | 380 + .../class-wp-theme-install-list-table.php | 185 + .../includes/class-wp-themes-list-table.php | 240 + src/wp-admin/includes/class-wp-upgrader.php | 1457 ++ .../includes/class-wp-users-list-table.php | 320 + src/wp-admin/includes/comment.php | 159 + src/wp-admin/includes/continents-cities.php | 493 + src/wp-admin/includes/dashboard.php | 1262 ++ src/wp-admin/includes/deprecated.php | 703 + src/wp-admin/includes/export.php | 425 + src/wp-admin/includes/file.php | 1059 ++ src/wp-admin/includes/image-edit.php | 668 + src/wp-admin/includes/image.php | 341 + src/wp-admin/includes/import.php | 97 + src/wp-admin/includes/internal-linking.php | 124 + src/wp-admin/includes/list-table.php | 104 + src/wp-admin/includes/manifest.php | 203 + src/wp-admin/includes/media.php | 2350 +++ src/wp-admin/includes/menu.php | 230 + src/wp-admin/includes/meta-boxes.php | 914 + src/wp-admin/includes/misc.php | 588 + src/wp-admin/includes/ms-deprecated.php | 68 + src/wp-admin/includes/ms.php | 778 + src/wp-admin/includes/nav-menu.php | 1171 ++ src/wp-admin/includes/plugin-install.php | 369 + src/wp-admin/includes/plugin.php | 1726 ++ src/wp-admin/includes/post.php | 1864 ++ src/wp-admin/includes/schema.php | 783 + src/wp-admin/includes/taxonomy.php | 252 + src/wp-admin/includes/template.php | 2228 +++ src/wp-admin/includes/theme-install.php | 323 + src/wp-admin/includes/theme.php | 413 + src/wp-admin/includes/update-core.php | 522 + src/wp-admin/includes/update.php | 313 + src/wp-admin/includes/upgrade.php | 2001 +++ src/wp-admin/includes/user.php | 383 + src/wp-admin/includes/widgets.php | 225 + src/wp-admin/index-extra.php | 40 + src/wp-admin/index.php | 70 + src/wp-admin/install-helper.php | 217 + src/wp-admin/install.php | 264 + src/wp-admin/js/cat.dev.js | 5 + src/wp-admin/js/cat.js | 1 + src/wp-admin/js/categories.dev.js | 34 + src/wp-admin/js/categories.js | 1 + src/wp-admin/js/comment.dev.js | 47 + src/wp-admin/js/comment.js | 1 + src/wp-admin/js/common.dev.js | 370 + src/wp-admin/js/common.js | 1 + src/wp-admin/js/custom-background.dev.js | 55 + src/wp-admin/js/custom-background.js | 1 + src/wp-admin/js/custom-fields.dev.js | 34 + src/wp-admin/js/custom-fields.js | 1 + src/wp-admin/js/dashboard.dev.js | 67 + src/wp-admin/js/dashboard.js | 1 + src/wp-admin/js/edit-comments.dev.js | 596 + src/wp-admin/js/edit-comments.js | 1 + src/wp-admin/js/editor.dev.js | 207 + src/wp-admin/js/editor.js | 1 + src/wp-admin/js/farbtastic.js | 276 + src/wp-admin/js/gallery.dev.js | 197 + src/wp-admin/js/gallery.js | 1 + src/wp-admin/js/image-edit.dev.js | 569 + src/wp-admin/js/image-edit.js | 1 + src/wp-admin/js/inline-edit-post.dev.js | 290 + src/wp-admin/js/inline-edit-post.js | 1 + src/wp-admin/js/inline-edit-tax.dev.js | 118 + src/wp-admin/js/inline-edit-tax.js | 1 + src/wp-admin/js/link.dev.js | 67 + src/wp-admin/js/link.js | 1 + src/wp-admin/js/media-upload.dev.js | 72 + src/wp-admin/js/media-upload.js | 1 + src/wp-admin/js/media.dev.js | 97 + src/wp-admin/js/media.js | 1 + src/wp-admin/js/nav-menu.dev.js | 959 + src/wp-admin/js/nav-menu.js | 1 + .../js/password-strength-meter.dev.js | 36 + src/wp-admin/js/password-strength-meter.js | 1 + src/wp-admin/js/plugin-install.dev.js | 53 + src/wp-admin/js/plugin-install.js | 1 + src/wp-admin/js/post.dev.js | 646 + src/wp-admin/js/post.js | 1 + src/wp-admin/js/postbox.dev.js | 153 + src/wp-admin/js/postbox.js | 1 + src/wp-admin/js/revisions-js.php | 39 + src/wp-admin/js/set-post-thumbnail.dev.js | 21 + src/wp-admin/js/set-post-thumbnail.js | 1 + src/wp-admin/js/tags.dev.js | 68 + src/wp-admin/js/tags.js | 1 + src/wp-admin/js/theme-preview.dev.js | 64 + src/wp-admin/js/theme-preview.js | 1 + src/wp-admin/js/theme.dev.js | 55 + src/wp-admin/js/theme.js | 1 + src/wp-admin/js/user-profile.dev.js | 67 + src/wp-admin/js/user-profile.js | 1 + src/wp-admin/js/utils.dev.js | 144 + src/wp-admin/js/utils.js | 1 + src/wp-admin/js/widgets.dev.js | 282 + src/wp-admin/js/widgets.js | 1 + src/wp-admin/js/word-count.dev.js | 37 + src/wp-admin/js/word-count.js | 1 + src/wp-admin/js/wp-fullscreen.dev.js | 694 + src/wp-admin/js/wp-fullscreen.js | 1 + src/wp-admin/js/xfn.dev.js | 16 + src/wp-admin/js/xfn.js | 1 + src/wp-admin/link-add.php | 30 + src/wp-admin/link-manager.php | 89 + src/wp-admin/link-parse-opml.php | 97 + src/wp-admin/link.php | 118 + src/wp-admin/load-scripts.php | 147 + src/wp-admin/load-styles.php | 147 + src/wp-admin/maint/repair.php | 92 + src/wp-admin/media-new.php | 14 + src/wp-admin/media-upload.php | 125 + src/wp-admin/media.php | 143 + src/wp-admin/menu-header.php | 191 + src/wp-admin/menu.php | 264 + src/wp-admin/moderation.php | 13 + src/wp-admin/ms-admin.php | 14 + src/wp-admin/ms-delete-site.php | 83 + src/wp-admin/ms-edit.php | 14 + src/wp-admin/ms-options.php | 12 + src/wp-admin/ms-sites.php | 15 + src/wp-admin/ms-themes.php | 14 + src/wp-admin/ms-upgrade-network.php | 15 + src/wp-admin/ms-users.php | 14 + src/wp-admin/my-sites.php | 110 + src/wp-admin/nav-menus.php | 611 + src/wp-admin/network.php | 548 + src/wp-admin/network/admin.php | 25 + src/wp-admin/network/edit.php | 482 + src/wp-admin/network/index-extra.php | 13 + src/wp-admin/network/index.php | 62 + src/wp-admin/network/menu.php | 86 + src/wp-admin/network/plugin-editor.php | 16 + src/wp-admin/network/plugin-install.php | 19 + src/wp-admin/network/plugins.php | 16 + src/wp-admin/network/profile.php | 16 + src/wp-admin/network/settings.php | 277 + src/wp-admin/network/setup.php | 16 + src/wp-admin/network/site-info.php | 169 + src/wp-admin/network/site-new.php | 145 + src/wp-admin/network/site-settings.php | 153 + src/wp-admin/network/site-themes.php | 182 + src/wp-admin/network/site-users.php | 311 + src/wp-admin/network/sites.php | 118 + src/wp-admin/network/theme-editor.php | 16 + src/wp-admin/network/theme-install.php | 19 + src/wp-admin/network/themes.php | 235 + src/wp-admin/network/update-core.php | 16 + src/wp-admin/network/update.php | 19 + src/wp-admin/network/upgrade.php | 86 + src/wp-admin/network/user-edit.php | 16 + src/wp-admin/network/user-new.php | 103 + src/wp-admin/network/users.php | 96 + src/wp-admin/options-discussion.php | 248 + src/wp-admin/options-general.php | 318 + src/wp-admin/options-head.php | 21 + src/wp-admin/options-media.php | 141 + src/wp-admin/options-permalink.php | 260 + src/wp-admin/options-privacy.php | 58 + src/wp-admin/options-reading.php | 131 + src/wp-admin/options-writing.php | 176 + src/wp-admin/options.php | 227 + src/wp-admin/plugin-editor.php | 264 + src/wp-admin/plugin-install.php | 62 + src/wp-admin/plugins.php | 407 + src/wp-admin/post-new.php | 43 + src/wp-admin/post.php | 279 + src/wp-admin/press-this.php | 652 + src/wp-admin/profile.php | 19 + src/wp-admin/revision.php | 223 + src/wp-admin/setup-config.php | 275 + src/wp-admin/theme-editor.php | 271 + src/wp-admin/theme-install.php | 71 + src/wp-admin/themes.php | 239 + src/wp-admin/tools.php | 63 + src/wp-admin/update-core.php | 505 + src/wp-admin/update.php | 250 + src/wp-admin/upgrade-functions.php | 13 + src/wp-admin/upgrade.php | 110 + src/wp-admin/upload.php | 222 + src/wp-admin/user-edit.php | 427 + src/wp-admin/user-new.php | 350 + src/wp-admin/user/admin.php | 27 + src/wp-admin/user/index-extra.php | 12 + src/wp-admin/user/index.php | 12 + src/wp-admin/user/menu.php | 24 + src/wp-admin/user/profile.php | 12 + src/wp-admin/user/user-edit.php | 12 + src/wp-admin/users.php | 388 + src/wp-admin/widgets.php | 413 + src/wp-app.php | 1611 ++ src/wp-atom.php | 12 + src/wp-blog-header.php | 20 + src/wp-comments-post.php | 105 + src/wp-commentsrss2.php | 12 + src/wp-config-sample.php | 89 + src/wp-config.php | 89 + src/wp-content/index.php | 3 + src/wp-content/languages/es_ES.mo | Bin 0 -> 404844 bytes src/wp-content/languages/es_ES.po | 14470 +++++++++++++++ src/wp-content/languages/ms-es_ES.mo | Bin 0 -> 82624 bytes src/wp-content/languages/ms-es_ES.po | 2262 +++ src/wp-content/plugins/akismet/admin.php | 750 + src/wp-content/plugins/akismet/akismet.css | 7 + src/wp-content/plugins/akismet/akismet.gif | Bin 0 -> 2777 bytes src/wp-content/plugins/akismet/akismet.js | 10 + src/wp-content/plugins/akismet/akismet.php | 512 + src/wp-content/plugins/akismet/legacy.php | 396 + src/wp-content/plugins/akismet/readme.txt | 130 + src/wp-content/plugins/akismet/widget.php | 90 + src/wp-content/plugins/hello.php | 82 + src/wp-content/plugins/index.php | 3 + src/wp-content/themes/Broadside/404.php | 5 + .../Broadside/admin/css/admin-style.css | 220 + .../Broadside/admin/css/colorpicker.css | 177 + .../admin/images/colorpicker/blank.gif | Bin 0 -> 45 bytes .../colorpicker/colorpicker_background.png | Bin 0 -> 1897 bytes .../images/colorpicker/colorpicker_hex.png | Bin 0 -> 532 bytes .../images/colorpicker/colorpicker_hsb_b.png | Bin 0 -> 970 bytes .../images/colorpicker/colorpicker_hsb_h.png | Bin 0 -> 1012 bytes .../images/colorpicker/colorpicker_hsb_s.png | Bin 0 -> 1171 bytes .../images/colorpicker/colorpicker_indic.gif | Bin 0 -> 86 bytes .../colorpicker/colorpicker_overlay.png | Bin 0 -> 10355 bytes .../images/colorpicker/colorpicker_rgb_b.png | Bin 0 -> 970 bytes .../images/colorpicker/colorpicker_rgb_g.png | Bin 0 -> 1069 bytes .../images/colorpicker/colorpicker_rgb_r.png | Bin 0 -> 1066 bytes .../images/colorpicker/colorpicker_select.gif | Bin 0 -> 78 bytes .../images/colorpicker/colorpicker_submit.png | Bin 0 -> 984 bytes .../admin/images/colorpicker/select.png | Bin 0 -> 3278 bytes .../Broadside/admin/images/ico-delete.png | Bin 0 -> 715 bytes .../themes/Broadside/admin/js/colorpicker.js | 455 + .../admin/js/of-medialibrary-uploader.js | 163 + .../Broadside/admin/js/options-custom.js | 101 + .../Broadside/admin/options-framework.php | 389 + .../Broadside/admin/options-interface.php | 312 + .../admin/options-medialibrary-uploader.php | 291 + .../Broadside/admin/options-sanitize.php | 346 + src/wp-content/themes/Broadside/archive.php | 79 + src/wp-content/themes/Broadside/author.php | 87 + .../bebas-neue/BebasNeue-webfont.eot | Bin 0 -> 24309 bytes .../bebas-neue/BebasNeue-webfont.svg | 443 + .../bebas-neue/BebasNeue-webfont.ttf | Bin 0 -> 84268 bytes .../bebas-neue/BebasNeue-webfont.woff | Bin 0 -> 31436 bytes .../bebas-neue/Dharma Type Font License.txt | 57 + .../themes/Broadside/bebas-neue/demo.html | 33 + .../Broadside/bebas-neue/stylesheet.css | 16 + src/wp-content/themes/Broadside/category.php | 78 + src/wp-content/themes/Broadside/comments.php | 63 + src/wp-content/themes/Broadside/contact.php | 128 + .../themes/Broadside/css/fancybox.css | 359 + src/wp-content/themes/Broadside/css/ie7.css | 2 + .../themes/Broadside/css/navigation.css | 174 + .../themes/Broadside/css/orbit-1.2.3.css | 203 + src/wp-content/themes/Broadside/css/reset.css | 1 + .../themes/Broadside/css/standard.css | 546 + src/wp-content/themes/Broadside/footer.php | 146 + .../themes/Broadside/framework/bootstrap.php | 4 + .../themes/Broadside/framework/metaboxes.php | 127 + .../views/metaboxes/page_options.php | 49 + .../views/metaboxes/portfolio_options.php | 6 + .../views/metaboxes/post_options.php | 2 + .../framework/views/metaboxes/style.php | 10 + src/wp-content/themes/Broadside/functions.php | 170 + src/wp-content/themes/Broadside/header.php | 153 + src/wp-content/themes/Broadside/homepage.php | 18 + .../themes/Broadside/images/1col.png | Bin 0 -> 184 bytes .../themes/Broadside/images/2cl.png | Bin 0 -> 226 bytes .../themes/Broadside/images/2cr.png | Bin 0 -> 221 bytes .../Broadside/images/arrow-navigation.png | Bin 0 -> 185 bytes .../themes/Broadside/images/arrows-ffffff.png | Bin 0 -> 244 bytes .../Broadside/images/background-dark.jpg | Bin 0 -> 38117 bytes .../themes/Broadside/images/background.jpg | Bin 0 -> 56711 bytes .../images/backgrounds/about-background.jpg | Bin 0 -> 36991 bytes .../backgrounds/background-image-600tall.jpg | Bin 0 -> 58265 bytes .../backgrounds/background2-image-600tall.jpg | Bin 0 -> 60029 bytes .../backgrounds/background3-image-600tall.jpg | Bin 0 -> 65587 bytes .../backgrounds/background4-image-600tall.jpg | Bin 0 -> 71300 bytes .../backgrounds/blog-background-tall.jpg | Bin 0 -> 34462 bytes .../images/backgrounds/blog-background.jpg | Bin 0 -> 18847 bytes .../images/backgrounds/company-background.jpg | Bin 0 -> 39186 bytes .../backgrounds/contact-background-tall.jpg | Bin 0 -> 28624 bytes .../images/backgrounds/contact-background.jpg | Bin 0 -> 27987 bytes .../Broadside/images/backgrounds/img_1.jpg | Bin 0 -> 30334 bytes .../Broadside/images/backgrounds/img_2.jpg | Bin 0 -> 30939 bytes .../Broadside/images/backgrounds/img_3.jpg | Bin 0 -> 34474 bytes .../Broadside/images/backgrounds/img_4.jpg | Bin 0 -> 38482 bytes .../backgrounds/news-background-tall.jpg | Bin 0 -> 22648 bytes .../images/backgrounds/news-background.jpg | Bin 0 -> 21763 bytes .../backgrounds/portfolio-background.jpg | Bin 0 -> 91411 bytes .../backgrounds/projects-background.jpg | Bin 0 -> 64029 bytes .../backgrounds/services-background-tall.jpg | Bin 0 -> 40784 bytes .../backgrounds/services-background.jpg | Bin 0 -> 32782 bytes .../Broadside/images/big-button-overlay.png | Bin 0 -> 198 bytes .../themes/Broadside/images/blockquote.png | Bin 0 -> 1360 bytes .../themes/Broadside/images/blog-comments.png | Bin 0 -> 1533 bytes .../themes/Broadside/images/checkmark.png | Bin 0 -> 1374 bytes .../Broadside/images/fancybox/blank.gif | Bin 0 -> 43 bytes .../Broadside/images/fancybox/fancy_close.png | Bin 0 -> 1517 bytes .../images/fancybox/fancy_loading.png | Bin 0 -> 10195 bytes .../images/fancybox/fancy_nav_left.png | Bin 0 -> 1446 bytes .../images/fancybox/fancy_nav_right.png | Bin 0 -> 1454 bytes .../images/fancybox/fancy_shadow_e.png | Bin 0 -> 107 bytes .../images/fancybox/fancy_shadow_n.png | Bin 0 -> 106 bytes .../images/fancybox/fancy_shadow_ne.png | Bin 0 -> 347 bytes .../images/fancybox/fancy_shadow_nw.png | Bin 0 -> 324 bytes .../images/fancybox/fancy_shadow_s.png | Bin 0 -> 111 bytes .../images/fancybox/fancy_shadow_se.png | Bin 0 -> 352 bytes .../images/fancybox/fancy_shadow_sw.png | Bin 0 -> 340 bytes .../images/fancybox/fancy_shadow_w.png | Bin 0 -> 103 bytes .../images/fancybox/fancy_title_left.png | Bin 0 -> 503 bytes .../images/fancybox/fancy_title_main.png | Bin 0 -> 96 bytes .../images/fancybox/fancy_title_over.png | Bin 0 -> 70 bytes .../images/fancybox/fancy_title_right.png | Bin 0 -> 506 bytes .../Broadside/images/fancybox/fancybox-x.png | Bin 0 -> 203 bytes .../Broadside/images/fancybox/fancybox-y.png | Bin 0 -> 176 bytes .../Broadside/images/fancybox/fancybox.png | Bin 0 -> 15287 bytes .../themes/Broadside/images/logo-space.png | Bin 0 -> 5581 bytes .../themes/Broadside/images/logo.png | Bin 0 -> 2129 bytes .../themes/Broadside/images/nav-arrow.png | Bin 0 -> 138 bytes .../Broadside/images/orbit/arrows-new.png | Bin 0 -> 2004 bytes .../themes/Broadside/images/orbit/bullets.jpg | Bin 0 -> 657 bytes .../themes/Broadside/images/orbit/bullets.png | Bin 0 -> 361 bytes .../Broadside/images/orbit/bullets2.png | Bin 0 -> 374 bytes .../Broadside/images/orbit/left-arrow.png | Bin 0 -> 679 bytes .../themes/Broadside/images/orbit/loading.gif | Bin 0 -> 2608 bytes .../Broadside/images/orbit/mask-black.png | Bin 0 -> 549 bytes .../Broadside/images/orbit/mask-black2.png | Bin 0 -> 325 bytes .../Broadside/images/orbit/pause-black.png | Bin 0 -> 341 bytes .../Broadside/images/orbit/pause-black2.png | Bin 0 -> 279 bytes .../Broadside/images/orbit/right-arrow.png | Bin 0 -> 664 bytes .../Broadside/images/orbit/rotator-black.png | Bin 0 -> 561 bytes .../Broadside/images/orbit/rotator-black2.png | Bin 0 -> 343 bytes .../Broadside/images/orbit/timer-black.png | Bin 0 -> 549 bytes .../Broadside/images/orbit/timer-black2.png | Bin 0 -> 325 bytes .../themes/Broadside/images/photo-left.jpg | Bin 0 -> 2176 bytes .../themes/Broadside/images/photo-right.jpg | Bin 0 -> 2249 bytes .../Broadside/images/portfolio/blog-img_2.jpg | Bin 0 -> 2057 bytes .../Broadside/images/portfolio/blog-img_3.jpg | Bin 0 -> 1331 bytes .../Broadside/images/portfolio/blog-img_4.jpg | Bin 0 -> 1439 bytes .../images/portfolio/blog-post-image.jpg | Bin 0 -> 1516 bytes .../images/portfolio/contact-filler.jpg | Bin 0 -> 20692 bytes .../Broadside/images/portfolio/img_1-tall.jpg | Bin 0 -> 58265 bytes .../Broadside/images/portfolio/img_1.jpg | Bin 0 -> 30334 bytes .../Broadside/images/portfolio/img_2-tall.jpg | Bin 0 -> 60029 bytes .../Broadside/images/portfolio/img_2.jpg | Bin 0 -> 30939 bytes .../Broadside/images/portfolio/img_3-tall.jpg | Bin 0 -> 65587 bytes .../Broadside/images/portfolio/img_3.jpg | Bin 0 -> 34474 bytes .../Broadside/images/portfolio/img_4.jpg | Bin 0 -> 38482 bytes .../Broadside/images/portfolio/img_5.jpg | Bin 0 -> 30939 bytes .../Broadside/images/portfolio/img_6.jpg | Bin 0 -> 30334 bytes .../Broadside/images/portfolio/img_7-tall.jpg | Bin 0 -> 71300 bytes .../Broadside/images/portfolio/img_7.jpg | Bin 0 -> 34474 bytes .../Broadside/images/portfolio/img_8-tall.jpg | Bin 0 -> 7229 bytes .../Broadside/images/portfolio/img_8.jpg | Bin 0 -> 38482 bytes .../images/portfolio/lightbox-thumbnail.jpg | Bin 0 -> 2794 bytes .../Broadside/images/portfolio/lightbox.jpg | Bin 0 -> 32109 bytes .../images/portfolio/minigallery_img1.png | Bin 0 -> 8485 bytes .../images/portfolio/minigallery_img2.png | Bin 0 -> 8485 bytes .../images/portfolio/minigallery_img3.png | Bin 0 -> 8485 bytes .../images/portfolio/minigallery_img4.png | Bin 0 -> 8485 bytes .../portfolio/photo-center-thumbnail.jpg | Bin 0 -> 14157 bytes .../images/portfolio/photo-center.jpg | Bin 0 -> 65047 bytes .../Broadside/images/portfolio/photo-left.jpg | Bin 0 -> 23794 bytes .../images/portfolio/photo-right.jpg | Bin 0 -> 29263 bytes .../portfolio/portfolio-item1-thumb.jpg | Bin 0 -> 1322 bytes .../portfolio/portfolio-item2-thumb.jpg | Bin 0 -> 1995 bytes .../portfolio/portfolio-item3-thumb.jpg | Bin 0 -> 1673 bytes .../portfolio/portfolio-item4-thumb.jpg | Bin 0 -> 1824 bytes .../portfolio/portfolio-item5-thumb.jpg | Bin 0 -> 1428 bytes .../portfolio/portfolio-item6-thumb.jpg | Bin 0 -> 2103 bytes .../portfolio/portfolio-item7-thumb.jpg | Bin 0 -> 2149 bytes .../portfolio/portfolio-item8-thumb.jpg | Bin 0 -> 1664 bytes .../images/portfolio/sample_img_2.png | Bin 0 -> 32563 bytes .../images/portfolio/sample_img_3.png | Bin 0 -> 4829 bytes .../images/portfolio/sample_img_4.png | Bin 0 -> 4829 bytes .../images/portfolio/sample_img_5.png | Bin 0 -> 4829 bytes .../images/portfolio/sample_img_6.png | Bin 0 -> 11948 bytes .../portfolio/services_img_sample_5.png | Bin 0 -> 30292 bytes .../images/portfolio/video-thumnail.jpg | Bin 0 -> 2862 bytes .../images/services_img_sample_1.png | Bin 0 -> 30364 bytes .../images/services_img_sample_2.png | Bin 0 -> 5563 bytes .../images/services_img_sample_3.png | Bin 0 -> 87056 bytes .../themes/Broadside/images/shadow.png | Bin 0 -> 1698 bytes .../themes/Broadside/images/sidebar-arrow.png | Bin 0 -> 1067 bytes .../images/social-icons/email_16.png | Bin 0 -> 608 bytes .../images/social-icons/facebook_16.png | Bin 0 -> 502 bytes .../images/social-icons/flickr_16.png | Bin 0 -> 612 bytes .../images/social-icons/google_16.png | Bin 0 -> 751 bytes .../images/social-icons/stumbleupon_16.png | Bin 0 -> 698 bytes .../images/social-icons/twitter_16.png | Bin 0 -> 608 bytes .../images/social-icons/vimeo_16.png | Bin 0 -> 643 bytes .../images/social-icons/youtube_16.png | Bin 0 -> 537 bytes .../themes/Broadside/images/team-member.png | Bin 0 -> 5240 bytes src/wp-content/themes/Broadside/index.php | 49 + .../themes/Broadside/js/custom-no-hover.js | 147 + src/wp-content/themes/Broadside/js/custom.js | 159 + .../themes/Broadside/js/hoverIntent.js | 84 + .../js/jquery.carouFredSel-4.1.0-packed.js | 15 + .../themes/Broadside/js/jquery.fancybox.js | 46 + .../Broadside/js/jquery.jscrollpane.min.js | 11 + .../themes/Broadside/js/jquery.mousewheel.js | 78 + .../Broadside/js/jquery.orbit-1.2.3.min.js | 17 + .../Broadside/js/jquery.validate.min.js | 16 + .../themes/Broadside/js/superfish.js | 121 + src/wp-content/themes/Broadside/options.php | 276 + src/wp-content/themes/Broadside/page.php | 37 + .../themes/Broadside/portfolio-full.php | 12 + .../themes/Broadside/portfolio-gallery.php | 89 + .../themes/Broadside/portfolio-scrolling.php | 97 + .../themes/Broadside/portfolio-thumbnails.php | 68 + .../themes/Broadside/screenshot.png | Bin 0 -> 6127 bytes src/wp-content/themes/Broadside/services.php | 88 + .../themes/Broadside/shortcodes.php | 331 + src/wp-content/themes/Broadside/single.php | 50 + src/wp-content/themes/Broadside/style.css | 16 + src/wp-content/themes/Broadside/timthumb.php | 1188 ++ .../themes/Broadside/tinymce/button-12.png | Bin 0 -> 274 bytes .../themes/Broadside/tinymce/button-13.png | Bin 0 -> 272 bytes .../themes/Broadside/tinymce/button-14.png | Bin 0 -> 258 bytes .../themes/Broadside/tinymce/button-23.png | Bin 0 -> 303 bytes .../themes/Broadside/tinymce/button-34.png | Bin 0 -> 303 bytes .../themes/Broadside/tinymce/button-arrow.png | Bin 0 -> 2171 bytes .../Broadside/tinymce/button-badlist.png | Bin 0 -> 940 bytes .../Broadside/tinymce/button-button.png | Bin 0 -> 413 bytes .../Broadside/tinymce/button-checklist.png | Bin 0 -> 915 bytes .../Broadside/tinymce/button-dropcap.png | Bin 0 -> 601 bytes .../Broadside/tinymce/button-gameinfo.png | Bin 0 -> 968 bytes .../Broadside/tinymce/button-highlight.png | Bin 0 -> 622 bytes .../themes/Broadside/tinymce/button-tabs.png | Bin 0 -> 397 bytes .../themes/Broadside/tinymce/button-team.png | Bin 0 -> 2386 bytes .../Broadside/tinymce/button-toggle.png | Bin 0 -> 432 bytes .../themes/Broadside/tinymce/button-vimeo.png | Bin 0 -> 611 bytes .../Broadside/tinymce/button-youtube.png | Bin 0 -> 493 bytes .../themes/Broadside/tinymce/customcodes.js | 350 + .../themes/Broadside/tinymce/soundcloud.png | Bin 0 -> 555 bytes src/wp-content/themes/Broadside/video.php | 4 + src/wp-content/themes/index.php | 3 + src/wp-content/themes/twentyeleven/404.php | 48 + .../themes/twentyeleven/archive.php | 72 + src/wp-content/themes/twentyeleven/author.php | 89 + .../themes/twentyeleven/category.php | 65 + .../themes/twentyeleven/colors/dark.css | 618 + .../themes/twentyeleven/comments.php | 77 + .../themes/twentyeleven/content-aside.php | 46 + .../themes/twentyeleven/content-featured.php | 47 + .../themes/twentyeleven/content-gallery.php | 92 + .../themes/twentyeleven/content-image.php | 70 + .../themes/twentyeleven/content-intro.php | 21 + .../themes/twentyeleven/content-link.php | 46 + .../themes/twentyeleven/content-page.php | 23 + .../themes/twentyeleven/content-quote.php | 74 + .../themes/twentyeleven/content-single.php | 71 + .../themes/twentyeleven/content-status.php | 47 + .../themes/twentyeleven/content.php | 82 + .../themes/twentyeleven/editor-style-rtl.css | 24 + .../themes/twentyeleven/editor-style.css | 311 + src/wp-content/themes/twentyeleven/footer.php | 34 + .../themes/twentyeleven/functions.php | 593 + src/wp-content/themes/twentyeleven/header.php | 123 + src/wp-content/themes/twentyeleven/image.php | 101 + .../comment-arrow-bypostauthor-dark-rtl.png | Bin 0 -> 255 bytes .../comment-arrow-bypostauthor-dark.png | Bin 0 -> 237 bytes .../images/comment-arrow-bypostauthor-rtl.png | Bin 0 -> 257 bytes .../images/comment-arrow-bypostauthor.png | Bin 0 -> 239 bytes .../images/comment-arrow-dark-rtl.png | Bin 0 -> 272 bytes .../images/comment-arrow-dark.png | Bin 0 -> 348 bytes .../twentyeleven/images/comment-arrow-rtl.png | Bin 0 -> 271 bytes .../twentyeleven/images/comment-arrow.png | Bin 0 -> 250 bytes .../images/comment-bubble-dark-rtl.png | Bin 0 -> 1868 bytes .../images/comment-bubble-dark.png | Bin 0 -> 965 bytes .../images/comment-bubble-rtl.png | Bin 0 -> 1782 bytes .../twentyeleven/images/comment-bubble.png | Bin 0 -> 925 bytes .../images/headers/chessboard-thumbnail.jpg | Bin 0 -> 6420 bytes .../images/headers/chessboard.jpg | Bin 0 -> 53906 bytes .../images/headers/hanoi-thumbnail.jpg | Bin 0 -> 4584 bytes .../twentyeleven/images/headers/hanoi.jpg | Bin 0 -> 40965 bytes .../images/headers/lanterns-thumbnail.jpg | Bin 0 -> 8370 bytes .../twentyeleven/images/headers/lanterns.jpg | Bin 0 -> 95061 bytes .../images/headers/pine-cone-thumbnail.jpg | Bin 0 -> 3770 bytes .../twentyeleven/images/headers/pine-cone.jpg | Bin 0 -> 39112 bytes .../images/headers/shore-thumbnail.jpg | Bin 0 -> 6035 bytes .../twentyeleven/images/headers/shore.jpg | Bin 0 -> 79509 bytes .../images/headers/trolley-thumbnail.jpg | Bin 0 -> 6385 bytes .../twentyeleven/images/headers/trolley.jpg | Bin 0 -> 62979 bytes .../images/headers/wheel-thumbnail.jpg | Bin 0 -> 6460 bytes .../twentyeleven/images/headers/wheel.jpg | Bin 0 -> 60901 bytes .../images/headers/willow-thumbnail.jpg | Bin 0 -> 4297 bytes .../twentyeleven/images/headers/willow.jpg | Bin 0 -> 68450 bytes .../themes/twentyeleven/images/search.png | Bin 0 -> 441 bytes .../themes/twentyeleven/images/wordpress.png | Bin 0 -> 794 bytes .../inc/images/content-sidebar.png | Bin 0 -> 273 bytes .../twentyeleven/inc/images/content.png | Bin 0 -> 3682 bytes .../themes/twentyeleven/inc/images/dark.png | Bin 0 -> 6884 bytes .../themes/twentyeleven/inc/images/light.png | Bin 0 -> 7052 bytes .../inc/images/sidebar-content.png | Bin 0 -> 272 bytes .../themes/twentyeleven/inc/theme-options.css | 35 + .../themes/twentyeleven/inc/theme-options.js | 52 + .../themes/twentyeleven/inc/theme-options.php | 408 + .../themes/twentyeleven/inc/widgets.php | 166 + src/wp-content/themes/twentyeleven/index.php | 52 + .../themes/twentyeleven/js/html5.js | 3 + .../themes/twentyeleven/js/showcase.js | 17 + .../themes/twentyeleven/languages/es_ES.mo | Bin 0 -> 16378 bytes .../themes/twentyeleven/languages/es_ES.po | 566 + .../twentyeleven/languages/twentyeleven.pot | 654 + .../themes/twentyeleven/license.txt | 281 + src/wp-content/themes/twentyeleven/page.php | 29 + src/wp-content/themes/twentyeleven/readme.txt | 5 + src/wp-content/themes/twentyeleven/rtl.css | 582 + .../themes/twentyeleven/screenshot.png | Bin 0 -> 62878 bytes src/wp-content/themes/twentyeleven/search.php | 57 + .../themes/twentyeleven/searchform.php | 14 + .../themes/twentyeleven/showcase.php | 220 + .../themes/twentyeleven/sidebar-footer.php | 42 + .../themes/twentyeleven/sidebar-page.php | 26 + .../themes/twentyeleven/sidebar.php | 36 + src/wp-content/themes/twentyeleven/single.php | 32 + src/wp-content/themes/twentyeleven/style.css | 2670 +++ src/wp-content/themes/twentyeleven/tag.php | 65 + src/wp-content/themes/twentyten/404.php | 30 + src/wp-content/themes/twentyten/archive.php | 61 + .../themes/twentyten/attachment.php | 26 + src/wp-content/themes/twentyten/author.php | 60 + src/wp-content/themes/twentyten/category.php | 34 + src/wp-content/themes/twentyten/comments.php | 79 + .../themes/twentyten/editor-style-rtl.css | 56 + .../themes/twentyten/editor-style.css | 292 + src/wp-content/themes/twentyten/footer.php | 50 + src/wp-content/themes/twentyten/functions.php | 508 + src/wp-content/themes/twentyten/header.php | 90 + .../images/headers/berries-thumbnail.jpg | Bin 0 -> 5727 bytes .../twentyten/images/headers/berries.jpg | Bin 0 -> 60696 bytes .../headers/cherryblossoms-thumbnail.jpg | Bin 0 -> 6542 bytes .../images/headers/cherryblossoms.jpg | Bin 0 -> 82037 bytes .../images/headers/concave-thumbnail.jpg | Bin 0 -> 5767 bytes .../twentyten/images/headers/concave.jpg | Bin 0 -> 38532 bytes .../images/headers/fern-thumbnail.jpg | Bin 0 -> 5530 bytes .../themes/twentyten/images/headers/fern.jpg | Bin 0 -> 25294 bytes .../images/headers/forestfloor-thumbnail.jpg | Bin 0 -> 6719 bytes .../twentyten/images/headers/forestfloor.jpg | Bin 0 -> 64870 bytes .../images/headers/inkwell-thumbnail.jpg | Bin 0 -> 4063 bytes .../twentyten/images/headers/inkwell.jpg | Bin 0 -> 39300 bytes .../images/headers/path-thumbnail.jpg | Bin 0 -> 4560 bytes .../themes/twentyten/images/headers/path.jpg | Bin 0 -> 51727 bytes .../images/headers/sunset-thumbnail.jpg | Bin 0 -> 2209 bytes .../twentyten/images/headers/sunset.jpg | Bin 0 -> 22830 bytes .../themes/twentyten/images/wordpress.png | Bin 0 -> 849 bytes src/wp-content/themes/twentyten/index.php | 32 + .../themes/twentyten/languages/es_ES.mo | Bin 0 -> 8888 bytes .../themes/twentyten/languages/es_ES.po | 364 + .../themes/twentyten/languages/twentyten.pot | 408 + src/wp-content/themes/twentyten/license.txt | 281 + .../themes/twentyten/loop-attachment.php | 117 + src/wp-content/themes/twentyten/loop-page.php | 36 + .../themes/twentyten/loop-single.php | 67 + src/wp-content/themes/twentyten/loop.php | 181 + .../themes/twentyten/onecolumn-page.php | 31 + src/wp-content/themes/twentyten/page.php | 32 + src/wp-content/themes/twentyten/rtl.css | 285 + .../themes/twentyten/screenshot.png | Bin 0 -> 34923 bytes src/wp-content/themes/twentyten/search.php | 37 + .../themes/twentyten/sidebar-footer.php | 60 + src/wp-content/themes/twentyten/sidebar.php | 56 + src/wp-content/themes/twentyten/single.php | 27 + src/wp-content/themes/twentyten/style.css | 1357 ++ src/wp-content/themes/twentyten/tag.php | 30 + src/wp-cron.php | 60 + src/wp-feed.php | 12 + src/wp-includes/Text/Diff.php | 450 + src/wp-includes/Text/Diff/Engine/native.php | 436 + src/wp-includes/Text/Diff/Engine/shell.php | 162 + src/wp-includes/Text/Diff/Engine/string.php | 248 + src/wp-includes/Text/Diff/Engine/xdiff.php | 64 + src/wp-includes/Text/Diff/Renderer.php | 235 + src/wp-includes/Text/Diff/Renderer/inline.php | 206 + src/wp-includes/admin-bar.php | 450 + src/wp-includes/atomlib.php | 354 + src/wp-includes/author-template.php | 401 + src/wp-includes/bookmark-template.php | 256 + src/wp-includes/bookmark.php | 380 + src/wp-includes/cache.php | 486 + src/wp-includes/canonical.php | 433 + src/wp-includes/capabilities.php | 1226 ++ src/wp-includes/category-template.php | 1215 ++ src/wp-includes/category.php | 359 + src/wp-includes/class-IXR.php | 1065 ++ src/wp-includes/class-feed.php | 94 + src/wp-includes/class-http.php | 1725 ++ src/wp-includes/class-json.php | 863 + src/wp-includes/class-oembed.php | 295 + src/wp-includes/class-phpass.php | 260 + src/wp-includes/class-phpmailer.php | 2320 +++ src/wp-includes/class-pop3.php | 652 + src/wp-includes/class-simplepie.php | 15002 ++++++++++++++++ src/wp-includes/class-smtp.php | 814 + src/wp-includes/class-snoopy.php | 1256 ++ src/wp-includes/class-wp-admin-bar.php | 237 + src/wp-includes/class-wp-ajax-response.php | 138 + src/wp-includes/class-wp-error.php | 212 + src/wp-includes/class-wp-http-ixr-client.php | 93 + src/wp-includes/class-wp-walker.php | 399 + src/wp-includes/class-wp-xmlrpc-server.php | 3615 ++++ src/wp-includes/class-wp.php | 599 + src/wp-includes/class.wp-dependencies.php | 236 + src/wp-includes/class.wp-scripts.php | 205 + src/wp-includes/class.wp-styles.php | 126 + src/wp-includes/comment-template.php | 1590 ++ src/wp-includes/comment.php | 2017 +++ src/wp-includes/compat.php | 96 + src/wp-includes/cron.php | 407 + src/wp-includes/css/admin-bar-rtl.css | 1 + src/wp-includes/css/admin-bar-rtl.dev.css | 103 + src/wp-includes/css/admin-bar.css | 1 + src/wp-includes/css/admin-bar.dev.css | 312 + src/wp-includes/css/jquery-ui-dialog.css | 1 + src/wp-includes/css/jquery-ui-dialog.dev.css | 143 + src/wp-includes/default-constants.php | 301 + src/wp-includes/default-filters.php | 287 + src/wp-includes/default-widgets.php | 1158 ++ src/wp-includes/deprecated.php | 2617 +++ src/wp-includes/feed-atom-comments.php | 87 + src/wp-includes/feed-atom.php | 55 + src/wp-includes/feed-rdf.php | 54 + src/wp-includes/feed-rss.php | 31 + src/wp-includes/feed-rss2-comments.php | 66 + src/wp-includes/feed-rss2.php | 60 + src/wp-includes/feed.php | 546 + src/wp-includes/formatting.php | 2926 +++ src/wp-includes/functions.php | 4552 +++++ src/wp-includes/functions.wp-scripts.php | 147 + src/wp-includes/functions.wp-styles.php | 145 + src/wp-includes/general-template.php | 2327 +++ src/wp-includes/http.php | 224 + .../images/admin-bar-sprite-rtl.png | Bin 0 -> 732 bytes src/wp-includes/images/admin-bar-sprite.png | Bin 0 -> 737 bytes src/wp-includes/images/blank.gif | Bin 0 -> 43 bytes src/wp-includes/images/crystal/archive.png | Bin 0 -> 3066 bytes src/wp-includes/images/crystal/audio.png | Bin 0 -> 2647 bytes src/wp-includes/images/crystal/code.png | Bin 0 -> 2133 bytes src/wp-includes/images/crystal/default.png | Bin 0 -> 638 bytes src/wp-includes/images/crystal/document.png | Bin 0 -> 2305 bytes .../images/crystal/interactive.png | Bin 0 -> 2808 bytes src/wp-includes/images/crystal/license.txt | 9 + .../images/crystal/spreadsheet.png | Bin 0 -> 2725 bytes src/wp-includes/images/crystal/text.png | Bin 0 -> 999 bytes src/wp-includes/images/crystal/video.png | Bin 0 -> 2372 bytes src/wp-includes/images/rss.png | Bin 0 -> 3341 bytes src/wp-includes/images/smilies/icon_arrow.gif | Bin 0 -> 170 bytes .../images/smilies/icon_biggrin.gif | Bin 0 -> 172 bytes .../images/smilies/icon_confused.gif | Bin 0 -> 171 bytes src/wp-includes/images/smilies/icon_cool.gif | Bin 0 -> 172 bytes src/wp-includes/images/smilies/icon_cry.gif | Bin 0 -> 498 bytes src/wp-includes/images/smilies/icon_eek.gif | Bin 0 -> 170 bytes src/wp-includes/images/smilies/icon_evil.gif | Bin 0 -> 236 bytes .../images/smilies/icon_exclaim.gif | Bin 0 -> 236 bytes src/wp-includes/images/smilies/icon_idea.gif | Bin 0 -> 176 bytes src/wp-includes/images/smilies/icon_lol.gif | Bin 0 -> 336 bytes src/wp-includes/images/smilies/icon_mad.gif | Bin 0 -> 174 bytes .../images/smilies/icon_mrgreen.gif | Bin 0 -> 349 bytes .../images/smilies/icon_neutral.gif | Bin 0 -> 171 bytes .../images/smilies/icon_question.gif | Bin 0 -> 248 bytes src/wp-includes/images/smilies/icon_razz.gif | Bin 0 -> 176 bytes .../images/smilies/icon_redface.gif | Bin 0 -> 650 bytes .../images/smilies/icon_rolleyes.gif | Bin 0 -> 485 bytes src/wp-includes/images/smilies/icon_sad.gif | Bin 0 -> 171 bytes src/wp-includes/images/smilies/icon_smile.gif | Bin 0 -> 174 bytes .../images/smilies/icon_surprised.gif | Bin 0 -> 174 bytes .../images/smilies/icon_twisted.gif | Bin 0 -> 238 bytes src/wp-includes/images/smilies/icon_wink.gif | Bin 0 -> 170 bytes src/wp-includes/images/upload.png | Bin 0 -> 814 bytes src/wp-includes/images/wlw/wp-comments.png | Bin 0 -> 1442 bytes src/wp-includes/images/wlw/wp-icon.png | Bin 0 -> 779 bytes src/wp-includes/images/wlw/wp-watermark.png | Bin 0 -> 8280 bytes src/wp-includes/images/wpmini-blue.png | Bin 0 -> 958 bytes src/wp-includes/js/admin-bar.dev.js | 140 + src/wp-includes/js/admin-bar.js | 1 + src/wp-includes/js/autosave.dev.js | 306 + src/wp-includes/js/autosave.js | 1 + src/wp-includes/js/colorpicker.dev.js | 707 + src/wp-includes/js/colorpicker.js | 1 + src/wp-includes/js/comment-reply.dev.js | 48 + src/wp-includes/js/comment-reply.js | 1 + src/wp-includes/js/crop/cropper.css | 165 + src/wp-includes/js/crop/cropper.js | 516 + src/wp-includes/js/crop/marqueeHoriz.gif | Bin 0 -> 1125 bytes src/wp-includes/js/crop/marqueeVert.gif | Bin 0 -> 1141 bytes src/wp-includes/js/hoverIntent.dev.js | 128 + src/wp-includes/js/hoverIntent.js | 1 + .../js/imgareaselect/border-anim-h.gif | Bin 0 -> 219 bytes .../js/imgareaselect/border-anim-v.gif | Bin 0 -> 219 bytes .../js/imgareaselect/imgareaselect.css | 41 + .../imgareaselect/jquery.imgareaselect.dev.js | 722 + .../js/imgareaselect/jquery.imgareaselect.js | 1 + src/wp-includes/js/jcrop/Jcrop.gif | Bin 0 -> 329 bytes src/wp-includes/js/jcrop/jquery.Jcrop.css | 35 + src/wp-includes/js/jcrop/jquery.Jcrop.dev.js | 1197 ++ src/wp-includes/js/jcrop/jquery.Jcrop.js | 1 + src/wp-includes/js/jquery/jquery.color.dev.js | 128 + src/wp-includes/js/jquery/jquery.color.js | 1 + src/wp-includes/js/jquery/jquery.form.dev.js | 826 + src/wp-includes/js/jquery/jquery.form.js | 11 + .../js/jquery/jquery.hotkeys.dev.js | 128 + src/wp-includes/js/jquery/jquery.hotkeys.js | 1 + src/wp-includes/js/jquery/jquery.js | 18 + src/wp-includes/js/jquery/jquery.query.js | 11 + src/wp-includes/js/jquery/jquery.schedule.js | 36 + .../js/jquery/jquery.serialize-object.js | 31 + .../js/jquery/jquery.table-hotkeys.dev.js | 99 + .../js/jquery/jquery.table-hotkeys.js | 1 + src/wp-includes/js/jquery/suggest.dev.js | 330 + src/wp-includes/js/jquery/suggest.js | 1 + src/wp-includes/js/jquery/ui.button.js | 25 + src/wp-includes/js/jquery/ui.core.js | 17 + src/wp-includes/js/jquery/ui.dialog.js | 40 + src/wp-includes/js/jquery/ui.draggable.js | 50 + src/wp-includes/js/jquery/ui.droppable.js | 26 + src/wp-includes/js/jquery/ui.mouse.js | 17 + src/wp-includes/js/jquery/ui.position.js | 16 + src/wp-includes/js/jquery/ui.resizable.js | 47 + src/wp-includes/js/jquery/ui.selectable.js | 22 + src/wp-includes/js/jquery/ui.sortable.js | 60 + src/wp-includes/js/jquery/ui.tabs.js | 35 + src/wp-includes/js/jquery/ui.widget.js | 15 + src/wp-includes/js/json2.dev.js | 480 + src/wp-includes/js/json2.js | 1 + src/wp-includes/js/l10n.dev.js | 23 + src/wp-includes/js/l10n.js | 1 + src/wp-includes/js/prototype.js | 4874 +++++ src/wp-includes/js/quicktags.dev.js | 582 + src/wp-includes/js/quicktags.js | 1 + src/wp-includes/js/scriptaculous/MIT-LICENSE | 20 + src/wp-includes/js/scriptaculous/builder.js | 136 + src/wp-includes/js/scriptaculous/controls.js | 965 + src/wp-includes/js/scriptaculous/dragdrop.js | 974 + src/wp-includes/js/scriptaculous/effects.js | 1123 ++ .../js/scriptaculous/scriptaculous.js | 68 + src/wp-includes/js/scriptaculous/slider.js | 275 + src/wp-includes/js/scriptaculous/sound.js | 59 + src/wp-includes/js/scriptaculous/unittest.js | 568 + .../js/scriptaculous/wp-scriptaculous.js | 73 + src/wp-includes/js/swfobject.js | 4 + src/wp-includes/js/swfupload/handlers.dev.js | 370 + src/wp-includes/js/swfupload/handlers.js | 1 + src/wp-includes/js/swfupload/license.txt | 32 + .../js/swfupload/plugins/swfupload.cookies.js | 53 + .../js/swfupload/plugins/swfupload.queue.js | 98 + .../js/swfupload/plugins/swfupload.speed.js | 342 + .../swfupload/plugins/swfupload.swfobject.js | 105 + src/wp-includes/js/swfupload/swfupload-all.js | 8 + src/wp-includes/js/swfupload/swfupload.js | 980 + src/wp-includes/js/swfupload/swfupload.swf | Bin 0 -> 12787 bytes .../js/thickbox/loadingAnimation.gif | Bin 0 -> 5886 bytes src/wp-includes/js/thickbox/macFFBgHack.png | Bin 0 -> 207 bytes src/wp-includes/js/thickbox/tb-close.png | Bin 0 -> 506 bytes src/wp-includes/js/thickbox/thickbox.css | 162 + src/wp-includes/js/thickbox/thickbox.js | 324 + .../js/tinymce/langs/wp-langs-en.js | 502 + src/wp-includes/js/tinymce/langs/wp-langs.php | 515 + src/wp-includes/js/tinymce/license.txt | 504 + .../plugins/directionality/editor_plugin.js | 1 + .../plugins/fullscreen/editor_plugin.js | 1 + .../tinymce/plugins/fullscreen/fullscreen.htm | 109 + .../plugins/inlinepopups/editor_plugin.js | 1 + .../skins/clearlooks2/img/alert.gif | Bin 0 -> 818 bytes .../skins/clearlooks2/img/button.gif | Bin 0 -> 280 bytes .../skins/clearlooks2/img/buttons.gif | Bin 0 -> 989 bytes .../skins/clearlooks2/img/confirm.gif | Bin 0 -> 915 bytes .../skins/clearlooks2/img/corners.gif | Bin 0 -> 911 bytes .../skins/clearlooks2/img/drag.gif | Bin 0 -> 57 bytes .../skins/clearlooks2/img/horizontal.gif | Bin 0 -> 769 bytes .../skins/clearlooks2/img/vertical.gif | Bin 0 -> 92 bytes .../inlinepopups/skins/clearlooks2/window.css | 136 + .../tinymce/plugins/inlinepopups/template.htm | 387 + .../js/tinymce/plugins/media/css/media.css | 17 + .../js/tinymce/plugins/media/editor_plugin.js | 1 + .../js/tinymce/plugins/media/js/embed.js | 73 + .../js/tinymce/plugins/media/js/media.js | 354 + .../js/tinymce/plugins/media/media.htm | 812 + .../js/tinymce/plugins/media/moxieplayer.swf | Bin 0 -> 33931 bytes .../js/tinymce/plugins/paste/blank.htm | 21 + .../js/tinymce/plugins/paste/editor_plugin.js | 1 + .../js/tinymce/plugins/paste/js/pastetext.js | 36 + .../js/tinymce/plugins/paste/js/pasteword.js | 51 + .../js/tinymce/plugins/paste/pastetext.htm | 32 + .../js/tinymce/plugins/paste/pasteword.htm | 26 + .../plugins/spellchecker/changelog.txt | 28 + .../spellchecker/classes/EnchantSpell.php | 67 + .../spellchecker/classes/GoogleSpell.php | 159 + .../plugins/spellchecker/classes/PSpell.php | 82 + .../spellchecker/classes/PSpellShell.php | 113 + .../spellchecker/classes/SpellChecker.php | 62 + .../spellchecker/classes/utils/JSON.php | 595 + .../spellchecker/classes/utils/Logger.php | 268 + .../tinymce/plugins/spellchecker/config.php | 27 + .../plugins/spellchecker/css/content.css | 1 + .../plugins/spellchecker/editor_plugin.js | 1 + .../plugins/spellchecker/img/wline.gif | Bin 0 -> 46 bytes .../plugins/spellchecker/includes/general.php | 98 + .../js/tinymce/plugins/spellchecker/rpc.php | 112 + .../tinymce/plugins/tabfocus/editor_plugin.js | 1 + .../tinymce/plugins/wordpress/css/content.css | 29 + .../plugins/wordpress/editor_plugin.dev.js | 423 + .../plugins/wordpress/editor_plugin.js | 1 + .../tinymce/plugins/wordpress/img/audio.gif | Bin 0 -> 146 bytes .../plugins/wordpress/img/embedded.png | Bin 0 -> 28741 bytes .../tinymce/plugins/wordpress/img/image.gif | Bin 0 -> 101 bytes .../tinymce/plugins/wordpress/img/media.gif | Bin 0 -> 149 bytes .../plugins/wordpress/img/more_bug.gif | Bin 0 -> 146 bytes .../js/tinymce/plugins/wordpress/img/page.gif | Bin 0 -> 108 bytes .../plugins/wordpress/img/page_bug.gif | Bin 0 -> 180 bytes .../tinymce/plugins/wordpress/img/trans.gif | Bin 0 -> 43 bytes .../tinymce/plugins/wordpress/img/video.gif | Bin 0 -> 99 bytes .../plugins/wpdialogs/editor_plugin.dev.js | 80 + .../plugins/wpdialogs/editor_plugin.js | 1 + .../tinymce/plugins/wpdialogs/js/popup.dev.js | 432 + .../js/tinymce/plugins/wpdialogs/js/popup.js | 1 + .../plugins/wpdialogs/js/wpdialog.dev.js | 28 + .../tinymce/plugins/wpdialogs/js/wpdialog.js | 1 + .../plugins/wpeditimage/css/editimage-rtl.css | 68 + .../plugins/wpeditimage/css/editimage.css | 358 + .../plugins/wpeditimage/editimage.html | 275 + .../plugins/wpeditimage/editor_plugin.dev.js | 219 + .../plugins/wpeditimage/editor_plugin.js | 1 + .../plugins/wpeditimage/img/delete.png | Bin 0 -> 1638 bytes .../tinymce/plugins/wpeditimage/img/image.png | Bin 0 -> 3701 bytes .../plugins/wpeditimage/js/editimage.dev.js | 613 + .../plugins/wpeditimage/js/editimage.js | 1 + .../wpfullscreen/css/wp-fullscreen.css | 11 + .../plugins/wpfullscreen/editor_plugin.dev.js | 178 + .../plugins/wpfullscreen/editor_plugin.js | 1 + .../plugins/wpgallery/editor_plugin.dev.js | 119 + .../plugins/wpgallery/editor_plugin.js | 1 + .../tinymce/plugins/wpgallery/img/delete.png | Bin 0 -> 1638 bytes .../js/tinymce/plugins/wpgallery/img/edit.png | Bin 0 -> 1799 bytes .../tinymce/plugins/wpgallery/img/gallery.png | Bin 0 -> 27676 bytes .../js/tinymce/plugins/wpgallery/img/t.gif | Bin 0 -> 43 bytes .../tinymce/plugins/wplink/css/wplink-rtl.css | 1 + .../plugins/wplink/css/wplink-rtl.dev.css | 54 + .../js/tinymce/plugins/wplink/css/wplink.css | 1 + .../tinymce/plugins/wplink/css/wplink.dev.css | 163 + .../plugins/wplink/editor_plugin.dev.js | 60 + .../tinymce/plugins/wplink/editor_plugin.js | 1 + .../plugins/wplink/img/toggle-arrow.png | Bin 0 -> 3226 bytes .../tinymce/plugins/wplink/js/wplink.dev.js | 585 + .../js/tinymce/plugins/wplink/js/wplink.js | 1 + .../js/tinymce/themes/advanced/about.htm | 52 + .../js/tinymce/themes/advanced/anchor.htm | 31 + .../js/tinymce/themes/advanced/charmap.htm | 51 + .../tinymce/themes/advanced/color_picker.htm | 76 + .../themes/advanced/editor_template.js | 1 + .../js/tinymce/themes/advanced/image.htm | 89 + .../themes/advanced/img/colorpicker.jpg | Bin 0 -> 3189 bytes .../js/tinymce/themes/advanced/img/flash.gif | Bin 0 -> 241 bytes .../tinymce/themes/advanced/img/gotmoxie.png | Bin 0 -> 983 bytes .../js/tinymce/themes/advanced/img/icons.gif | Bin 0 -> 11794 bytes .../js/tinymce/themes/advanced/img/iframe.gif | Bin 0 -> 600 bytes .../tinymce/themes/advanced/img/pagebreak.gif | Bin 0 -> 325 bytes .../tinymce/themes/advanced/img/quicktime.gif | Bin 0 -> 303 bytes .../tinymce/themes/advanced/img/realmedia.gif | Bin 0 -> 439 bytes .../tinymce/themes/advanced/img/shockwave.gif | Bin 0 -> 387 bytes .../js/tinymce/themes/advanced/img/trans.gif | Bin 0 -> 43 bytes .../js/tinymce/themes/advanced/img/video.gif | Bin 0 -> 597 bytes .../themes/advanced/img/windowsmedia.gif | Bin 0 -> 415 bytes .../tinymce/themes/advanced/img/wpicons.png | Bin 0 -> 21059 bytes .../js/tinymce/themes/advanced/js/about.js | 73 + .../js/tinymce/themes/advanced/js/anchor.js | 42 + .../js/tinymce/themes/advanced/js/charmap.js | 355 + .../themes/advanced/js/color_picker.js | 329 + .../js/tinymce/themes/advanced/js/image.js | 255 + .../js/tinymce/themes/advanced/js/link.js | 153 + .../themes/advanced/js/source_editor.js | 56 + .../js/tinymce/themes/advanced/link.htm | 62 + .../js/tinymce/themes/advanced/shortcuts.htm | 47 + .../themes/advanced/skins/default/content.css | 47 + .../themes/advanced/skins/default/dialog.css | 117 + .../advanced/skins/default/img/buttons.png | Bin 0 -> 3274 bytes .../advanced/skins/default/img/items.gif | Bin 0 -> 70 bytes .../advanced/skins/default/img/menu_arrow.gif | Bin 0 -> 68 bytes .../advanced/skins/default/img/menu_check.gif | Bin 0 -> 70 bytes .../advanced/skins/default/img/progress.gif | Bin 0 -> 1787 bytes .../advanced/skins/default/img/tabs.gif | Bin 0 -> 1326 bytes .../themes/advanced/skins/default/ui.css | 213 + .../advanced/skins/highcontrast/content.css | 23 + .../advanced/skins/highcontrast/dialog.css | 105 + .../themes/advanced/skins/highcontrast/ui.css | 101 + .../themes/advanced/skins/o2k7/content.css | 46 + .../themes/advanced/skins/o2k7/dialog.css | 117 + .../advanced/skins/o2k7/img/button_bg.png | Bin 0 -> 5859 bytes .../skins/o2k7/img/button_bg_black.png | Bin 0 -> 3736 bytes .../skins/o2k7/img/button_bg_silver.png | Bin 0 -> 5358 bytes .../tinymce/themes/advanced/skins/o2k7/ui.css | 216 + .../themes/advanced/skins/o2k7/ui_black.css | 8 + .../themes/advanced/skins/o2k7/ui_silver.css | 5 + .../advanced/skins/wp_theme/content.css | 96 + .../themes/advanced/skins/wp_theme/dialog.css | 117 + .../advanced/skins/wp_theme/img/butt2.png | Bin 0 -> 212 bytes .../advanced/skins/wp_theme/img/button_bg.png | Bin 0 -> 5859 bytes .../skins/wp_theme/img/down_arrow.gif | Bin 0 -> 60 bytes .../advanced/skins/wp_theme/img/fade-butt.png | Bin 0 -> 785 bytes .../advanced/skins/wp_theme/img/separator.gif | Bin 0 -> 57 bytes .../advanced/skins/wp_theme/img/tabs.gif | Bin 0 -> 1326 bytes .../themes/advanced/skins/wp_theme/ui.css | 560 + .../tinymce/themes/advanced/source_editor.htm | 30 + src/wp-includes/js/tinymce/tiny_mce.js | 1 + src/wp-includes/js/tinymce/tiny_mce_popup.js | 5 + .../js/tinymce/utils/editable_selects.js | 70 + .../js/tinymce/utils/form_utils.js | 210 + src/wp-includes/js/tinymce/utils/mctabs.js | 162 + src/wp-includes/js/tinymce/utils/validate.js | 252 + src/wp-includes/js/tinymce/wp-mce-help.php | 289 + src/wp-includes/js/tinymce/wp-tinymce.js.gz | Bin 0 -> 93408 bytes src/wp-includes/js/tinymce/wp-tinymce.php | 37 + src/wp-includes/js/tw-sack.dev.js | 193 + src/wp-includes/js/tw-sack.js | 1 + src/wp-includes/js/wp-ajax-response.dev.js | 64 + src/wp-includes/js/wp-ajax-response.js | 1 + src/wp-includes/js/wp-list-revisions.dev.js | 24 + src/wp-includes/js/wp-list-revisions.js | 1 + src/wp-includes/js/wp-lists.dev.js | 464 + src/wp-includes/js/wp-lists.js | 1 + src/wp-includes/kses.php | 1415 ++ src/wp-includes/l10n.php | 535 + src/wp-includes/link-template.php | 2478 +++ src/wp-includes/load.php | 654 + src/wp-includes/locale.php | 351 + src/wp-includes/media.php | 1441 ++ src/wp-includes/meta.php | 610 + src/wp-includes/ms-blogs.php | 681 + src/wp-includes/ms-default-constants.php | 140 + src/wp-includes/ms-default-filters.php | 66 + src/wp-includes/ms-deprecated.php | 203 + src/wp-includes/ms-files.php | 83 + src/wp-includes/ms-functions.php | 2074 +++ src/wp-includes/ms-load.php | 250 + src/wp-includes/ms-settings.php | 136 + src/wp-includes/nav-menu-template.php | 489 + src/wp-includes/nav-menu.php | 784 + src/wp-includes/pluggable-deprecated.php | 136 + src/wp-includes/pluggable.php | 1811 ++ src/wp-includes/plugin.php | 788 + src/wp-includes/pomo/entry.php | 69 + src/wp-includes/pomo/mo.php | 231 + src/wp-includes/pomo/po.php | 363 + src/wp-includes/pomo/streams.php | 209 + src/wp-includes/pomo/translations.php | 253 + src/wp-includes/post-template.php | 1440 ++ src/wp-includes/post-thumbnail-template.php | 105 + src/wp-includes/post.php | 5298 ++++++ src/wp-includes/query.php | 3575 ++++ src/wp-includes/registration-functions.php | 8 + src/wp-includes/registration.php | 8 + src/wp-includes/rewrite.php | 1991 ++ src/wp-includes/rss-functions.php | 10 + src/wp-includes/rss.php | 939 + src/wp-includes/script-loader.php | 801 + src/wp-includes/shortcodes.php | 298 + src/wp-includes/taxonomy.php | 3190 ++++ src/wp-includes/template-loader.php | 47 + .../theme-compat/comments-popup.php | 129 + src/wp-includes/theme-compat/comments.php | 102 + src/wp-includes/theme-compat/footer.php | 30 + src/wp-includes/theme-compat/header.php | 50 + src/wp-includes/theme-compat/sidebar.php | 84 + src/wp-includes/theme.php | 1985 ++ src/wp-includes/update.php | 366 + src/wp-includes/user.php | 1621 ++ src/wp-includes/vars.php | 97 + src/wp-includes/version.php | 44 + src/wp-includes/widgets.php | 1217 ++ src/wp-includes/wlwmanifest.xml | 44 + src/wp-includes/wp-db.php | 1554 ++ src/wp-includes/wp-diff.php | 477 + src/wp-links-opml.php | 59 + src/wp-load.php | 60 + src/wp-login.php | 698 + src/wp-mail.php | 236 + src/wp-pass.php | 20 + src/wp-rdf.php | 12 + src/wp-register.php | 15 + src/wp-rss.php | 12 + src/wp-rss2.php | 12 + src/wp-settings.php | 324 + src/wp-signup.php | 455 + src/wp-trackback.php | 111 + src/xmlrpc.php | 110 + 1183 files changed, 260610 insertions(+) create mode 100644 db/instaldeco.sql create mode 100644 src/index.php create mode 100644 src/licencia.txt create mode 100644 src/license.txt create mode 100644 src/readme.html create mode 100644 src/wp-activate.php create mode 100644 src/wp-admin/admin-ajax.php create mode 100644 src/wp-admin/admin-footer.php create mode 100644 src/wp-admin/admin-functions.php create mode 100644 src/wp-admin/admin-header.php create mode 100644 src/wp-admin/admin-post.php create mode 100644 src/wp-admin/admin.php create mode 100644 src/wp-admin/async-upload.php create mode 100644 src/wp-admin/comment.php create mode 100644 src/wp-admin/credits.php create mode 100644 src/wp-admin/css/colors-classic-rtl.css create mode 100644 src/wp-admin/css/colors-classic-rtl.dev.css create mode 100644 src/wp-admin/css/colors-classic.css create mode 100644 src/wp-admin/css/colors-classic.dev.css create mode 100644 src/wp-admin/css/colors-fresh-rtl.css create mode 100644 src/wp-admin/css/colors-fresh-rtl.dev.css create mode 100644 src/wp-admin/css/colors-fresh.css create mode 100644 src/wp-admin/css/colors-fresh.dev.css create mode 100644 src/wp-admin/css/dashboard-rtl.css create mode 100644 src/wp-admin/css/dashboard-rtl.dev.css create mode 100644 src/wp-admin/css/dashboard.css create mode 100644 src/wp-admin/css/dashboard.dev.css create mode 100644 src/wp-admin/css/farbtastic-rtl.css create mode 100644 src/wp-admin/css/farbtastic.css create mode 100644 src/wp-admin/css/global-rtl.css create mode 100644 src/wp-admin/css/global-rtl.dev.css create mode 100644 src/wp-admin/css/global.css create mode 100644 src/wp-admin/css/global.dev.css create mode 100644 src/wp-admin/css/ie-rtl.css create mode 100644 src/wp-admin/css/ie-rtl.dev.css create mode 100644 src/wp-admin/css/ie.css create mode 100644 src/wp-admin/css/ie.dev.css create mode 100644 src/wp-admin/css/install-rtl.css create mode 100644 src/wp-admin/css/install-rtl.dev.css create mode 100644 src/wp-admin/css/install.css create mode 100644 src/wp-admin/css/install.dev.css create mode 100644 src/wp-admin/css/login-rtl.css create mode 100644 src/wp-admin/css/login-rtl.dev.css create mode 100644 src/wp-admin/css/login.css create mode 100644 src/wp-admin/css/login.dev.css create mode 100644 src/wp-admin/css/media-rtl.css create mode 100644 src/wp-admin/css/media-rtl.dev.css create mode 100644 src/wp-admin/css/media.css create mode 100644 src/wp-admin/css/media.dev.css create mode 100644 src/wp-admin/css/ms.css create mode 100644 src/wp-admin/css/ms.dev.css create mode 100644 src/wp-admin/css/nav-menu-rtl.css create mode 100644 src/wp-admin/css/nav-menu-rtl.dev.css create mode 100644 src/wp-admin/css/nav-menu.css create mode 100644 src/wp-admin/css/nav-menu.dev.css create mode 100644 src/wp-admin/css/plugin-install-rtl.css create mode 100644 src/wp-admin/css/plugin-install-rtl.dev.css create mode 100644 src/wp-admin/css/plugin-install.css create mode 100644 src/wp-admin/css/plugin-install.dev.css create mode 100644 src/wp-admin/css/press-this-rtl.css create mode 100644 src/wp-admin/css/press-this-rtl.dev.css create mode 100644 src/wp-admin/css/press-this.css create mode 100644 src/wp-admin/css/press-this.dev.css create mode 100644 src/wp-admin/css/theme-editor-rtl.css create mode 100644 src/wp-admin/css/theme-editor-rtl.dev.css create mode 100644 src/wp-admin/css/theme-editor.css create mode 100644 src/wp-admin/css/theme-editor.dev.css create mode 100644 src/wp-admin/css/theme-install-rtl.css create mode 100644 src/wp-admin/css/theme-install-rtl.dev.css create mode 100644 src/wp-admin/css/theme-install.css create mode 100644 src/wp-admin/css/theme-install.dev.css create mode 100644 src/wp-admin/css/widgets-rtl.css create mode 100644 src/wp-admin/css/widgets-rtl.dev.css create mode 100644 src/wp-admin/css/widgets.css create mode 100644 src/wp-admin/css/widgets.dev.css create mode 100644 src/wp-admin/css/wp-admin-rtl.css create mode 100644 src/wp-admin/css/wp-admin-rtl.dev.css create mode 100644 src/wp-admin/css/wp-admin.css create mode 100644 src/wp-admin/css/wp-admin.dev.css create mode 100644 src/wp-admin/custom-background.php create mode 100644 src/wp-admin/custom-header.php create mode 100644 src/wp-admin/edit-comments.php create mode 100644 src/wp-admin/edit-form-advanced.php create mode 100644 src/wp-admin/edit-form-comment.php create mode 100644 src/wp-admin/edit-link-form.php create mode 100644 src/wp-admin/edit-tag-form.php create mode 100644 src/wp-admin/edit-tags.php create mode 100644 src/wp-admin/edit.php create mode 100644 src/wp-admin/export.php create mode 100644 src/wp-admin/freedoms.php create mode 100644 src/wp-admin/gears-manifest.php create mode 100644 src/wp-admin/images/align-center.png create mode 100644 src/wp-admin/images/align-left.png create mode 100644 src/wp-admin/images/align-none.png create mode 100644 src/wp-admin/images/align-right.png create mode 100644 src/wp-admin/images/archive-link.png create mode 100644 src/wp-admin/images/arrows-dark-vs.png create mode 100644 src/wp-admin/images/arrows-dark.png create mode 100644 src/wp-admin/images/arrows-vs.png create mode 100644 src/wp-admin/images/arrows.png create mode 100644 src/wp-admin/images/blue-grad.png create mode 100644 src/wp-admin/images/bubble_bg-rtl.gif create mode 100644 src/wp-admin/images/bubble_bg.gif create mode 100644 src/wp-admin/images/button-grad-active.png create mode 100644 src/wp-admin/images/button-grad.png create mode 100644 src/wp-admin/images/comment-grey-bubble.png create mode 100644 src/wp-admin/images/date-button.gif create mode 100644 src/wp-admin/images/ed-bg-vs.gif create mode 100644 src/wp-admin/images/ed-bg.gif create mode 100644 src/wp-admin/images/fade-butt.png create mode 100644 src/wp-admin/images/fav-arrow-rtl.gif create mode 100644 src/wp-admin/images/fav-arrow.gif create mode 100644 src/wp-admin/images/fav-vs.png create mode 100644 src/wp-admin/images/fav.png create mode 100644 src/wp-admin/images/generic.png create mode 100644 src/wp-admin/images/gray-grad.png create mode 100644 src/wp-admin/images/gray-star.png create mode 100644 src/wp-admin/images/icons32-vs.png create mode 100644 src/wp-admin/images/icons32.png create mode 100644 src/wp-admin/images/imgedit-icons.png create mode 100644 src/wp-admin/images/list.png create mode 100644 src/wp-admin/images/loading-publish.gif create mode 100644 src/wp-admin/images/loading.gif create mode 100644 src/wp-admin/images/logo-ghost.png create mode 100644 src/wp-admin/images/logo-login.png create mode 100644 src/wp-admin/images/logo.gif create mode 100644 src/wp-admin/images/marker.png create mode 100644 src/wp-admin/images/mask.png create mode 100644 src/wp-admin/images/media-button-image.gif create mode 100644 src/wp-admin/images/media-button-music.gif create mode 100644 src/wp-admin/images/media-button-other.gif create mode 100644 src/wp-admin/images/media-button-video.gif create mode 100644 src/wp-admin/images/menu-arrow-frame-rtl.png create mode 100644 src/wp-admin/images/menu-arrow-frame.png create mode 100644 src/wp-admin/images/menu-arrows.gif create mode 100644 src/wp-admin/images/menu-bits-rtl-vs.gif create mode 100644 src/wp-admin/images/menu-bits-rtl.gif create mode 100644 src/wp-admin/images/menu-bits-vs.gif create mode 100644 src/wp-admin/images/menu-bits.gif create mode 100644 src/wp-admin/images/menu-dark-rtl-vs.gif create mode 100644 src/wp-admin/images/menu-dark-rtl.gif create mode 100644 src/wp-admin/images/menu-dark-vs.gif create mode 100644 src/wp-admin/images/menu-dark.gif create mode 100644 src/wp-admin/images/menu-shadow-rtl.png create mode 100644 src/wp-admin/images/menu-shadow.png create mode 100644 src/wp-admin/images/menu-vs.png create mode 100644 src/wp-admin/images/menu.png create mode 100644 src/wp-admin/images/no.png create mode 100644 src/wp-admin/images/press-this.png create mode 100644 src/wp-admin/images/required.gif create mode 100644 src/wp-admin/images/resize-rtl.gif create mode 100644 src/wp-admin/images/resize.gif create mode 100644 src/wp-admin/images/screen-options-toggle-vs.gif create mode 100644 src/wp-admin/images/screen-options-toggle.gif create mode 100644 src/wp-admin/images/se.png create mode 100644 src/wp-admin/images/sort.gif create mode 100644 src/wp-admin/images/star.png create mode 100644 src/wp-admin/images/toggle-arrow-rtl.gif create mode 100644 src/wp-admin/images/toggle-arrow.gif create mode 100644 src/wp-admin/images/upload-classic.png create mode 100644 src/wp-admin/images/upload-fresh.png create mode 100644 src/wp-admin/images/wheel.png create mode 100644 src/wp-admin/images/white-grad-active.png create mode 100644 src/wp-admin/images/white-grad.png create mode 100644 src/wp-admin/images/widgets-arrow-vs.gif create mode 100644 src/wp-admin/images/widgets-arrow.gif create mode 100644 src/wp-admin/images/wordpress-logo.png create mode 100644 src/wp-admin/images/wp-logo-vs.png create mode 100644 src/wp-admin/images/wp-logo.png create mode 100644 src/wp-admin/images/wpspin_dark.gif create mode 100644 src/wp-admin/images/wpspin_light.gif create mode 100644 src/wp-admin/images/xit.gif create mode 100644 src/wp-admin/images/yes.png create mode 100644 src/wp-admin/import.php create mode 100644 src/wp-admin/includes/admin.php create mode 100644 src/wp-admin/includes/bookmark.php create mode 100644 src/wp-admin/includes/class-ftp-pure.php create mode 100644 src/wp-admin/includes/class-ftp-sockets.php create mode 100644 src/wp-admin/includes/class-ftp.php create mode 100644 src/wp-admin/includes/class-pclzip.php create mode 100644 src/wp-admin/includes/class-wp-comments-list-table.php create mode 100644 src/wp-admin/includes/class-wp-filesystem-base.php create mode 100644 src/wp-admin/includes/class-wp-filesystem-direct.php create mode 100644 src/wp-admin/includes/class-wp-filesystem-ftpext.php create mode 100644 src/wp-admin/includes/class-wp-filesystem-ftpsockets.php create mode 100644 src/wp-admin/includes/class-wp-filesystem-ssh2.php create mode 100644 src/wp-admin/includes/class-wp-importer.php create mode 100644 src/wp-admin/includes/class-wp-links-list-table.php create mode 100644 src/wp-admin/includes/class-wp-list-table.php create mode 100644 src/wp-admin/includes/class-wp-media-list-table.php create mode 100644 src/wp-admin/includes/class-wp-ms-sites-list-table.php create mode 100644 src/wp-admin/includes/class-wp-ms-themes-list-table.php create mode 100644 src/wp-admin/includes/class-wp-ms-users-list-table.php create mode 100644 src/wp-admin/includes/class-wp-plugin-install-list-table.php create mode 100644 src/wp-admin/includes/class-wp-plugins-list-table.php create mode 100644 src/wp-admin/includes/class-wp-posts-list-table.php create mode 100644 src/wp-admin/includes/class-wp-terms-list-table.php create mode 100644 src/wp-admin/includes/class-wp-theme-install-list-table.php create mode 100644 src/wp-admin/includes/class-wp-themes-list-table.php create mode 100644 src/wp-admin/includes/class-wp-upgrader.php create mode 100644 src/wp-admin/includes/class-wp-users-list-table.php create mode 100644 src/wp-admin/includes/comment.php create mode 100644 src/wp-admin/includes/continents-cities.php create mode 100644 src/wp-admin/includes/dashboard.php create mode 100644 src/wp-admin/includes/deprecated.php create mode 100644 src/wp-admin/includes/export.php create mode 100644 src/wp-admin/includes/file.php create mode 100644 src/wp-admin/includes/image-edit.php create mode 100644 src/wp-admin/includes/image.php create mode 100644 src/wp-admin/includes/import.php create mode 100644 src/wp-admin/includes/internal-linking.php create mode 100644 src/wp-admin/includes/list-table.php create mode 100644 src/wp-admin/includes/manifest.php create mode 100644 src/wp-admin/includes/media.php create mode 100644 src/wp-admin/includes/menu.php create mode 100644 src/wp-admin/includes/meta-boxes.php create mode 100644 src/wp-admin/includes/misc.php create mode 100644 src/wp-admin/includes/ms-deprecated.php create mode 100644 src/wp-admin/includes/ms.php create mode 100644 src/wp-admin/includes/nav-menu.php create mode 100644 src/wp-admin/includes/plugin-install.php create mode 100644 src/wp-admin/includes/plugin.php create mode 100644 src/wp-admin/includes/post.php create mode 100644 src/wp-admin/includes/schema.php create mode 100644 src/wp-admin/includes/taxonomy.php create mode 100644 src/wp-admin/includes/template.php create mode 100644 src/wp-admin/includes/theme-install.php create mode 100644 src/wp-admin/includes/theme.php create mode 100644 src/wp-admin/includes/update-core.php create mode 100644 src/wp-admin/includes/update.php create mode 100644 src/wp-admin/includes/upgrade.php create mode 100644 src/wp-admin/includes/user.php create mode 100644 src/wp-admin/includes/widgets.php create mode 100644 src/wp-admin/index-extra.php create mode 100644 src/wp-admin/index.php create mode 100644 src/wp-admin/install-helper.php create mode 100644 src/wp-admin/install.php create mode 100644 src/wp-admin/js/cat.dev.js create mode 100644 src/wp-admin/js/cat.js create mode 100644 src/wp-admin/js/categories.dev.js create mode 100644 src/wp-admin/js/categories.js create mode 100644 src/wp-admin/js/comment.dev.js create mode 100644 src/wp-admin/js/comment.js create mode 100644 src/wp-admin/js/common.dev.js create mode 100644 src/wp-admin/js/common.js create mode 100644 src/wp-admin/js/custom-background.dev.js create mode 100644 src/wp-admin/js/custom-background.js create mode 100644 src/wp-admin/js/custom-fields.dev.js create mode 100644 src/wp-admin/js/custom-fields.js create mode 100644 src/wp-admin/js/dashboard.dev.js create mode 100644 src/wp-admin/js/dashboard.js create mode 100644 src/wp-admin/js/edit-comments.dev.js create mode 100644 src/wp-admin/js/edit-comments.js create mode 100644 src/wp-admin/js/editor.dev.js create mode 100644 src/wp-admin/js/editor.js create mode 100644 src/wp-admin/js/farbtastic.js create mode 100644 src/wp-admin/js/gallery.dev.js create mode 100644 src/wp-admin/js/gallery.js create mode 100644 src/wp-admin/js/image-edit.dev.js create mode 100644 src/wp-admin/js/image-edit.js create mode 100644 src/wp-admin/js/inline-edit-post.dev.js create mode 100644 src/wp-admin/js/inline-edit-post.js create mode 100644 src/wp-admin/js/inline-edit-tax.dev.js create mode 100644 src/wp-admin/js/inline-edit-tax.js create mode 100644 src/wp-admin/js/link.dev.js create mode 100644 src/wp-admin/js/link.js create mode 100644 src/wp-admin/js/media-upload.dev.js create mode 100644 src/wp-admin/js/media-upload.js create mode 100644 src/wp-admin/js/media.dev.js create mode 100644 src/wp-admin/js/media.js create mode 100644 src/wp-admin/js/nav-menu.dev.js create mode 100644 src/wp-admin/js/nav-menu.js create mode 100644 src/wp-admin/js/password-strength-meter.dev.js create mode 100644 src/wp-admin/js/password-strength-meter.js create mode 100644 src/wp-admin/js/plugin-install.dev.js create mode 100644 src/wp-admin/js/plugin-install.js create mode 100644 src/wp-admin/js/post.dev.js create mode 100644 src/wp-admin/js/post.js create mode 100644 src/wp-admin/js/postbox.dev.js create mode 100644 src/wp-admin/js/postbox.js create mode 100644 src/wp-admin/js/revisions-js.php create mode 100644 src/wp-admin/js/set-post-thumbnail.dev.js create mode 100644 src/wp-admin/js/set-post-thumbnail.js create mode 100644 src/wp-admin/js/tags.dev.js create mode 100644 src/wp-admin/js/tags.js create mode 100644 src/wp-admin/js/theme-preview.dev.js create mode 100644 src/wp-admin/js/theme-preview.js create mode 100644 src/wp-admin/js/theme.dev.js create mode 100644 src/wp-admin/js/theme.js create mode 100644 src/wp-admin/js/user-profile.dev.js create mode 100644 src/wp-admin/js/user-profile.js create mode 100644 src/wp-admin/js/utils.dev.js create mode 100644 src/wp-admin/js/utils.js create mode 100644 src/wp-admin/js/widgets.dev.js create mode 100644 src/wp-admin/js/widgets.js create mode 100644 src/wp-admin/js/word-count.dev.js create mode 100644 src/wp-admin/js/word-count.js create mode 100644 src/wp-admin/js/wp-fullscreen.dev.js create mode 100644 src/wp-admin/js/wp-fullscreen.js create mode 100644 src/wp-admin/js/xfn.dev.js create mode 100644 src/wp-admin/js/xfn.js create mode 100644 src/wp-admin/link-add.php create mode 100644 src/wp-admin/link-manager.php create mode 100644 src/wp-admin/link-parse-opml.php create mode 100644 src/wp-admin/link.php create mode 100644 src/wp-admin/load-scripts.php create mode 100644 src/wp-admin/load-styles.php create mode 100644 src/wp-admin/maint/repair.php create mode 100644 src/wp-admin/media-new.php create mode 100644 src/wp-admin/media-upload.php create mode 100644 src/wp-admin/media.php create mode 100644 src/wp-admin/menu-header.php create mode 100644 src/wp-admin/menu.php create mode 100644 src/wp-admin/moderation.php create mode 100644 src/wp-admin/ms-admin.php create mode 100644 src/wp-admin/ms-delete-site.php create mode 100644 src/wp-admin/ms-edit.php create mode 100644 src/wp-admin/ms-options.php create mode 100644 src/wp-admin/ms-sites.php create mode 100644 src/wp-admin/ms-themes.php create mode 100644 src/wp-admin/ms-upgrade-network.php create mode 100644 src/wp-admin/ms-users.php create mode 100644 src/wp-admin/my-sites.php create mode 100644 src/wp-admin/nav-menus.php create mode 100644 src/wp-admin/network.php create mode 100644 src/wp-admin/network/admin.php create mode 100644 src/wp-admin/network/edit.php create mode 100644 src/wp-admin/network/index-extra.php create mode 100644 src/wp-admin/network/index.php create mode 100644 src/wp-admin/network/menu.php create mode 100644 src/wp-admin/network/plugin-editor.php create mode 100644 src/wp-admin/network/plugin-install.php create mode 100644 src/wp-admin/network/plugins.php create mode 100644 src/wp-admin/network/profile.php create mode 100644 src/wp-admin/network/settings.php create mode 100644 src/wp-admin/network/setup.php create mode 100644 src/wp-admin/network/site-info.php create mode 100644 src/wp-admin/network/site-new.php create mode 100644 src/wp-admin/network/site-settings.php create mode 100644 src/wp-admin/network/site-themes.php create mode 100644 src/wp-admin/network/site-users.php create mode 100644 src/wp-admin/network/sites.php create mode 100644 src/wp-admin/network/theme-editor.php create mode 100644 src/wp-admin/network/theme-install.php create mode 100644 src/wp-admin/network/themes.php create mode 100644 src/wp-admin/network/update-core.php create mode 100644 src/wp-admin/network/update.php create mode 100644 src/wp-admin/network/upgrade.php create mode 100644 src/wp-admin/network/user-edit.php create mode 100644 src/wp-admin/network/user-new.php create mode 100644 src/wp-admin/network/users.php create mode 100644 src/wp-admin/options-discussion.php create mode 100644 src/wp-admin/options-general.php create mode 100644 src/wp-admin/options-head.php create mode 100644 src/wp-admin/options-media.php create mode 100644 src/wp-admin/options-permalink.php create mode 100644 src/wp-admin/options-privacy.php create mode 100644 src/wp-admin/options-reading.php create mode 100644 src/wp-admin/options-writing.php create mode 100644 src/wp-admin/options.php create mode 100644 src/wp-admin/plugin-editor.php create mode 100644 src/wp-admin/plugin-install.php create mode 100644 src/wp-admin/plugins.php create mode 100644 src/wp-admin/post-new.php create mode 100644 src/wp-admin/post.php create mode 100644 src/wp-admin/press-this.php create mode 100644 src/wp-admin/profile.php create mode 100644 src/wp-admin/revision.php create mode 100644 src/wp-admin/setup-config.php create mode 100644 src/wp-admin/theme-editor.php create mode 100644 src/wp-admin/theme-install.php create mode 100644 src/wp-admin/themes.php create mode 100644 src/wp-admin/tools.php create mode 100644 src/wp-admin/update-core.php create mode 100644 src/wp-admin/update.php create mode 100644 src/wp-admin/upgrade-functions.php create mode 100644 src/wp-admin/upgrade.php create mode 100644 src/wp-admin/upload.php create mode 100644 src/wp-admin/user-edit.php create mode 100644 src/wp-admin/user-new.php create mode 100644 src/wp-admin/user/admin.php create mode 100644 src/wp-admin/user/index-extra.php create mode 100644 src/wp-admin/user/index.php create mode 100644 src/wp-admin/user/menu.php create mode 100644 src/wp-admin/user/profile.php create mode 100644 src/wp-admin/user/user-edit.php create mode 100644 src/wp-admin/users.php create mode 100644 src/wp-admin/widgets.php create mode 100644 src/wp-app.php create mode 100644 src/wp-atom.php create mode 100644 src/wp-blog-header.php create mode 100644 src/wp-comments-post.php create mode 100644 src/wp-commentsrss2.php create mode 100644 src/wp-config-sample.php create mode 100644 src/wp-config.php create mode 100644 src/wp-content/index.php create mode 100644 src/wp-content/languages/es_ES.mo create mode 100644 src/wp-content/languages/es_ES.po create mode 100644 src/wp-content/languages/ms-es_ES.mo create mode 100644 src/wp-content/languages/ms-es_ES.po create mode 100644 src/wp-content/plugins/akismet/admin.php create mode 100644 src/wp-content/plugins/akismet/akismet.css create mode 100644 src/wp-content/plugins/akismet/akismet.gif create mode 100644 src/wp-content/plugins/akismet/akismet.js create mode 100644 src/wp-content/plugins/akismet/akismet.php create mode 100644 src/wp-content/plugins/akismet/legacy.php create mode 100644 src/wp-content/plugins/akismet/readme.txt create mode 100644 src/wp-content/plugins/akismet/widget.php create mode 100644 src/wp-content/plugins/hello.php create mode 100644 src/wp-content/plugins/index.php create mode 100644 src/wp-content/themes/Broadside/404.php create mode 100644 src/wp-content/themes/Broadside/admin/css/admin-style.css create mode 100644 src/wp-content/themes/Broadside/admin/css/colorpicker.css create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/blank.gif create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_background.png create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_hex.png create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_hsb_b.png create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_hsb_h.png create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_hsb_s.png create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_indic.gif create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_overlay.png create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_rgb_b.png create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_rgb_g.png create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_rgb_r.png create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_select.gif create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_submit.png create mode 100644 src/wp-content/themes/Broadside/admin/images/colorpicker/select.png create mode 100644 src/wp-content/themes/Broadside/admin/images/ico-delete.png create mode 100644 src/wp-content/themes/Broadside/admin/js/colorpicker.js create mode 100644 src/wp-content/themes/Broadside/admin/js/of-medialibrary-uploader.js create mode 100644 src/wp-content/themes/Broadside/admin/js/options-custom.js create mode 100644 src/wp-content/themes/Broadside/admin/options-framework.php create mode 100644 src/wp-content/themes/Broadside/admin/options-interface.php create mode 100644 src/wp-content/themes/Broadside/admin/options-medialibrary-uploader.php create mode 100644 src/wp-content/themes/Broadside/admin/options-sanitize.php create mode 100644 src/wp-content/themes/Broadside/archive.php create mode 100644 src/wp-content/themes/Broadside/author.php create mode 100644 src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.eot create mode 100644 src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.svg create mode 100644 src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.ttf create mode 100644 src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.woff create mode 100644 src/wp-content/themes/Broadside/bebas-neue/Dharma Type Font License.txt create mode 100644 src/wp-content/themes/Broadside/bebas-neue/demo.html create mode 100644 src/wp-content/themes/Broadside/bebas-neue/stylesheet.css create mode 100644 src/wp-content/themes/Broadside/category.php create mode 100644 src/wp-content/themes/Broadside/comments.php create mode 100644 src/wp-content/themes/Broadside/contact.php create mode 100644 src/wp-content/themes/Broadside/css/fancybox.css create mode 100644 src/wp-content/themes/Broadside/css/ie7.css create mode 100644 src/wp-content/themes/Broadside/css/navigation.css create mode 100644 src/wp-content/themes/Broadside/css/orbit-1.2.3.css create mode 100644 src/wp-content/themes/Broadside/css/reset.css create mode 100644 src/wp-content/themes/Broadside/css/standard.css create mode 100644 src/wp-content/themes/Broadside/footer.php create mode 100644 src/wp-content/themes/Broadside/framework/bootstrap.php create mode 100644 src/wp-content/themes/Broadside/framework/metaboxes.php create mode 100644 src/wp-content/themes/Broadside/framework/views/metaboxes/page_options.php create mode 100644 src/wp-content/themes/Broadside/framework/views/metaboxes/portfolio_options.php create mode 100644 src/wp-content/themes/Broadside/framework/views/metaboxes/post_options.php create mode 100644 src/wp-content/themes/Broadside/framework/views/metaboxes/style.php create mode 100644 src/wp-content/themes/Broadside/functions.php create mode 100644 src/wp-content/themes/Broadside/header.php create mode 100644 src/wp-content/themes/Broadside/homepage.php create mode 100644 src/wp-content/themes/Broadside/images/1col.png create mode 100644 src/wp-content/themes/Broadside/images/2cl.png create mode 100644 src/wp-content/themes/Broadside/images/2cr.png create mode 100644 src/wp-content/themes/Broadside/images/arrow-navigation.png create mode 100644 src/wp-content/themes/Broadside/images/arrows-ffffff.png create mode 100644 src/wp-content/themes/Broadside/images/background-dark.jpg create mode 100644 src/wp-content/themes/Broadside/images/background.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/about-background.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/background-image-600tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/background2-image-600tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/background3-image-600tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/background4-image-600tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/blog-background-tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/blog-background.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/company-background.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/contact-background-tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/contact-background.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/img_1.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/img_2.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/img_3.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/img_4.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/news-background-tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/news-background.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/portfolio-background.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/projects-background.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/services-background-tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/backgrounds/services-background.jpg create mode 100644 src/wp-content/themes/Broadside/images/big-button-overlay.png create mode 100644 src/wp-content/themes/Broadside/images/blockquote.png create mode 100644 src/wp-content/themes/Broadside/images/blog-comments.png create mode 100644 src/wp-content/themes/Broadside/images/checkmark.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/blank.gif create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_close.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_loading.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_nav_left.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_nav_right.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_e.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_n.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_ne.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_nw.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_s.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_se.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_sw.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_w.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_title_left.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_title_main.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_title_over.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancy_title_right.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancybox-x.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancybox-y.png create mode 100644 src/wp-content/themes/Broadside/images/fancybox/fancybox.png create mode 100644 src/wp-content/themes/Broadside/images/logo-space.png create mode 100644 src/wp-content/themes/Broadside/images/logo.png create mode 100644 src/wp-content/themes/Broadside/images/nav-arrow.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/arrows-new.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/bullets.jpg create mode 100644 src/wp-content/themes/Broadside/images/orbit/bullets.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/bullets2.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/left-arrow.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/loading.gif create mode 100644 src/wp-content/themes/Broadside/images/orbit/mask-black.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/mask-black2.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/pause-black.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/pause-black2.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/right-arrow.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/rotator-black.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/rotator-black2.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/timer-black.png create mode 100644 src/wp-content/themes/Broadside/images/orbit/timer-black2.png create mode 100644 src/wp-content/themes/Broadside/images/photo-left.jpg create mode 100644 src/wp-content/themes/Broadside/images/photo-right.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/blog-img_2.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/blog-img_3.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/blog-img_4.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/blog-post-image.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/contact-filler.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_1-tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_1.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_2-tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_2.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_3-tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_3.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_4.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_5.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_6.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_7-tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_7.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_8-tall.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/img_8.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/lightbox-thumbnail.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/lightbox.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/minigallery_img1.png create mode 100644 src/wp-content/themes/Broadside/images/portfolio/minigallery_img2.png create mode 100644 src/wp-content/themes/Broadside/images/portfolio/minigallery_img3.png create mode 100644 src/wp-content/themes/Broadside/images/portfolio/minigallery_img4.png create mode 100644 src/wp-content/themes/Broadside/images/portfolio/photo-center-thumbnail.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/photo-center.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/photo-left.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/photo-right.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/portfolio-item1-thumb.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/portfolio-item2-thumb.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/portfolio-item3-thumb.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/portfolio-item4-thumb.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/portfolio-item5-thumb.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/portfolio-item6-thumb.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/portfolio-item7-thumb.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/portfolio-item8-thumb.jpg create mode 100644 src/wp-content/themes/Broadside/images/portfolio/sample_img_2.png create mode 100644 src/wp-content/themes/Broadside/images/portfolio/sample_img_3.png create mode 100644 src/wp-content/themes/Broadside/images/portfolio/sample_img_4.png create mode 100644 src/wp-content/themes/Broadside/images/portfolio/sample_img_5.png create mode 100644 src/wp-content/themes/Broadside/images/portfolio/sample_img_6.png create mode 100644 src/wp-content/themes/Broadside/images/portfolio/services_img_sample_5.png create mode 100644 src/wp-content/themes/Broadside/images/portfolio/video-thumnail.jpg create mode 100644 src/wp-content/themes/Broadside/images/services_img_sample_1.png create mode 100644 src/wp-content/themes/Broadside/images/services_img_sample_2.png create mode 100644 src/wp-content/themes/Broadside/images/services_img_sample_3.png create mode 100644 src/wp-content/themes/Broadside/images/shadow.png create mode 100644 src/wp-content/themes/Broadside/images/sidebar-arrow.png create mode 100644 src/wp-content/themes/Broadside/images/social-icons/email_16.png create mode 100644 src/wp-content/themes/Broadside/images/social-icons/facebook_16.png create mode 100644 src/wp-content/themes/Broadside/images/social-icons/flickr_16.png create mode 100644 src/wp-content/themes/Broadside/images/social-icons/google_16.png create mode 100644 src/wp-content/themes/Broadside/images/social-icons/stumbleupon_16.png create mode 100644 src/wp-content/themes/Broadside/images/social-icons/twitter_16.png create mode 100644 src/wp-content/themes/Broadside/images/social-icons/vimeo_16.png create mode 100644 src/wp-content/themes/Broadside/images/social-icons/youtube_16.png create mode 100644 src/wp-content/themes/Broadside/images/team-member.png create mode 100644 src/wp-content/themes/Broadside/index.php create mode 100644 src/wp-content/themes/Broadside/js/custom-no-hover.js create mode 100644 src/wp-content/themes/Broadside/js/custom.js create mode 100644 src/wp-content/themes/Broadside/js/hoverIntent.js create mode 100644 src/wp-content/themes/Broadside/js/jquery.carouFredSel-4.1.0-packed.js create mode 100644 src/wp-content/themes/Broadside/js/jquery.fancybox.js create mode 100644 src/wp-content/themes/Broadside/js/jquery.jscrollpane.min.js create mode 100644 src/wp-content/themes/Broadside/js/jquery.mousewheel.js create mode 100644 src/wp-content/themes/Broadside/js/jquery.orbit-1.2.3.min.js create mode 100644 src/wp-content/themes/Broadside/js/jquery.validate.min.js create mode 100644 src/wp-content/themes/Broadside/js/superfish.js create mode 100644 src/wp-content/themes/Broadside/options.php create mode 100644 src/wp-content/themes/Broadside/page.php create mode 100644 src/wp-content/themes/Broadside/portfolio-full.php create mode 100644 src/wp-content/themes/Broadside/portfolio-gallery.php create mode 100644 src/wp-content/themes/Broadside/portfolio-scrolling.php create mode 100644 src/wp-content/themes/Broadside/portfolio-thumbnails.php create mode 100644 src/wp-content/themes/Broadside/screenshot.png create mode 100644 src/wp-content/themes/Broadside/services.php create mode 100644 src/wp-content/themes/Broadside/shortcodes.php create mode 100644 src/wp-content/themes/Broadside/single.php create mode 100644 src/wp-content/themes/Broadside/style.css create mode 100644 src/wp-content/themes/Broadside/timthumb.php create mode 100644 src/wp-content/themes/Broadside/tinymce/button-12.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-13.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-14.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-23.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-34.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-arrow.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-badlist.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-button.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-checklist.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-dropcap.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-gameinfo.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-highlight.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-tabs.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-team.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-toggle.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-vimeo.png create mode 100644 src/wp-content/themes/Broadside/tinymce/button-youtube.png create mode 100644 src/wp-content/themes/Broadside/tinymce/customcodes.js create mode 100644 src/wp-content/themes/Broadside/tinymce/soundcloud.png create mode 100644 src/wp-content/themes/Broadside/video.php create mode 100644 src/wp-content/themes/index.php create mode 100644 src/wp-content/themes/twentyeleven/404.php create mode 100644 src/wp-content/themes/twentyeleven/archive.php create mode 100644 src/wp-content/themes/twentyeleven/author.php create mode 100644 src/wp-content/themes/twentyeleven/category.php create mode 100644 src/wp-content/themes/twentyeleven/colors/dark.css create mode 100644 src/wp-content/themes/twentyeleven/comments.php create mode 100644 src/wp-content/themes/twentyeleven/content-aside.php create mode 100644 src/wp-content/themes/twentyeleven/content-featured.php create mode 100644 src/wp-content/themes/twentyeleven/content-gallery.php create mode 100644 src/wp-content/themes/twentyeleven/content-image.php create mode 100644 src/wp-content/themes/twentyeleven/content-intro.php create mode 100644 src/wp-content/themes/twentyeleven/content-link.php create mode 100644 src/wp-content/themes/twentyeleven/content-page.php create mode 100644 src/wp-content/themes/twentyeleven/content-quote.php create mode 100644 src/wp-content/themes/twentyeleven/content-single.php create mode 100644 src/wp-content/themes/twentyeleven/content-status.php create mode 100644 src/wp-content/themes/twentyeleven/content.php create mode 100644 src/wp-content/themes/twentyeleven/editor-style-rtl.css create mode 100644 src/wp-content/themes/twentyeleven/editor-style.css create mode 100644 src/wp-content/themes/twentyeleven/footer.php create mode 100644 src/wp-content/themes/twentyeleven/functions.php create mode 100644 src/wp-content/themes/twentyeleven/header.php create mode 100644 src/wp-content/themes/twentyeleven/image.php create mode 100644 src/wp-content/themes/twentyeleven/images/comment-arrow-bypostauthor-dark-rtl.png create mode 100644 src/wp-content/themes/twentyeleven/images/comment-arrow-bypostauthor-dark.png create mode 100644 src/wp-content/themes/twentyeleven/images/comment-arrow-bypostauthor-rtl.png create mode 100644 src/wp-content/themes/twentyeleven/images/comment-arrow-bypostauthor.png create mode 100644 src/wp-content/themes/twentyeleven/images/comment-arrow-dark-rtl.png create mode 100644 src/wp-content/themes/twentyeleven/images/comment-arrow-dark.png create mode 100644 src/wp-content/themes/twentyeleven/images/comment-arrow-rtl.png create mode 100644 src/wp-content/themes/twentyeleven/images/comment-arrow.png create mode 100644 src/wp-content/themes/twentyeleven/images/comment-bubble-dark-rtl.png create mode 100644 src/wp-content/themes/twentyeleven/images/comment-bubble-dark.png create mode 100644 src/wp-content/themes/twentyeleven/images/comment-bubble-rtl.png create mode 100644 src/wp-content/themes/twentyeleven/images/comment-bubble.png create mode 100644 src/wp-content/themes/twentyeleven/images/headers/chessboard-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/chessboard.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/hanoi-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/hanoi.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/lanterns-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/lanterns.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/pine-cone-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/pine-cone.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/shore-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/shore.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/trolley-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/trolley.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/wheel-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/wheel.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/willow-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/headers/willow.jpg create mode 100644 src/wp-content/themes/twentyeleven/images/search.png create mode 100644 src/wp-content/themes/twentyeleven/images/wordpress.png create mode 100644 src/wp-content/themes/twentyeleven/inc/images/content-sidebar.png create mode 100644 src/wp-content/themes/twentyeleven/inc/images/content.png create mode 100644 src/wp-content/themes/twentyeleven/inc/images/dark.png create mode 100644 src/wp-content/themes/twentyeleven/inc/images/light.png create mode 100644 src/wp-content/themes/twentyeleven/inc/images/sidebar-content.png create mode 100644 src/wp-content/themes/twentyeleven/inc/theme-options.css create mode 100644 src/wp-content/themes/twentyeleven/inc/theme-options.js create mode 100644 src/wp-content/themes/twentyeleven/inc/theme-options.php create mode 100644 src/wp-content/themes/twentyeleven/inc/widgets.php create mode 100644 src/wp-content/themes/twentyeleven/index.php create mode 100644 src/wp-content/themes/twentyeleven/js/html5.js create mode 100644 src/wp-content/themes/twentyeleven/js/showcase.js create mode 100644 src/wp-content/themes/twentyeleven/languages/es_ES.mo create mode 100644 src/wp-content/themes/twentyeleven/languages/es_ES.po create mode 100644 src/wp-content/themes/twentyeleven/languages/twentyeleven.pot create mode 100644 src/wp-content/themes/twentyeleven/license.txt create mode 100644 src/wp-content/themes/twentyeleven/page.php create mode 100644 src/wp-content/themes/twentyeleven/readme.txt create mode 100644 src/wp-content/themes/twentyeleven/rtl.css create mode 100644 src/wp-content/themes/twentyeleven/screenshot.png create mode 100644 src/wp-content/themes/twentyeleven/search.php create mode 100644 src/wp-content/themes/twentyeleven/searchform.php create mode 100644 src/wp-content/themes/twentyeleven/showcase.php create mode 100644 src/wp-content/themes/twentyeleven/sidebar-footer.php create mode 100644 src/wp-content/themes/twentyeleven/sidebar-page.php create mode 100644 src/wp-content/themes/twentyeleven/sidebar.php create mode 100644 src/wp-content/themes/twentyeleven/single.php create mode 100644 src/wp-content/themes/twentyeleven/style.css create mode 100644 src/wp-content/themes/twentyeleven/tag.php create mode 100644 src/wp-content/themes/twentyten/404.php create mode 100644 src/wp-content/themes/twentyten/archive.php create mode 100644 src/wp-content/themes/twentyten/attachment.php create mode 100644 src/wp-content/themes/twentyten/author.php create mode 100644 src/wp-content/themes/twentyten/category.php create mode 100644 src/wp-content/themes/twentyten/comments.php create mode 100644 src/wp-content/themes/twentyten/editor-style-rtl.css create mode 100644 src/wp-content/themes/twentyten/editor-style.css create mode 100644 src/wp-content/themes/twentyten/footer.php create mode 100644 src/wp-content/themes/twentyten/functions.php create mode 100644 src/wp-content/themes/twentyten/header.php create mode 100644 src/wp-content/themes/twentyten/images/headers/berries-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/berries.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/cherryblossoms-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/cherryblossoms.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/concave-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/concave.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/fern-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/fern.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/forestfloor-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/forestfloor.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/inkwell-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/inkwell.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/path-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/path.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/sunset-thumbnail.jpg create mode 100644 src/wp-content/themes/twentyten/images/headers/sunset.jpg create mode 100644 src/wp-content/themes/twentyten/images/wordpress.png create mode 100644 src/wp-content/themes/twentyten/index.php create mode 100644 src/wp-content/themes/twentyten/languages/es_ES.mo create mode 100644 src/wp-content/themes/twentyten/languages/es_ES.po create mode 100644 src/wp-content/themes/twentyten/languages/twentyten.pot create mode 100644 src/wp-content/themes/twentyten/license.txt create mode 100644 src/wp-content/themes/twentyten/loop-attachment.php create mode 100644 src/wp-content/themes/twentyten/loop-page.php create mode 100644 src/wp-content/themes/twentyten/loop-single.php create mode 100644 src/wp-content/themes/twentyten/loop.php create mode 100644 src/wp-content/themes/twentyten/onecolumn-page.php create mode 100644 src/wp-content/themes/twentyten/page.php create mode 100644 src/wp-content/themes/twentyten/rtl.css create mode 100644 src/wp-content/themes/twentyten/screenshot.png create mode 100644 src/wp-content/themes/twentyten/search.php create mode 100644 src/wp-content/themes/twentyten/sidebar-footer.php create mode 100644 src/wp-content/themes/twentyten/sidebar.php create mode 100644 src/wp-content/themes/twentyten/single.php create mode 100644 src/wp-content/themes/twentyten/style.css create mode 100644 src/wp-content/themes/twentyten/tag.php create mode 100644 src/wp-cron.php create mode 100644 src/wp-feed.php create mode 100644 src/wp-includes/Text/Diff.php create mode 100644 src/wp-includes/Text/Diff/Engine/native.php create mode 100644 src/wp-includes/Text/Diff/Engine/shell.php create mode 100644 src/wp-includes/Text/Diff/Engine/string.php create mode 100644 src/wp-includes/Text/Diff/Engine/xdiff.php create mode 100644 src/wp-includes/Text/Diff/Renderer.php create mode 100644 src/wp-includes/Text/Diff/Renderer/inline.php create mode 100644 src/wp-includes/admin-bar.php create mode 100644 src/wp-includes/atomlib.php create mode 100644 src/wp-includes/author-template.php create mode 100644 src/wp-includes/bookmark-template.php create mode 100644 src/wp-includes/bookmark.php create mode 100644 src/wp-includes/cache.php create mode 100644 src/wp-includes/canonical.php create mode 100644 src/wp-includes/capabilities.php create mode 100644 src/wp-includes/category-template.php create mode 100644 src/wp-includes/category.php create mode 100644 src/wp-includes/class-IXR.php create mode 100644 src/wp-includes/class-feed.php create mode 100644 src/wp-includes/class-http.php create mode 100644 src/wp-includes/class-json.php create mode 100644 src/wp-includes/class-oembed.php create mode 100644 src/wp-includes/class-phpass.php create mode 100644 src/wp-includes/class-phpmailer.php create mode 100644 src/wp-includes/class-pop3.php create mode 100644 src/wp-includes/class-simplepie.php create mode 100644 src/wp-includes/class-smtp.php create mode 100644 src/wp-includes/class-snoopy.php create mode 100644 src/wp-includes/class-wp-admin-bar.php create mode 100644 src/wp-includes/class-wp-ajax-response.php create mode 100644 src/wp-includes/class-wp-error.php create mode 100644 src/wp-includes/class-wp-http-ixr-client.php create mode 100644 src/wp-includes/class-wp-walker.php create mode 100644 src/wp-includes/class-wp-xmlrpc-server.php create mode 100644 src/wp-includes/class-wp.php create mode 100644 src/wp-includes/class.wp-dependencies.php create mode 100644 src/wp-includes/class.wp-scripts.php create mode 100644 src/wp-includes/class.wp-styles.php create mode 100644 src/wp-includes/comment-template.php create mode 100644 src/wp-includes/comment.php create mode 100644 src/wp-includes/compat.php create mode 100644 src/wp-includes/cron.php create mode 100644 src/wp-includes/css/admin-bar-rtl.css create mode 100644 src/wp-includes/css/admin-bar-rtl.dev.css create mode 100644 src/wp-includes/css/admin-bar.css create mode 100644 src/wp-includes/css/admin-bar.dev.css create mode 100644 src/wp-includes/css/jquery-ui-dialog.css create mode 100644 src/wp-includes/css/jquery-ui-dialog.dev.css create mode 100644 src/wp-includes/default-constants.php create mode 100644 src/wp-includes/default-filters.php create mode 100644 src/wp-includes/default-widgets.php create mode 100644 src/wp-includes/deprecated.php create mode 100644 src/wp-includes/feed-atom-comments.php create mode 100644 src/wp-includes/feed-atom.php create mode 100644 src/wp-includes/feed-rdf.php create mode 100644 src/wp-includes/feed-rss.php create mode 100644 src/wp-includes/feed-rss2-comments.php create mode 100644 src/wp-includes/feed-rss2.php create mode 100644 src/wp-includes/feed.php create mode 100644 src/wp-includes/formatting.php create mode 100644 src/wp-includes/functions.php create mode 100644 src/wp-includes/functions.wp-scripts.php create mode 100644 src/wp-includes/functions.wp-styles.php create mode 100644 src/wp-includes/general-template.php create mode 100644 src/wp-includes/http.php create mode 100644 src/wp-includes/images/admin-bar-sprite-rtl.png create mode 100644 src/wp-includes/images/admin-bar-sprite.png create mode 100644 src/wp-includes/images/blank.gif create mode 100644 src/wp-includes/images/crystal/archive.png create mode 100644 src/wp-includes/images/crystal/audio.png create mode 100644 src/wp-includes/images/crystal/code.png create mode 100644 src/wp-includes/images/crystal/default.png create mode 100644 src/wp-includes/images/crystal/document.png create mode 100644 src/wp-includes/images/crystal/interactive.png create mode 100644 src/wp-includes/images/crystal/license.txt create mode 100644 src/wp-includes/images/crystal/spreadsheet.png create mode 100644 src/wp-includes/images/crystal/text.png create mode 100644 src/wp-includes/images/crystal/video.png create mode 100644 src/wp-includes/images/rss.png create mode 100644 src/wp-includes/images/smilies/icon_arrow.gif create mode 100644 src/wp-includes/images/smilies/icon_biggrin.gif create mode 100644 src/wp-includes/images/smilies/icon_confused.gif create mode 100644 src/wp-includes/images/smilies/icon_cool.gif create mode 100644 src/wp-includes/images/smilies/icon_cry.gif create mode 100644 src/wp-includes/images/smilies/icon_eek.gif create mode 100644 src/wp-includes/images/smilies/icon_evil.gif create mode 100644 src/wp-includes/images/smilies/icon_exclaim.gif create mode 100644 src/wp-includes/images/smilies/icon_idea.gif create mode 100644 src/wp-includes/images/smilies/icon_lol.gif create mode 100644 src/wp-includes/images/smilies/icon_mad.gif create mode 100644 src/wp-includes/images/smilies/icon_mrgreen.gif create mode 100644 src/wp-includes/images/smilies/icon_neutral.gif create mode 100644 src/wp-includes/images/smilies/icon_question.gif create mode 100644 src/wp-includes/images/smilies/icon_razz.gif create mode 100644 src/wp-includes/images/smilies/icon_redface.gif create mode 100644 src/wp-includes/images/smilies/icon_rolleyes.gif create mode 100644 src/wp-includes/images/smilies/icon_sad.gif create mode 100644 src/wp-includes/images/smilies/icon_smile.gif create mode 100644 src/wp-includes/images/smilies/icon_surprised.gif create mode 100644 src/wp-includes/images/smilies/icon_twisted.gif create mode 100644 src/wp-includes/images/smilies/icon_wink.gif create mode 100644 src/wp-includes/images/upload.png create mode 100644 src/wp-includes/images/wlw/wp-comments.png create mode 100644 src/wp-includes/images/wlw/wp-icon.png create mode 100644 src/wp-includes/images/wlw/wp-watermark.png create mode 100644 src/wp-includes/images/wpmini-blue.png create mode 100644 src/wp-includes/js/admin-bar.dev.js create mode 100644 src/wp-includes/js/admin-bar.js create mode 100644 src/wp-includes/js/autosave.dev.js create mode 100644 src/wp-includes/js/autosave.js create mode 100644 src/wp-includes/js/colorpicker.dev.js create mode 100644 src/wp-includes/js/colorpicker.js create mode 100644 src/wp-includes/js/comment-reply.dev.js create mode 100644 src/wp-includes/js/comment-reply.js create mode 100644 src/wp-includes/js/crop/cropper.css create mode 100644 src/wp-includes/js/crop/cropper.js create mode 100644 src/wp-includes/js/crop/marqueeHoriz.gif create mode 100644 src/wp-includes/js/crop/marqueeVert.gif create mode 100644 src/wp-includes/js/hoverIntent.dev.js create mode 100644 src/wp-includes/js/hoverIntent.js create mode 100644 src/wp-includes/js/imgareaselect/border-anim-h.gif create mode 100644 src/wp-includes/js/imgareaselect/border-anim-v.gif create mode 100644 src/wp-includes/js/imgareaselect/imgareaselect.css create mode 100644 src/wp-includes/js/imgareaselect/jquery.imgareaselect.dev.js create mode 100644 src/wp-includes/js/imgareaselect/jquery.imgareaselect.js create mode 100644 src/wp-includes/js/jcrop/Jcrop.gif create mode 100644 src/wp-includes/js/jcrop/jquery.Jcrop.css create mode 100644 src/wp-includes/js/jcrop/jquery.Jcrop.dev.js create mode 100644 src/wp-includes/js/jcrop/jquery.Jcrop.js create mode 100644 src/wp-includes/js/jquery/jquery.color.dev.js create mode 100644 src/wp-includes/js/jquery/jquery.color.js create mode 100644 src/wp-includes/js/jquery/jquery.form.dev.js create mode 100644 src/wp-includes/js/jquery/jquery.form.js create mode 100644 src/wp-includes/js/jquery/jquery.hotkeys.dev.js create mode 100644 src/wp-includes/js/jquery/jquery.hotkeys.js create mode 100644 src/wp-includes/js/jquery/jquery.js create mode 100644 src/wp-includes/js/jquery/jquery.query.js create mode 100644 src/wp-includes/js/jquery/jquery.schedule.js create mode 100644 src/wp-includes/js/jquery/jquery.serialize-object.js create mode 100644 src/wp-includes/js/jquery/jquery.table-hotkeys.dev.js create mode 100644 src/wp-includes/js/jquery/jquery.table-hotkeys.js create mode 100644 src/wp-includes/js/jquery/suggest.dev.js create mode 100644 src/wp-includes/js/jquery/suggest.js create mode 100644 src/wp-includes/js/jquery/ui.button.js create mode 100644 src/wp-includes/js/jquery/ui.core.js create mode 100644 src/wp-includes/js/jquery/ui.dialog.js create mode 100644 src/wp-includes/js/jquery/ui.draggable.js create mode 100644 src/wp-includes/js/jquery/ui.droppable.js create mode 100644 src/wp-includes/js/jquery/ui.mouse.js create mode 100644 src/wp-includes/js/jquery/ui.position.js create mode 100644 src/wp-includes/js/jquery/ui.resizable.js create mode 100644 src/wp-includes/js/jquery/ui.selectable.js create mode 100644 src/wp-includes/js/jquery/ui.sortable.js create mode 100644 src/wp-includes/js/jquery/ui.tabs.js create mode 100644 src/wp-includes/js/jquery/ui.widget.js create mode 100644 src/wp-includes/js/json2.dev.js create mode 100644 src/wp-includes/js/json2.js create mode 100644 src/wp-includes/js/l10n.dev.js create mode 100644 src/wp-includes/js/l10n.js create mode 100644 src/wp-includes/js/prototype.js create mode 100644 src/wp-includes/js/quicktags.dev.js create mode 100644 src/wp-includes/js/quicktags.js create mode 100644 src/wp-includes/js/scriptaculous/MIT-LICENSE create mode 100644 src/wp-includes/js/scriptaculous/builder.js create mode 100644 src/wp-includes/js/scriptaculous/controls.js create mode 100644 src/wp-includes/js/scriptaculous/dragdrop.js create mode 100644 src/wp-includes/js/scriptaculous/effects.js create mode 100644 src/wp-includes/js/scriptaculous/scriptaculous.js create mode 100644 src/wp-includes/js/scriptaculous/slider.js create mode 100644 src/wp-includes/js/scriptaculous/sound.js create mode 100644 src/wp-includes/js/scriptaculous/unittest.js create mode 100644 src/wp-includes/js/scriptaculous/wp-scriptaculous.js create mode 100644 src/wp-includes/js/swfobject.js create mode 100644 src/wp-includes/js/swfupload/handlers.dev.js create mode 100644 src/wp-includes/js/swfupload/handlers.js create mode 100644 src/wp-includes/js/swfupload/license.txt create mode 100644 src/wp-includes/js/swfupload/plugins/swfupload.cookies.js create mode 100644 src/wp-includes/js/swfupload/plugins/swfupload.queue.js create mode 100644 src/wp-includes/js/swfupload/plugins/swfupload.speed.js create mode 100644 src/wp-includes/js/swfupload/plugins/swfupload.swfobject.js create mode 100644 src/wp-includes/js/swfupload/swfupload-all.js create mode 100644 src/wp-includes/js/swfupload/swfupload.js create mode 100644 src/wp-includes/js/swfupload/swfupload.swf create mode 100644 src/wp-includes/js/thickbox/loadingAnimation.gif create mode 100644 src/wp-includes/js/thickbox/macFFBgHack.png create mode 100644 src/wp-includes/js/thickbox/tb-close.png create mode 100644 src/wp-includes/js/thickbox/thickbox.css create mode 100644 src/wp-includes/js/thickbox/thickbox.js create mode 100644 src/wp-includes/js/tinymce/langs/wp-langs-en.js create mode 100644 src/wp-includes/js/tinymce/langs/wp-langs.php create mode 100644 src/wp-includes/js/tinymce/license.txt create mode 100644 src/wp-includes/js/tinymce/plugins/directionality/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/fullscreen/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/fullscreen/fullscreen.htm create mode 100644 src/wp-includes/js/tinymce/plugins/inlinepopups/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif create mode 100644 src/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif create mode 100644 src/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif create mode 100644 src/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif create mode 100644 src/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif create mode 100644 src/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/drag.gif create mode 100644 src/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif create mode 100644 src/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif create mode 100644 src/wp-includes/js/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css create mode 100644 src/wp-includes/js/tinymce/plugins/inlinepopups/template.htm create mode 100644 src/wp-includes/js/tinymce/plugins/media/css/media.css create mode 100644 src/wp-includes/js/tinymce/plugins/media/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/media/js/embed.js create mode 100644 src/wp-includes/js/tinymce/plugins/media/js/media.js create mode 100644 src/wp-includes/js/tinymce/plugins/media/media.htm create mode 100644 src/wp-includes/js/tinymce/plugins/media/moxieplayer.swf create mode 100644 src/wp-includes/js/tinymce/plugins/paste/blank.htm create mode 100644 src/wp-includes/js/tinymce/plugins/paste/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/paste/js/pastetext.js create mode 100644 src/wp-includes/js/tinymce/plugins/paste/js/pasteword.js create mode 100644 src/wp-includes/js/tinymce/plugins/paste/pastetext.htm create mode 100644 src/wp-includes/js/tinymce/plugins/paste/pasteword.htm create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/changelog.txt create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/classes/EnchantSpell.php create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/classes/GoogleSpell.php create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/classes/PSpell.php create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/classes/PSpellShell.php create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/classes/SpellChecker.php create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/classes/utils/JSON.php create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/classes/utils/Logger.php create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/config.php create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/css/content.css create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/img/wline.gif create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/includes/general.php create mode 100644 src/wp-includes/js/tinymce/plugins/spellchecker/rpc.php create mode 100644 src/wp-includes/js/tinymce/plugins/tabfocus/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/wordpress/css/content.css create mode 100644 src/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.dev.js create mode 100644 src/wp-includes/js/tinymce/plugins/wordpress/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/wordpress/img/audio.gif create mode 100644 src/wp-includes/js/tinymce/plugins/wordpress/img/embedded.png create mode 100644 src/wp-includes/js/tinymce/plugins/wordpress/img/image.gif create mode 100644 src/wp-includes/js/tinymce/plugins/wordpress/img/media.gif create mode 100644 src/wp-includes/js/tinymce/plugins/wordpress/img/more_bug.gif create mode 100644 src/wp-includes/js/tinymce/plugins/wordpress/img/page.gif create mode 100644 src/wp-includes/js/tinymce/plugins/wordpress/img/page_bug.gif create mode 100644 src/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif create mode 100644 src/wp-includes/js/tinymce/plugins/wordpress/img/video.gif create mode 100644 src/wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.dev.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpdialogs/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpdialogs/js/popup.dev.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpdialogs/js/popup.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog.dev.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpdialogs/js/wpdialog.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage-rtl.css create mode 100644 src/wp-includes/js/tinymce/plugins/wpeditimage/css/editimage.css create mode 100644 src/wp-includes/js/tinymce/plugins/wpeditimage/editimage.html create mode 100644 src/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.dev.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpeditimage/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpeditimage/img/delete.png create mode 100644 src/wp-includes/js/tinymce/plugins/wpeditimage/img/image.png create mode 100644 src/wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.dev.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpeditimage/js/editimage.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpfullscreen/css/wp-fullscreen.css create mode 100644 src/wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin.dev.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpfullscreen/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.dev.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpgallery/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/wpgallery/img/delete.png create mode 100644 src/wp-includes/js/tinymce/plugins/wpgallery/img/edit.png create mode 100644 src/wp-includes/js/tinymce/plugins/wpgallery/img/gallery.png create mode 100644 src/wp-includes/js/tinymce/plugins/wpgallery/img/t.gif create mode 100644 src/wp-includes/js/tinymce/plugins/wplink/css/wplink-rtl.css create mode 100644 src/wp-includes/js/tinymce/plugins/wplink/css/wplink-rtl.dev.css create mode 100644 src/wp-includes/js/tinymce/plugins/wplink/css/wplink.css create mode 100644 src/wp-includes/js/tinymce/plugins/wplink/css/wplink.dev.css create mode 100644 src/wp-includes/js/tinymce/plugins/wplink/editor_plugin.dev.js create mode 100644 src/wp-includes/js/tinymce/plugins/wplink/editor_plugin.js create mode 100644 src/wp-includes/js/tinymce/plugins/wplink/img/toggle-arrow.png create mode 100644 src/wp-includes/js/tinymce/plugins/wplink/js/wplink.dev.js create mode 100644 src/wp-includes/js/tinymce/plugins/wplink/js/wplink.js create mode 100644 src/wp-includes/js/tinymce/themes/advanced/about.htm create mode 100644 src/wp-includes/js/tinymce/themes/advanced/anchor.htm create mode 100644 src/wp-includes/js/tinymce/themes/advanced/charmap.htm create mode 100644 src/wp-includes/js/tinymce/themes/advanced/color_picker.htm create mode 100644 src/wp-includes/js/tinymce/themes/advanced/editor_template.js create mode 100644 src/wp-includes/js/tinymce/themes/advanced/image.htm create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/colorpicker.jpg create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/flash.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/gotmoxie.png create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/icons.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/iframe.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/pagebreak.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/quicktime.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/realmedia.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/shockwave.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/trans.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/video.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/windowsmedia.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/img/wpicons.png create mode 100644 src/wp-includes/js/tinymce/themes/advanced/js/about.js create mode 100644 src/wp-includes/js/tinymce/themes/advanced/js/anchor.js create mode 100644 src/wp-includes/js/tinymce/themes/advanced/js/charmap.js create mode 100644 src/wp-includes/js/tinymce/themes/advanced/js/color_picker.js create mode 100644 src/wp-includes/js/tinymce/themes/advanced/js/image.js create mode 100644 src/wp-includes/js/tinymce/themes/advanced/js/link.js create mode 100644 src/wp-includes/js/tinymce/themes/advanced/js/source_editor.js create mode 100644 src/wp-includes/js/tinymce/themes/advanced/link.htm create mode 100644 src/wp-includes/js/tinymce/themes/advanced/shortcuts.htm create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/default/content.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/default/dialog.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/default/img/buttons.png create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/default/img/items.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/default/img/menu_arrow.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/default/img/menu_check.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/default/img/progress.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/default/img/tabs.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/default/ui.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/highcontrast/content.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/highcontrast/dialog.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/highcontrast/ui.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/o2k7/content.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/o2k7/dialog.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/o2k7/img/button_bg.png create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/o2k7/img/button_bg_black.png create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/o2k7/img/button_bg_silver.png create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui_black.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/o2k7/ui_silver.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/content.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/dialog.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/butt2.png create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/button_bg.png create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/down_arrow.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/fade-butt.png create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/separator.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/img/tabs.gif create mode 100644 src/wp-includes/js/tinymce/themes/advanced/skins/wp_theme/ui.css create mode 100644 src/wp-includes/js/tinymce/themes/advanced/source_editor.htm create mode 100644 src/wp-includes/js/tinymce/tiny_mce.js create mode 100644 src/wp-includes/js/tinymce/tiny_mce_popup.js create mode 100644 src/wp-includes/js/tinymce/utils/editable_selects.js create mode 100644 src/wp-includes/js/tinymce/utils/form_utils.js create mode 100644 src/wp-includes/js/tinymce/utils/mctabs.js create mode 100644 src/wp-includes/js/tinymce/utils/validate.js create mode 100644 src/wp-includes/js/tinymce/wp-mce-help.php create mode 100644 src/wp-includes/js/tinymce/wp-tinymce.js.gz create mode 100644 src/wp-includes/js/tinymce/wp-tinymce.php create mode 100644 src/wp-includes/js/tw-sack.dev.js create mode 100644 src/wp-includes/js/tw-sack.js create mode 100644 src/wp-includes/js/wp-ajax-response.dev.js create mode 100644 src/wp-includes/js/wp-ajax-response.js create mode 100644 src/wp-includes/js/wp-list-revisions.dev.js create mode 100644 src/wp-includes/js/wp-list-revisions.js create mode 100644 src/wp-includes/js/wp-lists.dev.js create mode 100644 src/wp-includes/js/wp-lists.js create mode 100644 src/wp-includes/kses.php create mode 100644 src/wp-includes/l10n.php create mode 100644 src/wp-includes/link-template.php create mode 100644 src/wp-includes/load.php create mode 100644 src/wp-includes/locale.php create mode 100644 src/wp-includes/media.php create mode 100644 src/wp-includes/meta.php create mode 100644 src/wp-includes/ms-blogs.php create mode 100644 src/wp-includes/ms-default-constants.php create mode 100644 src/wp-includes/ms-default-filters.php create mode 100644 src/wp-includes/ms-deprecated.php create mode 100644 src/wp-includes/ms-files.php create mode 100644 src/wp-includes/ms-functions.php create mode 100644 src/wp-includes/ms-load.php create mode 100644 src/wp-includes/ms-settings.php create mode 100644 src/wp-includes/nav-menu-template.php create mode 100644 src/wp-includes/nav-menu.php create mode 100644 src/wp-includes/pluggable-deprecated.php create mode 100644 src/wp-includes/pluggable.php create mode 100644 src/wp-includes/plugin.php create mode 100644 src/wp-includes/pomo/entry.php create mode 100644 src/wp-includes/pomo/mo.php create mode 100644 src/wp-includes/pomo/po.php create mode 100644 src/wp-includes/pomo/streams.php create mode 100644 src/wp-includes/pomo/translations.php create mode 100644 src/wp-includes/post-template.php create mode 100644 src/wp-includes/post-thumbnail-template.php create mode 100644 src/wp-includes/post.php create mode 100644 src/wp-includes/query.php create mode 100644 src/wp-includes/registration-functions.php create mode 100644 src/wp-includes/registration.php create mode 100644 src/wp-includes/rewrite.php create mode 100644 src/wp-includes/rss-functions.php create mode 100644 src/wp-includes/rss.php create mode 100644 src/wp-includes/script-loader.php create mode 100644 src/wp-includes/shortcodes.php create mode 100644 src/wp-includes/taxonomy.php create mode 100644 src/wp-includes/template-loader.php create mode 100644 src/wp-includes/theme-compat/comments-popup.php create mode 100644 src/wp-includes/theme-compat/comments.php create mode 100644 src/wp-includes/theme-compat/footer.php create mode 100644 src/wp-includes/theme-compat/header.php create mode 100644 src/wp-includes/theme-compat/sidebar.php create mode 100644 src/wp-includes/theme.php create mode 100644 src/wp-includes/update.php create mode 100644 src/wp-includes/user.php create mode 100644 src/wp-includes/vars.php create mode 100644 src/wp-includes/version.php create mode 100644 src/wp-includes/widgets.php create mode 100644 src/wp-includes/wlwmanifest.xml create mode 100644 src/wp-includes/wp-db.php create mode 100644 src/wp-includes/wp-diff.php create mode 100644 src/wp-links-opml.php create mode 100644 src/wp-load.php create mode 100644 src/wp-login.php create mode 100644 src/wp-mail.php create mode 100644 src/wp-pass.php create mode 100644 src/wp-rdf.php create mode 100644 src/wp-register.php create mode 100644 src/wp-rss.php create mode 100644 src/wp-rss2.php create mode 100644 src/wp-settings.php create mode 100644 src/wp-signup.php create mode 100644 src/wp-trackback.php create mode 100644 src/xmlrpc.php diff --git a/db/instaldeco.sql b/db/instaldeco.sql new file mode 100644 index 0000000..c420c5a --- /dev/null +++ b/db/instaldeco.sql @@ -0,0 +1,514 @@ +-- phpMyAdmin SQL Dump +-- version 3.3.9 +-- http://www.phpmyadmin.net +-- +-- Servidor: localhost +-- Tiempo de generación: 23-09-2011 a las 17:13:52 +-- Versión del servidor: 5.1.53 +-- Versión de PHP: 5.3.4 + +SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; + +-- +-- Base de datos: `instaldeco` +-- + +-- -------------------------------------------------------- + +-- +-- Estructura de tabla para la tabla `wp_commentmeta` +-- + +CREATE TABLE IF NOT EXISTS `wp_commentmeta` ( + `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `comment_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `meta_key` varchar(255) DEFAULT NULL, + `meta_value` longtext, + PRIMARY KEY (`meta_id`), + KEY `comment_id` (`comment_id`), + KEY `meta_key` (`meta_key`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- +-- Volcar la base de datos para la tabla `wp_commentmeta` +-- + + +-- -------------------------------------------------------- + +-- +-- Estructura de tabla para la tabla `wp_comments` +-- + +CREATE TABLE IF NOT EXISTS `wp_comments` ( + `comment_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `comment_post_ID` bigint(20) unsigned NOT NULL DEFAULT '0', + `comment_author` tinytext NOT NULL, + `comment_author_email` varchar(100) NOT NULL DEFAULT '', + `comment_author_url` varchar(200) NOT NULL DEFAULT '', + `comment_author_IP` varchar(100) NOT NULL DEFAULT '', + `comment_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `comment_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `comment_content` text NOT NULL, + `comment_karma` int(11) NOT NULL DEFAULT '0', + `comment_approved` varchar(20) NOT NULL DEFAULT '1', + `comment_agent` varchar(255) NOT NULL DEFAULT '', + `comment_type` varchar(20) NOT NULL DEFAULT '', + `comment_parent` bigint(20) unsigned NOT NULL DEFAULT '0', + `user_id` bigint(20) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`comment_ID`), + KEY `comment_approved` (`comment_approved`), + KEY `comment_post_ID` (`comment_post_ID`), + KEY `comment_approved_date_gmt` (`comment_approved`,`comment_date_gmt`), + KEY `comment_date_gmt` (`comment_date_gmt`), + KEY `comment_parent` (`comment_parent`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; + +-- +-- Volcar la base de datos para la tabla `wp_comments` +-- + +INSERT INTO `wp_comments` (`comment_ID`, `comment_post_ID`, `comment_author`, `comment_author_email`, `comment_author_url`, `comment_author_IP`, `comment_date`, `comment_date_gmt`, `comment_content`, `comment_karma`, `comment_approved`, `comment_agent`, `comment_type`, `comment_parent`, `user_id`) VALUES +(1, 1, 'Sr WordPress', '', 'http://wordpress.org/', '', '2011-09-23 17:04:51', '2011-09-23 17:04:51', 'Hola, esto es un comentario.
Para borrar un comentario sólo tienes que entrar y ver los comentarios de la entrada. Entonces tendrás la opción de editar o borrar.', 0, '1', '', '', 0, 0); + +-- -------------------------------------------------------- + +-- +-- Estructura de tabla para la tabla `wp_links` +-- + +CREATE TABLE IF NOT EXISTS `wp_links` ( + `link_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `link_url` varchar(255) NOT NULL DEFAULT '', + `link_name` varchar(255) NOT NULL DEFAULT '', + `link_image` varchar(255) NOT NULL DEFAULT '', + `link_target` varchar(25) NOT NULL DEFAULT '', + `link_description` varchar(255) NOT NULL DEFAULT '', + `link_visible` varchar(20) NOT NULL DEFAULT 'Y', + `link_owner` bigint(20) unsigned NOT NULL DEFAULT '1', + `link_rating` int(11) NOT NULL DEFAULT '0', + `link_updated` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `link_rel` varchar(255) NOT NULL DEFAULT '', + `link_notes` mediumtext NOT NULL, + `link_rss` varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (`link_id`), + KEY `link_visible` (`link_visible`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ; + +-- +-- Volcar la base de datos para la tabla `wp_links` +-- + +INSERT INTO `wp_links` (`link_id`, `link_url`, `link_name`, `link_image`, `link_target`, `link_description`, `link_visible`, `link_owner`, `link_rating`, `link_updated`, `link_rel`, `link_notes`, `link_rss`) VALUES +(1, 'http://codex.wordpress.org/', 'Documentation', '', '', '', 'Y', 1, 0, '0000-00-00 00:00:00', '', '', ''), +(2, 'http://wordpress.org/news/', 'WordPress Blog', '', '', '', 'Y', 1, 0, '0000-00-00 00:00:00', '', '', 'http://wordpress.org/news/feed/'), +(3, 'http://wordpress.org/extend/ideas/', 'Suggest Ideas', '', '', '', 'Y', 1, 0, '0000-00-00 00:00:00', '', '', ''), +(4, 'http://wordpress.org/support/', 'Support Forum', '', '', '', 'Y', 1, 0, '0000-00-00 00:00:00', '', '', ''), +(5, 'http://wordpress.org/extend/plugins/', 'Plugins', '', '', '', 'Y', 1, 0, '0000-00-00 00:00:00', '', '', ''), +(6, 'http://wordpress.org/extend/themes/', 'Themes', '', '', '', 'Y', 1, 0, '0000-00-00 00:00:00', '', '', ''), +(7, 'http://planet.wordpress.org/', 'WordPress Planet', '', '', '', 'Y', 1, 0, '0000-00-00 00:00:00', '', '', ''); + +-- -------------------------------------------------------- + +-- +-- Estructura de tabla para la tabla `wp_options` +-- + +CREATE TABLE IF NOT EXISTS `wp_options` ( + `option_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `blog_id` int(11) NOT NULL DEFAULT '0', + `option_name` varchar(64) NOT NULL DEFAULT '', + `option_value` longtext NOT NULL, + `autoload` varchar(20) NOT NULL DEFAULT 'yes', + PRIMARY KEY (`option_id`), + UNIQUE KEY `option_name` (`option_name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=160 ; + +-- +-- Volcar la base de datos para la tabla `wp_options` +-- + +INSERT INTO `wp_options` (`option_id`, `blog_id`, `option_name`, `option_value`, `autoload`) VALUES +(1, 0, 'siteurl', 'http://localhost/instaldeco', 'yes'), +(2, 0, 'blogname', 'Instaldeco', 'yes'), +(3, 0, 'blogdescription', 'Otro sitio realizado con WordPress', 'yes'), +(4, 0, 'users_can_register', '0', 'yes'), +(5, 0, 'admin_email', 'darranz@rodax-software.com', 'yes'), +(6, 0, 'start_of_week', '1', 'yes'), +(7, 0, 'use_balanceTags', '0', 'yes'), +(8, 0, 'use_smilies', '1', 'yes'), +(9, 0, 'require_name_email', '1', 'yes'), +(10, 0, 'comments_notify', '1', 'yes'), +(11, 0, 'posts_per_rss', '10', 'yes'), +(12, 0, 'rss_use_excerpt', '0', 'yes'), +(13, 0, 'mailserver_url', 'mail.example.com', 'yes'), +(14, 0, 'mailserver_login', 'login@example.com', 'yes'), +(15, 0, 'mailserver_pass', 'password', 'yes'), +(16, 0, 'mailserver_port', '110', 'yes'), +(17, 0, 'default_category', '1', 'yes'), +(18, 0, 'default_comment_status', 'open', 'yes'), +(19, 0, 'default_ping_status', 'open', 'yes'), +(20, 0, 'default_pingback_flag', '1', 'yes'), +(21, 0, 'default_post_edit_rows', '20', 'yes'), +(22, 0, 'posts_per_page', '10', 'yes'), +(23, 0, 'date_format', 'j F, Y', 'yes'), +(24, 0, 'time_format', 'G:i', 'yes'), +(25, 0, 'links_updated_date_format', 'j F, Y G:i', 'yes'), +(26, 0, 'links_recently_updated_prepend', '', 'yes'), +(27, 0, 'links_recently_updated_append', '', 'yes'), +(28, 0, 'links_recently_updated_time', '120', 'yes'), +(29, 0, 'comment_moderation', '0', 'yes'), +(30, 0, 'moderation_notify', '1', 'yes'), +(31, 0, 'permalink_structure', '', 'yes'), +(32, 0, 'gzipcompression', '0', 'yes'), +(33, 0, 'hack_file', '0', 'yes'), +(34, 0, 'blog_charset', 'UTF-8', 'yes'), +(35, 0, 'moderation_keys', '', 'no'), +(36, 0, 'active_plugins', 'a:0:{}', 'yes'), +(37, 0, 'home', 'http://localhost/instaldeco', 'yes'), +(38, 0, 'category_base', '', 'yes'), +(39, 0, 'ping_sites', 'http://rpc.pingomatic.com/', 'yes'), +(40, 0, 'advanced_edit', '0', 'yes'), +(41, 0, 'comment_max_links', '2', 'yes'), +(42, 0, 'gmt_offset', '0', 'yes'), +(43, 0, 'default_email_category', '1', 'yes'), +(44, 0, 'recently_edited', '', 'no'), +(45, 0, 'template', 'Broadside', 'yes'), +(46, 0, 'stylesheet', 'Broadside', 'yes'), +(47, 0, 'comment_whitelist', '1', 'yes'), +(48, 0, 'blacklist_keys', '', 'no'), +(49, 0, 'comment_registration', '0', 'yes'), +(50, 0, 'rss_language', 'en', 'yes'), +(51, 0, 'html_type', 'text/html', 'yes'), +(52, 0, 'use_trackback', '0', 'yes'), +(53, 0, 'default_role', 'subscriber', 'yes'), +(54, 0, 'db_version', '18226', 'yes'), +(55, 0, 'uploads_use_yearmonth_folders', '1', 'yes'), +(56, 0, 'upload_path', '', 'yes'), +(57, 0, 'blog_public', '1', 'yes'), +(58, 0, 'default_link_category', '2', 'yes'), +(59, 0, 'show_on_front', 'posts', 'yes'), +(60, 0, 'tag_base', '', 'yes'), +(61, 0, 'show_avatars', '1', 'yes'), +(62, 0, 'avatar_rating', 'G', 'yes'), +(63, 0, 'upload_url_path', '', 'yes'), +(64, 0, 'thumbnail_size_w', '150', 'yes'), +(65, 0, 'thumbnail_size_h', '150', 'yes'), +(66, 0, 'thumbnail_crop', '1', 'yes'), +(67, 0, 'medium_size_w', '300', 'yes'), +(68, 0, 'medium_size_h', '300', 'yes'), +(69, 0, 'avatar_default', 'mystery', 'yes'), +(70, 0, 'enable_app', '0', 'yes'), +(71, 0, 'enable_xmlrpc', '0', 'yes'), +(72, 0, 'large_size_w', '1024', 'yes'), +(73, 0, 'large_size_h', '1024', 'yes'), +(74, 0, 'image_default_link_type', 'file', 'yes'), +(75, 0, 'image_default_size', '', 'yes'), +(76, 0, 'image_default_align', '', 'yes'), +(77, 0, 'close_comments_for_old_posts', '0', 'yes'), +(78, 0, 'close_comments_days_old', '14', 'yes'), +(79, 0, 'thread_comments', '1', 'yes'), +(80, 0, 'thread_comments_depth', '5', 'yes'), +(81, 0, 'page_comments', '0', 'yes'), +(82, 0, 'comments_per_page', '50', 'yes'), +(83, 0, 'default_comments_page', 'newest', 'yes'), +(84, 0, 'comment_order', 'asc', 'yes'), +(85, 0, 'sticky_posts', 'a:0:{}', 'yes'), +(86, 0, 'widget_categories', 'a:2:{i:2;a:4:{s:5:"title";s:0:"";s:5:"count";i:0;s:12:"hierarchical";i:0;s:8:"dropdown";i:0;}s:12:"_multiwidget";i:1;}', 'yes'), +(87, 0, 'widget_text', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes'), +(88, 0, 'widget_rss', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes'), +(89, 0, 'timezone_string', '', 'yes'), +(90, 0, 'embed_autourls', '1', 'yes'), +(91, 0, 'embed_size_w', '', 'yes'), +(92, 0, 'embed_size_h', '600', 'yes'), +(93, 0, 'page_for_posts', '0', 'yes'), +(94, 0, 'page_on_front', '0', 'yes'), +(95, 0, 'default_post_format', '0', 'yes'), +(96, 0, 'wp_user_roles', 'a:5:{s:13:"administrator";a:2:{s:4:"name";s:13:"Administrator";s:12:"capabilities";a:62:{s:13:"switch_themes";b:1;s:11:"edit_themes";b:1;s:16:"activate_plugins";b:1;s:12:"edit_plugins";b:1;s:10:"edit_users";b:1;s:10:"edit_files";b:1;s:14:"manage_options";b:1;s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:6:"import";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:8:"level_10";b:1;s:7:"level_9";b:1;s:7:"level_8";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;s:12:"delete_users";b:1;s:12:"create_users";b:1;s:17:"unfiltered_upload";b:1;s:14:"edit_dashboard";b:1;s:14:"update_plugins";b:1;s:14:"delete_plugins";b:1;s:15:"install_plugins";b:1;s:13:"update_themes";b:1;s:14:"install_themes";b:1;s:11:"update_core";b:1;s:10:"list_users";b:1;s:12:"remove_users";b:1;s:9:"add_users";b:1;s:13:"promote_users";b:1;s:18:"edit_theme_options";b:1;s:13:"delete_themes";b:1;s:6:"export";b:1;}}s:6:"editor";a:2:{s:4:"name";s:6:"Editor";s:12:"capabilities";a:34:{s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;}}s:6:"author";a:2:{s:4:"name";s:6:"Author";s:12:"capabilities";a:10:{s:12:"upload_files";b:1;s:10:"edit_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:4:"read";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;s:22:"delete_published_posts";b:1;}}s:11:"contributor";a:2:{s:4:"name";s:11:"Contributor";s:12:"capabilities";a:5:{s:10:"edit_posts";b:1;s:4:"read";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;}}s:10:"subscriber";a:2:{s:4:"name";s:10:"Subscriber";s:12:"capabilities";a:2:{s:4:"read";b:1;s:7:"level_0";b:1;}}}', 'yes'), +(97, 0, 'widget_search', 'a:2:{i:2;a:1:{s:5:"title";s:0:"";}s:12:"_multiwidget";i:1;}', 'yes'), +(98, 0, 'widget_recent-posts', 'a:2:{i:2;a:2:{s:5:"title";s:0:"";s:6:"number";i:5;}s:12:"_multiwidget";i:1;}', 'yes'), +(99, 0, 'widget_recent-comments', 'a:2:{i:2;a:2:{s:5:"title";s:0:"";s:6:"number";i:5;}s:12:"_multiwidget";i:1;}', 'yes'), +(100, 0, 'widget_archives', 'a:2:{i:2;a:3:{s:5:"title";s:0:"";s:5:"count";i:0;s:8:"dropdown";i:0;}s:12:"_multiwidget";i:1;}', 'yes'), +(101, 0, 'widget_meta', 'a:2:{i:2;a:1:{s:5:"title";s:0:"";}s:12:"_multiwidget";i:1;}', 'yes'), +(102, 0, 'sidebars_widgets', 'a:8:{s:19:"wp_inactive_widgets";a:0:{}s:19:"primary-widget-area";a:6:{i:0;s:8:"search-2";i:1;s:14:"recent-posts-2";i:2;s:17:"recent-comments-2";i:3;s:10:"archives-2";i:4;s:12:"categories-2";i:5;s:6:"meta-2";}s:21:"secondary-widget-area";a:0:{}s:24:"first-footer-widget-area";a:0:{}s:25:"second-footer-widget-area";a:0:{}s:24:"third-footer-widget-area";a:0:{}s:25:"fourth-footer-widget-area";a:0:{}s:13:"array_version";i:3;}', 'yes'), +(103, 0, 'cron', 'a:3:{i:1316840695;a:3:{s:16:"wp_version_check";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}s:17:"wp_update_plugins";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}s:16:"wp_update_themes";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:10:"twicedaily";s:4:"args";a:0:{}s:8:"interval";i:43200;}}}i:1316883906;a:1:{s:19:"wp_scheduled_delete";a:1:{s:32:"40cd750bba9870f18aada2478b24840a";a:3:{s:8:"schedule";s:5:"daily";s:4:"args";a:0:{}s:8:"interval";i:86400;}}}s:7:"version";i:2;}', 'yes'), +(104, 0, '_transient_doing_cron', '1316797649', 'yes'), +(116, 0, '_site_transient_timeout_browser_4f512b96d61e54437d052ed0b03eb8c5', '1317402305', 'yes'), +(105, 0, '_site_transient_update_core', 'O:8:"stdClass":3:{s:7:"updates";a:2:{i:0;O:8:"stdClass":9:{s:8:"response";s:6:"latest";s:8:"download";s:49:"http://es.wordpress.org/wordpress-3.2.1-es_ES.zip";s:6:"locale";s:5:"es_ES";s:8:"packages";O:8:"stdClass":4:{s:4:"full";s:49:"http://es.wordpress.org/wordpress-3.2.1-es_ES.zip";s:10:"no_content";b:0;s:11:"new_bundled";b:0;s:7:"partial";b:0;}s:7:"current";s:5:"3.2.1";s:11:"php_version";s:5:"5.2.4";s:13:"mysql_version";s:3:"5.0";s:11:"new_bundled";s:3:"3.2";s:15:"partial_version";s:0:"";}i:1;O:8:"stdClass":9:{s:8:"response";s:6:"latest";s:8:"download";s:40:"http://wordpress.org/wordpress-3.2.1.zip";s:6:"locale";s:5:"en_US";s:8:"packages";O:8:"stdClass":4:{s:4:"full";s:40:"http://wordpress.org/wordpress-3.2.1.zip";s:10:"no_content";s:51:"http://wordpress.org/wordpress-3.2.1-no-content.zip";s:11:"new_bundled";s:52:"http://wordpress.org/wordpress-3.2.1-new-bundled.zip";s:7:"partial";b:0;}s:7:"current";s:5:"3.2.1";s:11:"php_version";s:5:"5.2.4";s:13:"mysql_version";s:3:"5.0";s:11:"new_bundled";s:3:"3.2";s:15:"partial_version";s:0:"";}}s:12:"last_checked";i:1316797656;s:15:"version_checked";s:5:"3.2.1";}', 'yes'), +(106, 0, '_site_transient_update_plugins', 'O:8:"stdClass":3:{s:12:"last_checked";i:1316797503;s:7:"checked";a:2:{s:19:"akismet/akismet.php";s:5:"2.5.3";s:9:"hello.php";s:3:"1.6";}s:8:"response";a:0:{}}', 'yes'), +(107, 0, 'widget_pages', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes'), +(108, 0, 'widget_calendar', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes'), +(109, 0, 'widget_links', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes'), +(110, 0, 'widget_tag_cloud', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes'), +(111, 0, 'widget_nav_menu', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes'), +(112, 0, 'widget_widget_twentyeleven_ephemera', 'a:2:{i:2;a:0:{}s:12:"_multiwidget";i:1;}', 'yes'), +(113, 0, '_site_transient_timeout_theme_roots', '1316804703', 'yes'), +(114, 0, '_site_transient_theme_roots', 'a:3:{s:9:"Broadside";s:7:"/themes";s:12:"twentyeleven";s:7:"/themes";s:9:"twentyten";s:7:"/themes";}', 'yes'), +(115, 0, '_site_transient_update_themes', 'O:8:"stdClass":3:{s:12:"last_checked";i:1316797505;s:7:"checked";a:3:{s:9:"Broadside";s:3:"1.0";s:12:"twentyeleven";s:3:"1.2";s:9:"twentyten";s:3:"1.2";}s:8:"response";a:0:{}}', 'yes'), +(117, 0, '_site_transient_browser_4f512b96d61e54437d052ed0b03eb8c5', 'a:9:{s:8:"platform";s:7:"Windows";s:4:"name";s:7:"Firefox";s:7:"version";s:5:"6.0.2";s:10:"update_url";s:23:"http://www.firefox.com/";s:7:"img_src";s:50:"http://s.wordpress.org/images/browsers/firefox.png";s:11:"img_src_ssl";s:49:"https://wordpress.org/images/browsers/firefox.png";s:15:"current_version";s:1:"6";s:7:"upgrade";b:0;s:8:"insecure";b:0;}', 'yes'), +(118, 0, 'dashboard_widget_options', 'a:4:{s:25:"dashboard_recent_comments";a:1:{s:5:"items";i:5;}s:24:"dashboard_incoming_links";a:5:{s:4:"home";s:27:"http://localhost/instaldeco";s:4:"link";s:103:"http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:http://localhost/instaldeco/";s:3:"url";s:136:"http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=10&output=rss&partner=wordpress&q=link:http://localhost/instaldeco/";s:5:"items";i:10;s:9:"show_date";b:0;}s:17:"dashboard_primary";a:7:{s:4:"link";s:26:"http://wordpress.org/news/";s:3:"url";s:31:"http://wordpress.org/news/feed/";s:5:"title";s:22:"Blog oficial WordPress";s:5:"items";i:2;s:12:"show_summary";i:1;s:11:"show_author";i:0;s:9:"show_date";i:1;}s:19:"dashboard_secondary";a:7:{s:4:"link";s:28:"http://planet.wordpress.org/";s:3:"url";s:33:"http://planet.wordpress.org/feed/";s:5:"title";s:30:"Otras noticias sobre WordPress";s:5:"items";i:5;s:12:"show_summary";i:0;s:11:"show_author";i:0;s:9:"show_date";i:0;}}', 'yes'), +(157, 0, 'current_theme', 'Broadside', 'yes'), +(120, 0, 'can_compress_scripts', '1', 'yes'), +(121, 0, '_transient_timeout_feed_d54818a85854ebcb9b5357c7d7c038bf', '1316840707', 'no'), +(122, 0, '_transient_feed_d54818a85854ebcb9b5357c7d7c038bf', 'a:4:{s:5:"child";a:1:{s:0:"";a:1:{s:3:"rss";a:1:{i:0;a:6:{s:4:"data";s:4:"\n \n";s:7:"attribs";a:1:{s:0:"";a:1:{s:7:"version";s:3:"2.0";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:1:{s:7:"channel";a:1:{i:0;a:6:{s:4:"data";s:33:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:3:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:54:"link:http://localhost/instaldeco/ - Google Blog Search";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:91:"http://www.google.com/search?ie=utf-8&q=link:http://localhost/instaldeco/&tbm=blg&tbs=sbd:1";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:87:"Your search - link:http://localhost/instaldeco/ - did not match any documents. ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://a9.com/-/spec/opensearch/1.1/";a:3:{s:12:"totalResults";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:10:"startIndex";a:1:{i:0;a:5:{s:4:"data";s:1:"1";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:12:"itemsPerPage";a:1:{i:0;a:5:{s:4:"data";s:2:"10";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:7:{s:12:"content-type";s:28:"text/xml; charset=ISO-8859-1";s:4:"date";s:29:"Fri, 23 Sep 2011 17:05:11 GMT";s:7:"expires";s:2:"-1";s:13:"cache-control";s:18:"private, max-age=0";s:10:"set-cookie";a:2:{i:0;s:143:"PREF=ID=87a31538b20a40a2:FF=0:TM=1316797511:LM=1316797511:S=JgZ9fHYWPUzTah0u; expires=Sun, 22-Sep-2013 17:05:11 GMT; path=/; domain=.google.com";i:1;s:212:"NID=51=MImeqNX-cUSLFsY8wtS-gW19OltvZpAPzu7nCxesWsOUpd9eTejP4M-CfBq2sw1BmNIJTpOyR62cWld10ZWlZfhG5gKVrq5y57MrjsrPG0uZRgSIsxNZqYrkd8T1Fcgi; expires=Sat, 24-Mar-2012 17:05:11 GMT; path=/; domain=.google.com; HttpOnly";}s:6:"server";s:3:"gws";s:16:"x-xss-protection";s:13:"1; mode=block";}s:5:"build";s:14:"20090627192103";}', 'no'), +(123, 0, '_transient_timeout_feed_mod_d54818a85854ebcb9b5357c7d7c038bf', '1316840707', 'no'), +(124, 0, '_transient_feed_mod_d54818a85854ebcb9b5357c7d7c038bf', '1316797507', 'no'), +(125, 0, '_transient_timeout_dash_20494a3d90a6669585674ed0eb8dcd8f', '1316840707', 'no'), +(126, 0, '_transient_dash_20494a3d90a6669585674ed0eb8dcd8f', '

Este widget de escritorio consulta a la Búsqueda de blogs de Google de modo que cuando otro blog enlace a su sitio se mostrará aquí. No se ha encontrado ningún enlace entrante… aún. Está bien, no hay prisa.

\n', 'no'), +(127, 0, '_transient_timeout_feed_ac0b00fe65abe10e0c5b588f3ed8c7ca', '1316840708', 'no'); +INSERT INTO `wp_options` (`option_id`, `blog_id`, `option_name`, `option_value`, `autoload`) VALUES +(128, 0, '_transient_feed_ac0b00fe65abe10e0c5b588f3ed8c7ca', 'a:4:{s:5:"child";a:1:{s:0:"";a:1:{s:3:"rss";a:1:{i:0;a:6:{s:4:"data";s:3:"\n\n\n";s:7:"attribs";a:1:{s:0:"";a:1:{s:7:"version";s:3:"2.0";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:1:{s:7:"channel";a:1:{i:0;a:6:{s:4:"data";s:50:"\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:3:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:14:"WordPress News";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:25:"http://wordpress.org/news";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:14:"WordPress News";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:13:"lastBuildDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 16 Sep 2011 15:08:48 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"language";a:1:{i:0;a:5:{s:4:"data";s:2:"en";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:9:"generator";a:1:{i:0;a:5:{s:4:"data";s:45:"http://wordpress.org/?v=3.3-aortic-dissection";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"item";a:10:{i:0;a:6:{s:4:"data";s:56:"\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:32:"Software Freedom Day + Hackathon";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:65:"http://wordpress.org/news/2011/09/software-freedom-day-hackathon/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:74:"http://wordpress.org/news/2011/09/software-freedom-day-hackathon/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 15 Sep 2011 07:33:56 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:6:{i:0;a:5:{s:4:"data";s:9:"Community";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:11:"Development";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:6:"Events";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:7:"Testing";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:8:"WordCamp";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:5;a:5:{s:4:"data";s:7:"bughunt";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:33:"http://wordpress.org/news/?p=2058";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:359:"Saturday, September 17 is Software Freedom Day. To that end, a few announcements about this weekend’s hackathon and WordCamp Portland. 3.3 Hackathon WordPress 3.3 is about to hit feature freeze. This means it’s the last chance to squeeze in features that haven’t quite been finished, and enhancements and fixes that no one has had time [...]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Jane Wells";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:3772:"

Saturday, September 17 is Software Freedom Day. To that end, a few announcements about this weekend’s hackathon and WordCamp Portland.

\n

3.3 Hackathon

\n

WordPress 3.3 is about to hit feature freeze. This means it’s the last chance to squeeze in features that haven’t quite been finished, and enhancements and fixes that no one has had time to address yet. Around this time, there are often dozens of tickets that have patches, but the patches have not been tested enough to be committed to core. Then the contributors who worked hard on the patches are disappointed that their code doesn’t make it into the current release. You can help us prevent this!

\n

This weekend, we’ll be running a has-patch needs-testing marathon for the 3.3 milestone. Basically, we’re looking for people who can help test patches and/or refresh patches that need updating. Lead developers and core contributors will be hanging around in the #wordpress-dev channel on irc.freenode.net to answer questions as needed, and will be committing patches as they get enough verification. As you test the patches, report your findings on the trac tickets in question. If all developers who make a living working with WordPress helped out for even an hour or two this weekend, we could clear the 200 tickets or so that are in this situation. To make it fun, why not get together with other WordPress devs and have an in-person hackathon meetup?

\n

WordCamp Portland

\n

At WordCamp Portland this weekend, some of the WordPress core team will be in attendance, including me, Nacin, and Koop. In addition to giving presentations and participating in the unconference sessions, we’ll be involved with a couple of other cool things at WCPDX:

\n\n

So, if you live it the Portland/Seattle area and haven’t already bought a ticket to attend WordCamp Portland, hurry up, as it’s going to be a great celebration of Software Freedom Day and WordPress.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:70:"http://wordpress.org/news/2011/09/software-freedom-day-hackathon/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:47:"\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:23:"A Tale of Two WordCamps";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:58:"http://wordpress.org/news/2011/09/a-tale-of-two-wordcamps/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:67:"http://wordpress.org/news/2011/09/a-tale-of-two-wordcamps/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 14 Sep 2011 21:17:08 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:3:{i:0;a:5:{s:4:"data";s:9:"Community";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:6:"Events";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:8:"WordCamp";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:33:"http://wordpress.org/news/?p=2057";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:380:"This coming weekend, two WordCamps will be going on simultaneously — yep, it’s WordCamp season again! This weekend will be the first of many this autumn with multiple WordCamps. Tomorrow (not quite the weekend but close enough) is WordCamp Cape Town, and then this weekend, first-time WordCamp Albuquerque coincides with 4-time returning champ WordCamp Portland, [...]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Jane Wells";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:3683:"

This coming weekend, two WordCamps will be going on simultaneously — yep, it’s WordCamp season again! This weekend will be the first of many this autumn with multiple WordCamps. Tomorrow (not quite the weekend but close enough) is WordCamp Cape Town, and then this weekend, first-time WordCamp Albuquerque coincides with 4-time returning champ WordCamp Portland, a cool juxtaposition of a more established local community with one that is just getting started. If you’re anywhere near the Portland area, you should try to attend. The WordPress Foundation will be sponsoring some special activities around Software Freedom Day, and some members of the core team (me, Nacin, Koop) will be there.

\n

Is there a WordCamp coming up near you? Let’s find out!

\n

Sep 15: WordCamp Cape Town Cape Town, South Africa

\n

Sep 16-18: WordCamp Albuquerque Albuquerque, NM

\n

Sep 17-18: WordCamp Portland Portland, OR

\n

Sep 24: WordCamp Lisboa Lisboa, Portugal

\n

Sep 24: WordCamp Germany Koln, Germany

\n

Sep 25: WordCamp Sofia Sofia, Bulgaria

\n

Oct 1: WordCamp Louisville Louisville, Kentucky

\n

Oct 8-9: WordCamp Sevilla Seville, Spain

\n
\n

Oct 15-16: WordCamp Jabalpur Jabalpur, India

\n

Nov 5-6: WordCamp Toronto Toronto, ON

\n

Nov 5-6: WordCamp Gold Coast Gold Coast, Australia

\n

Nov 5-6: WordCamp Philly Philadelphia, PA

\n

Nov 12: WordCamp Caguas Caguas, Puerto Rico

\n

Nov 12-13: WordCamp Kenya Nairobi, Kenya

\n

Nov 12-13: WordCamp Detroit Detroit, MI

\n

Nov 12: WordCamp Richmond Richmond, VA

\n

Nov 12-13: WordCamp Denmark Copenhagen, Denmark

\n

Dec 17: WordCamp Las Vegas Las Vegas, NV

\n

Feb 3-4 WordCamp Atlanta Atlanta, GA

\n

There are also a number of WordCamps still in the early organizing stage that do not yet have dates set. These include: Ft. Wayne, IN; London, UK; Edmonton, Canada; Baku, Azerbaijan; Oslo, Norway; Sacramento, CA;  Birmingham, Alabama; Pittsburgh, PA; Omaha, NE; Orlando, FL; Tokyo, Japan; Paris, France; Zagreb, Croatia; Nashville, TN, Washington DC, Baltimore, MD; Bangkok, Thailand; Istanbul, Turkey.

\n

Hope to see you soon at a WordCamp near you!

\n


\n

\n
\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:63:"http://wordpress.org/news/2011/09/a-tale-of-two-wordcamps/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:2;a:6:{s:4:"data";s:47:"\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:35:"Vote for WordPress Sessions at SXSW";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:58:"http://wordpress.org/news/2011/09/vote-for-wordpress-sxsw/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:67:"http://wordpress.org/news/2011/09/vote-for-wordpress-sxsw/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 02 Sep 2011 04:45:03 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:3:{i:0;a:5:{s:4:"data";s:9:"Community";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:11:"conferences";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:4:"sxsw";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:33:"http://wordpress.org/news/?p=2036";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:302:"Each year, members of the web community from around the world submit session proposals to the South by Southwest Interactive conference, an event that played a role in the birth of WordPress. We head to Austin every year, do a BBQ or throw a party, but despite the fact that almost 15% of the web [...]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Jane Wells";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:6289:"

Each year, members of the web community from around the world submit session proposals to the South by Southwest Interactive conference, an event that played a role in the birth of WordPress. We head to Austin every year, do a BBQ or throw a party, but despite the fact that almost 15% of the web is powered by WordPress, there aren’t many sessions related to WordPress on the schedule. This year, more than 3200 proposals are competing for about 350 slots, and who has time to read through, vote, and comment on 3200 proposals? Out of those 3200+ proposals, only 8 relate to WordPress! I thought it would be handy to post a guide to the WordPressy proposals for SXSWi 2012, so that if you would like to check them out and vote on them it woud be fast and easy. Leaving a comment in addition to your thumbs up/down vote helps the staff and advisory board know which sessions are likely to have an interested audience, so make sure to leave comments on the sessions you think would be cool (remember, they also publish the podcasts afterward). Voting ends in about 24 hours, so if you want to weigh in, now’s the time. Thanks for helping spread the word!

\n

WordPress-specific Sessions

\n

This list is based on searching for “WordPress” in proposal titles, descriptions, and tags. Clicking the proposal title will take you to that page in the SXSW PanelPicker, where you can vote and comment. Names that are linked go to those people’s WordPress.org profiles.

\n

Blog Wars: Movable Type vs. WordPress Revisited

\n

Mark Jaquith – WordPress Lead Developer
\nByrne Reese – Endevver
\nThese days people tend to pit us against Drupal rather than Movable Type, but looking back at the early rivalry and learning from the positive and negative aspects of it would be cool as we position ourselves in competition with new platforms. I like seeing Mark present at conferences, he always prepares well and does a good job. Though I’m guessing these guys will be all friendly and collaborative, I might take a nostalgia hit and imagine them in a fistfight just to liven things up.

\n

Designing WordPress

\n

Jane Wells – WordPress User Experience Lead
\nDisclosure: This is me! Balancing the desire for truly open and participatory design processes against the often more efficient and consistent results of a more curated design method is something we’ve been working on for the past year or so in WordPress core. I’d use the design process for several recent core features (like the UI refresh and internal linking) to illustrate the issues we’ve faced and the results we’ve achieved.

\n

Open Source Social Networking

\n

John James Jacoby – BuddyPress Lead Developer
\nJ-trip (as John James Jacoby is fondly known by many in the community) is the lead dev for BuddyPress and the new bbPress plugin. He’s proposing a panel discussion among reps from several open source social network platforms. It’s always cool hearing more about BuddyPress, but it would be even cooler to figure out how it fits in with and/or stacks up against other platforms.

\n

Welcome to the Chaos – the Distributed Workplace

\n

Nikolay Bachiyski – WordPress Core Developer, GlotPress Lead Developer
\nLori McLeese – Automattic
\nThis one isn’t about WordPress per se, though using WordPress as a communication tool is one of the topics and Automattic is obviously a WordPress-based business. The main reason I think people should vote for this session is because Nikolay, core committing developer for internationalization and lead developer of GlotPress, our translation tool, is an awesome speaker. He is hysterically funny when he presents. I would bet money this presentation will involve a bear.

\n

Deploying WordPress: From Zero to Ninja

\n

Grant Norwood – Michael & Susan Dell Foundation
\nWhen Mark Jaquith says a presentation on security and deployment is on his short list, I’m impressed. (He said it in the comments on the proposal.)

\n

Beyond the Theme – Using WordPress as an API

\n

David Tufts – kickpress.org
\nObviously a hot topic in the community right now, seems like a no-brainer to choose.

\n

Local Government Online: WordPress Beats Drupal

\n

Jase Wilson – Luminopolis
\nThere was a presentation at WordCamp San Francisco this month on moving a news site from Drupal to WordPress. More and more the question comes up of which tool is best for various situations and requirements. And obviously getting government to use more open source software would be a cost-saver in these tough economic times.

\n

WordPress website built live in 45 minutes

\n

Glenn Todd – Dvize Creative
\nLive walkthroughs are always fun, and help prove to the uninitiated how easy WordPress can be.

\n

So: go vote on these session proposals and help spread the WordPress love. If you know of any WordPress-related proposals that didn’t come up in my search, let me know in a comment and I’ll update this post. Thanks, and maybe we’ll see you in Austin in March!

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:63:"http://wordpress.org/news/2011/09/vote-for-wordpress-sxsw/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:3;a:6:{s:4:"data";s:44:"\n \n \n \n \n \n \n \n\n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:17:"State of the Word";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:52:"http://wordpress.org/news/2011/08/state-of-the-word/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:61:"http://wordpress.org/news/2011/08/state-of-the-word/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 19 Aug 2011 15:32:04 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:2:{i:0;a:5:{s:4:"data";s:9:"Community";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:4:"Meta";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:33:"http://wordpress.org/news/?p=2019";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:307:"This has been an exciting year for WordPress. We’ve grown to power 14.7% of the top million websites in the world, up from 8.5%, and the latest data show 22 out of every 100 new active domains in the US are running WordPress. We also conducted our first ever user and developer survey, which got [...]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:14:"Matt Mullenweg";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:2043:"

This has been an exciting year for WordPress. We’ve grown to power 14.7% of the top million websites in the world, up from 8.5%, and the latest data show 22 out of every 100 new active domains in the US are running WordPress.

\n

We also conducted our first ever user and developer survey, which got over 18,000 responses from all over the world:

\n

\n

We found a few interesting tidbits from the survey responses already, including that 6,800 self-employed respondents were responsible for over 170,000 sites personally, and charged a median hourly rate of $50. In tough economic times, it’s heartening to see Open Source creating so many jobs. (If each site took only 3 hours to make, that’s $29.5M of work at the average hourly rate.)

\n

I talk about this data, and much more, in my State of the Word address which you can watch here:

\n

\n

We know there’s more good stuff hidden in there and we’re open sourcing and releasing the raw information behind it. If you’re a researcher and would like to dig into the anonymized survey data yourself, you can grab it here. (Careful, it’s a 9MB CSV.)

\n

There has never been a better time to be part of the WordPress community, and I want to thank each and every one of you for making it such a wonderful place to be. Now it’s time to get back to work, there’s still 85.3% of the web that needs help.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:57:"http://wordpress.org/news/2011/08/state-of-the-word/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:4;a:6:{s:4:"data";s:44:"\n \n \n \n \n \n \n \n\n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:23:"WordCamp SF Livestream!";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://wordpress.org/news/2011/08/wordcamp-sf-livestream/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:66:"http://wordpress.org/news/2011/08/wordcamp-sf-livestream/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 12 Aug 2011 08:38:03 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:2:{i:0;a:5:{s:4:"data";s:9:"Community";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:8:"WordCamp";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:33:"http://wordpress.org/news/?p=2012";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:342:"The annual WordPress conference, WordCamp San Francisco, starts in fewer than 8 hours. The sold out event — three full days of programming for bloggers, developers, theme designers, and professional WordPress users — will be shared with more than 1,000 ticket holders from near and far. If you are one of the many people who [...]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Jane Wells";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:2414:"

The annual WordPress conference, WordCamp San Francisco, starts in fewer than 8 hours. The sold out event — three full days of programming for bloggers, developers, theme designers, and professional WordPress users — will be shared with more than 1,000 ticket holders from near and far. If you are one of the many people who wanted to come but couldn’t swing the time off or travel expenses, you should check out the livestream tickets that are for sale. You can even get a conference t-shirt to commemorate your “virtual” participation.

\n

Speakers include members of the WordPress core development team, leaders of WordPress-based businesses, hobbyists, and everything in between. Take a look at the schedules for Friday, Saturday, and Sunday, and if you see something that sounds interesting (how could you not?), buy a livestream ticket. The stream will start at 16:00 UTC on Friday, August 12.

\n

Viewing Parties

\n

Celebrate your own local WordPress community by calling together some friends and having a livestream viewing party. In the case of regular WordPress meetup groups, if you do a viewing party we will have a process after #WCSF is over whereby attendees will be eligible to buy conference shirts if their meetup group organizer confirms viewing party attendance.

\n

Videos from all the recorded sessions will be posted for free on WordPress.tv within a couple of weeks, but watching the livestream allows you to support WordCamp while providing instant gratification. And let’s face it: the best part is that you’ll know what the heck people are talking about on Twitter using the hashtag #wcsf.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:62:"http://wordpress.org/news/2011/08/wordcamp-sf-livestream/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:5;a:6:{s:4:"data";s:44:"\n \n \n \n \n \n \n \n\n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:23:"Best WordCamp Speakers?";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://wordpress.org/news/2011/07/best-wordcamp-speakers/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:66:"http://wordpress.org/news/2011/07/best-wordcamp-speakers/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sat, 16 Jul 2011 21:32:34 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:2:{i:0;a:5:{s:4:"data";s:9:"Community";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:8:"WordCamp";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:33:"http://wordpress.org/news/?p=2000";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:357:"As we complete speaker selection for the annual WordPress conference (a.k.a. WordCamp San Francisco), it’s clear that even though there were more than 200 speaker applications, many great WordCamp speakers did not apply. No fear! We will seek them out to make sure that WordCamp SF has a fantastic lineup, including people who didn’t apply [...]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Jane Wells";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:1600:"

As we complete speaker selection for the annual WordPress conference (a.k.a. WordCamp San Francisco), it’s clear that even though there were more than 200 speaker applications, many great WordCamp speakers did not apply. No fear! We will seek them out to make sure that WordCamp SF has a fantastic lineup, including people who didn’t apply (too shy? who knows?) but have wowed local crowds at previous WordCamps.

\n

This is about as basic a survey as there is. Tell us the three best WordCamp presentations you saw in the past year or so. For each, give the presenters name, the topic (exact title not necessary) and which WordCamp it was at (important).

\n

Example:

\n

1. Joe Shmoe, Using the Loop, WordCamp Sheboygan 2011
\n2. Jane Doe, Top 5 WordPress Plugins, WordCamp La Mancha 2010
\n3. Lee Smith, Your First Core Patch, WordCamp Atlantis 2011

\n

That’s it. We don’t need your name or any info at all, just your three top speaker votes. We’ll take a look at the people with the most votes, and consider them for WCSF if they’re not already in the application pool. Thanks for your help in making this year’s conference better and more WordPressy than ever.

\n

Vote Now!

\n

P.S. Have you bought your tickets yet?

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:62:"http://wordpress.org/news/2011/07/best-wordcamp-speakers/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:6;a:6:{s:4:"data";s:41:"\n \n \n \n \n \n \n\n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:15:"WordPress 3.2.1";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:50:"http://wordpress.org/news/2011/07/wordpress-3-2-1/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:59:"http://wordpress.org/news/2011/07/wordpress-3-2-1/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 12 Jul 2011 19:49:06 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:8:"Releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:33:"http://wordpress.org/news/?p=1982";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:358:"After more than a million downloads of WordPress 3.2, we’re now releasing WordPress 3.2.1 into the wild. This maintenance release fixes a server incompatibility related to JSON that’s unfortunately affected some of you, as well as a few other fixes in the new dashboard design and the Twenty Eleven theme. If you’ve already updated to [...]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:12:"Andrew Nacin";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:1129:"

After more than a million downloads of WordPress 3.2, we’re now releasing WordPress 3.2.1 into the wild. This maintenance release fixes a server incompatibility related to JSON that’s unfortunately affected some of you, as well as a few other fixes in the new dashboard design and the Twenty Eleven theme. If you’ve already updated to 3.2, then this update will be even faster than usual, thanks to the new feature in 3.2 that only updates files that have been changed, rather than replacing all the files in your installation.

\n

For a full list of fixes, view the changelog the list of tickets. Our release haiku:

\n

JSON, the admin
\nA little bit tidier
\nEdge cases covered

\n

Download 3.2.1 or update now from the Dashboard → Updates menu in your site’s admin area.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:55:"http://wordpress.org/news/2011/07/wordpress-3-2-1/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:7;a:6:{s:4:"data";s:41:"\n \n \n \n \n \n \n\n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:27:"WordPress 3.2 now available";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:43:"http://wordpress.org/news/2011/07/gershwin/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:52:"http://wordpress.org/news/2011/07/gershwin/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 04 Jul 2011 21:07:06 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:1:{i:0;a:5:{s:4:"data";s:8:"Releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:33:"http://wordpress.org/news/?p=1924";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:329:"Here in the U.S. we are observing Independence Day, and I can’t think of a more fitting way to mark a day that celebrates freedom than by releasing more free software to help democratize publishing around the globe. I’m excited to announce that WordPress 3.2 is now available to the world, both as an update in [...]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:14:"Matt Mullenweg";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:14127:"

Here in the U.S. we are observing Independence Day, and I can’t think of a more fitting way to mark a day that celebrates freedom than by releasing more free software to help democratize publishing around the globe. I’m excited to announce that WordPress 3.2 is now available to the world, both as an update in your dashboard and a download on WordPress.org. Version 3.2 is our fifteenth major release of WordPress and comes just four months after 3.1 (which coincidentally just passed the 15 million download mark this morning), reflecting the growing speed of development in the WordPress community and our dedication to getting improvements in your hands as soon as possible. We’re dedicating this release to noted composer and pianist George Gershwin.

\n

Before we get to the release, in anticipation of the State of the Word speech at the upcoming WordCamp San Francisco (the annual WordPress conference) we’re doing a survey or census of the WordPress world. If you have a moment, please fill out this survey and we’ll share what we learn by publishing the aggregate results in August.

\n

The focus for this release was making WordPress faster and lighter. The first thing you’ll notice when you log in to 3.2 is a refreshed dashboard design that tightens the typography, design, and code behind the admin. (Rhapsody in Grey?) If you’re starting a new blog, you’ll also appreciate the fully HTML5 new Twenty Eleven theme, fulfilling our plan to replace the default theme every year. Start writing your first post in our redesigned post editor and venture to the full-screen button in the editing toolbar to enter the new distraction-free writing or zen mode, my personal favorite feature of the release. All of the widgets, menus, buttons, and interface elements fade away to allow you to compose and edit your thoughts in a completely clean environment conducive to writing, but when your mouse strays to the top of the screen your most-used shortcuts are right there where you need them. (I like to press F11 to take my browser full-screen, getting rid of even the OS chrome.)

\n

\n

Under the hood there have been a number of improvements, not the least of which is the streamlining enabled by our previously announced plan of retiring support for PHP4, older versions of MySQL, and legacy browsers like IE6, which allows us to take advantage of more features enabled by new technologies. The admin bar has a few more shortcuts to your most commonly-used actions. On the comment moderation screen, the new approve & reply feature speeds up your conversation management. You’ll notice in your first update after 3.2 that we’ll only be updating the files that have changed with each new release instead of every file in your WordPress installation, which makes updates significantly faster on all hosting platforms. There are also some fun new theme features shown off by Twenty Eleven, like the ability to have multiple rotating header images to highlight all of your favorite photos.

\n

There is way more, like our new freedoms and credits screens (linked from your dashboard footer), so for the full story check out the Codex page on 3.2 or the Trac milestone which includes the 400+ tickets closed in this release.

\n

A Community Effort

\n

We now finally have a credits page inside of WordPress itself (though a cool revision is coming in 3.3), but for posterity let’s give a round of applause to these fine folks who contributed to 3.2:

\n

Aaron Brazell, Aaron Campbell, Aaron Jorbin, Adam Harley, Alex Concha, ampt, Andrew Nacin, Andrew Ozz, andrewryno, andy, Austin Matzko, BenChapman, Ben Dunkle, bluntelk, Boone Gorges, Brandon Allen, Brandon Burke, Caspie, cfinke, charlesclarkson, chexee, coffee2code, Cristi Burcă, daniloercoli, Daryl Koopersmith, David Cowgill, David Trower, demetris, Devin Reams, Dion Hulse, dllh, Dominik Schilling, Doug Provencio, dvwallin, Dylan Kuhn, Eric Mann, fabifott, Franklin Tse, Frumph, garyc40, Glenn Ansley, guyn, hakre, hebbet, Helen Hou-Sandi, hew, holizz, Ian Stewart, Jacob Gillespie, Jane Wells, Jayjdk, Jeff Farthing, Joachim Kudish, joelhardi, John Blackbourn, John Ford, John James Jacoby, JohnONolan, Jon Cave, joostdevalk, Jorge Bernal, Joseph Scott, Justin Sternberg, Justin Tadlock, kevinB, Knut Sparhell, kovshenin, Kuraishi, Lance Willett, linuxologos, lloydbudd, Luc De Brouwer, marcis20, Mark Jaquith, Mark McWilliams, Martin Lormes, Matías Ventura, Matt Martz, Matt Thomas, MattyRob, mcepl, mdawaffe, Michael Fields, MichaelH, michaeltyson, Mike Schroder, Milan Dinić, mintindeed, mitchoyoshitaka, Mohammad Jangda, mrroundhill, natecook, nathanrice, Niall Kennedy, Nick Bohle, Nikolay Bachiyski, nuxwin, Otto, pavelevap, pete.mall, Peter Westwood, Prasath Nadarajah, Ptah Dunbar, Rafael Poveda, Rahe, Ramiy, Rasheed Bydousi, Reuben Gunday, Robert Chapin, Ron Rennick, Ross Hanney, Ryan Boren, Ryan Imel, Safirul Alredha, Samir Shah, saracannon, sbressler, Sergey Biryukov, shakenstirred, Sidney Harrell, Simon Prosser, sorich87, szadok, tetele, tigertech, trepmal, Utkarsh Kukreti, valentinas, webduo, Xavier Borderie, Yoav Farhi, Ze Fontainhas, and ziofix.

\n

Bonus: On their WordPress.org profiles over 20,000 people have said they make their living from WordPress. Are you one of them? Don’t forget to take a minute for our survey.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:48:"http://wordpress.org/news/2011/07/gershwin/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:8;a:6:{s:4:"data";s:53:"\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:32:"Are You Ready for WordPress 3.2?";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:66:"http://wordpress.org/news/2011/07/are-you-ready-for-wordpress-3-2/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:75:"http://wordpress.org/news/2011/07/are-you-ready-for-wordpress-3-2/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 03 Jul 2011 23:32:26 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:5:{i:0;a:5:{s:4:"data";s:7:"Hosting";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:12:"health check";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:2;a:5:{s:4:"data";s:20:"minimum requirements";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:3;a:5:{s:4:"data";s:5:"MySQL";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:4;a:5:{s:4:"data";s:3:"PHP";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:33:"http://wordpress.org/news/?p=1952";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:312:"WordPress 3.2 is going to be released very soon, and we want you to be ready! Take note: the minimum requirements are changing. PHP and MySQL As of 3.2, you’ll need to be running PHP 5.2.4 and MySQL 5.0. As we mentioned almost a year ago when we announced that this change was coming, the percentage [...]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Jane Wells";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:4342:"

WordPress 3.2 is going to be released very soon, and we want you to be ready! Take note: the minimum requirements are changing.

\n

PHP and MySQL

\n

As of 3.2, you’ll need to be running PHP 5.2.4 and MySQL 5.0. As we mentioned almost a year ago when we announced that this change was coming, the percentage of people running older versions of PHP and MySQL is relatively low. With more than 45 million people using WordPress, though, even a small percentage can mean a lot of people! Don’t caught with your pants dashboard down — make sure you’re running compatible versions of PHP and MySQL before you update tomorrow when WordPress 3.2 is released.

\n

Log in to your hosting account, and check to make sure you have at least  PHP 5.2.4 and MySQL 5.0. Most of the major hosts already default to these or newer versions, but there are some exceptions. Check to see which versions you are running, and if you’re still on an older version, it should be as simple as changing a dropdown menu and clicking Save to get up to date.

\n

If you don’t know how to find this information in your hosting account or you don’t even know how to access your hosting control panel because someone else manages that for you, don’t fret. You can find out if you’re ready for 3.2 with the Health Check plugin. In your dashboard, go to Plugins → Add New and search for “health check” (it should be the first result). Install it, activate it, and it will tell you if you need to update anything.

\n

If you need more help, contact your host’s customer service and use this email template to ask them to help you.

\n

Hi there. I host my domain [example.com] with you, and I run WordPress on my site. The minimum requirements are changing to PHP 5.2.4 and MySQL 5.0, and I would appreciate your help in confirming that my site’s setup meets these requirements. If I’m currently running an older version of PHP or MySQL, could you update it for me, or tell me how to do it? Thanks so much!

\n

If your host replies that they can’t update to these versions, it might be time to look for a new host.

\n

IE6 and Outdated Browsers

\n

With 3.2, we’re also dropping support for Internet Explorer 6, a 10-years-old outdated browser that even Microsoft is ready to leave behind. From now on, if you access your WordPress dashboard from an outdated browser, we’ll let you know. Why? Because as web technology improves, so does WordPress, as we build features to take advantage of these improvements. If you’re using an out-of-date browser, chances are you’re missing out.

\n

If your browser is out of date, you’ll see a friendly orangey-yellow box in your dashboard letting you know you a newer version is available (which you can dismiss, of course). If you’re using IE6, though, the box will be red, and your dashboard will not function properly. If you’re stuck on IE6 because the computer you use is maintained by a business, library, school, or the like, and you are not able to download a newer browser, here’s a sample email you can use to ask your boss/administrator/IT guys to update the browser.

\n

Hi there. The computer I use at [where you use the computer] is equipped with an out-of-date web browser. Internet Explorer 6 was created 10 years ago, before modern web standards, and does not support modern web applications. More and more sites and applications are dropping support for IE6, including the new version of WordPress. Even Microsoft, the makers of IE6, are counting down until IE6 goes the way of the dinosaur (see http://www.ie6countdown.com/ for more information). Can you please install an updated version of IE or any modern browser (see http://browsehappy.com for more information) on the available computers? Thank you very much.

\n

Welcome to the future!

\n

 

\n

 

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:71:"http://wordpress.org/news/2011/07/are-you-ready-for-wordpress-3-2/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:9;a:6:{s:4:"data";s:44:"\n \n \n \n \n \n \n \n\n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:5:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:45:"WordPress 3.1.4 (and 3.2 Release Candidate 3)";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:50:"http://wordpress.org/news/2011/06/wordpress-3-1-4/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:59:"http://wordpress.org/news/2011/06/wordpress-3-1-4/#comments";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 29 Jun 2011 19:00:40 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"category";a:2:{i:0;a:5:{s:4:"data";s:8:"Releases";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}i:1;a:5:{s:4:"data";s:8:"Security";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:33:"http://wordpress.org/news/?p=1927";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:368:"WordPress 3.1.4 is available now and is a maintenance and security update for all previous versions. This release fixes an issue that could allow a malicious Editor-level user to gain further access to the site. Thanks K. Gudinavicius of SEC Consult for bringing this to our attention. Version 3.1.4 also incorporates several other security fixes and hardening [...]";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Ryan Boren";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:40:"http://purl.org/rss/1.0/modules/content/";a:1:{s:7:"encoded";a:1:{i:0;a:5:{s:4:"data";s:2016:"

WordPress 3.1.4 is available now and is a maintenance and security update for all previous versions.

\n

This release fixes an issue that could allow a malicious Editor-level user to gain further access to the site. Thanks K. Gudinavicius of SEC Consult for bringing this to our attention. Version 3.1.4 also incorporates several other security fixes and hardening measures thanks to the work of WordPress developers Alexander Concha and Jon Cave of our security team. Consult the change log for more details.

\n

Download WordPress 3.1.4 or update immediately from the Dashboard → Updates menu in your site’s admin area.

\n

WordPress 3.2 Release Candidate 3

\n

This release was about all that stood in the way of a final release of WordPress 3.2. So we’re also announcing the third release candidate for 3.2, which contains all of the fixes in 3.1.4; few minor RTL, JavaScript, and user interface fixes; and ensures graceful failures if 3.2 is run on PHP4. As a reminder, we’ve bumped our minimum requirements for version 3.2 to PHP 5.2.4 and MySQL 5.0.

\n

To test WordPress 3.2, try the WordPress Beta Tester plugin (you’ll want “bleeding edge nightlies”). Or you can download the release candidate here (zip). At this stage, plugin authors should be doing final tests to ensure compatibility.

\n

Bonus: For more on what to test and what to do if you find an issue, please read our Beta 1 post.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:36:"http://wellformedweb.org/CommentAPI/";a:1:{s:10:"commentRss";a:1:{i:0;a:5:{s:4:"data";s:55:"http://wordpress.org/news/2011/06/wordpress-3-1-4/feed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:38:"http://purl.org/rss/1.0/modules/slash/";a:1:{s:8:"comments";a:1:{i:0;a:5:{s:4:"data";s:1:"0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}s:27:"http://www.w3.org/2005/Atom";a:1:{s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:3:{s:4:"href";s:31:"http://wordpress.org/news/feed/";s:3:"rel";s:4:"self";s:4:"type";s:19:"application/rss+xml";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:44:"http://purl.org/rss/1.0/modules/syndication/";a:2:{s:12:"updatePeriod";a:1:{i:0;a:5:{s:4:"data";s:6:"hourly";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:15:"updateFrequency";a:1:{i:0;a:5:{s:4:"data";s:1:"1";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:8:{s:6:"server";s:5:"nginx";s:4:"date";s:29:"Fri, 23 Sep 2011 17:05:11 GMT";s:12:"content-type";s:23:"text/xml; charset=UTF-8";s:10:"connection";s:5:"close";s:4:"vary";s:15:"Accept-Encoding";s:10:"x-pingback";s:36:"http://wordpress.org/news/xmlrpc.php";s:13:"last-modified";s:29:"Fri, 16 Sep 2011 15:08:48 GMT";s:4:"x-nc";s:11:"HIT luv 138";}s:5:"build";s:14:"20090627192103";}', 'no'); +INSERT INTO `wp_options` (`option_id`, `blog_id`, `option_name`, `option_value`, `autoload`) VALUES +(129, 0, '_transient_timeout_feed_mod_ac0b00fe65abe10e0c5b588f3ed8c7ca', '1316840708', 'no'), +(130, 0, '_transient_feed_mod_ac0b00fe65abe10e0c5b588f3ed8c7ca', '1316797508', 'no'), +(131, 0, '_transient_timeout_dash_4077549d03da2e451c8b5f002294ff51', '1316840708', 'no'), +(132, 0, '_transient_dash_4077549d03da2e451c8b5f002294ff51', '
', 'no'), +(133, 0, '_transient_timeout_feed_a5420c83891a9c88ad2a4f04584a5efc', '1316840708', 'no'), +(134, 0, '_transient_feed_a5420c83891a9c88ad2a4f04584a5efc', 'a:4:{s:5:"child";a:1:{s:0:"";a:1:{s:3:"rss";a:1:{i:0;a:6:{s:4:"data";s:3:"\n \n";s:7:"attribs";a:1:{s:0:"";a:1:{s:7:"version";s:3:"2.0";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:1:{s:7:"channel";a:1:{i:0;a:6:{s:4:"data";s:72:"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:39:"WordPress Plugins » View: Most Popular";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:51:"http://wordpress.org/extend/plugins/browse/popular/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:39:"WordPress Plugins » View: Most Popular";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"language";a:1:{i:0;a:5:{s:4:"data";s:5:"en-US";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 23 Sep 2011 16:50:54 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:9:"generator";a:1:{i:0;a:5:{s:4:"data";s:25:"http://bbpress.org/?v=1.1";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"item";a:15:{i:0;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:29:"Arne on "Google XML Sitemaps"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:70:"http://wordpress.org/extend/plugins/google-sitemap-generator/#post-132";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 09 Mar 2007 22:31:32 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:40:"132@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:105:"This plugin will generate a special XML sitemap which will help search engines to better index your blog.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"Arne";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:36:"Takayuki Miyoshi on "Contact Form 7"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:61:"http://wordpress.org/extend/plugins/contact-form-7/#post-2141";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 02 Aug 2007 12:45:03 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"2141@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:54:"Just another contact form plugin. Simple but flexible.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:16:"Takayuki Miyoshi";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:2;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:33:"uberdose on "All in One SEO Pack"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:65:"http://wordpress.org/extend/plugins/all-in-one-seo-pack/#post-753";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 30 Mar 2007 20:08:18 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:40:"753@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:92:"Automatically optimizes your Wordpress blog for Search Engines (Search Engine Optimization).";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:8:"uberdose";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:3;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:32:"Joost de Valk on "WordPress SEO"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:60:"http://wordpress.org/extend/plugins/wordpress-seo/#post-8321";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 01 Jan 2009 20:34:44 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"8321@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:140:"Yoast's all in one WordPress SEO solution for your WordPress site: SEO titles, meta descriptions, XML sitemaps, breadcrumbs & more.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:13:"Joost de Valk";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:4;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:34:"flash gallery on "1 Flash Gallery"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:63:"http://wordpress.org/extend/plugins/1-flash-gallery/#post-24163";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 03 Feb 2011 14:02:51 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"24163@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:146:"1 Flash Gallery is a Photo Gallery with slideshow function, many skins and powerfull admin to manage your image gallery without any program skills";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:13:"flash gallery";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:5;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:38:"Brian Colinger on "WordPress Importer"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:66:"http://wordpress.org/extend/plugins/wordpress-importer/#post-18101";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 20 May 2010 17:42:45 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"18101@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:101:"Import posts, pages, comments, custom fields, categories, tags and more from a WordPress export file.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:14:"Brian Colinger";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:6;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:30:"Alex Rabe on "NextGEN Gallery"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:62:"http://wordpress.org/extend/plugins/nextgen-gallery/#post-1169";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 23 Apr 2007 20:08:06 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"1169@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:108:"NextGEN Gallery is a full integrated Image Gallery plugin for WordPress with dozens of options and features.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:9:"Alex Rabe";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:7;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:28:"casibus on "ourSTATS Widget"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:65:"http://wordpress.org/extend/plugins/ourstatsde-widget/#post-18282";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sat, 29 May 2010 14:16:19 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"18282@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:51:"create a widget for the ourstats.de counter service";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:7:"casibus";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:8;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:38:"mdawaffe on "Jetpack by WordPress.com"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:55:"http://wordpress.org/extend/plugins/jetpack/#post-23862";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 20 Jan 2011 02:21:38 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"23862@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:104:"Supercharge your WordPress site with powerful features previously only available to WordPress.com users.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:8:"mdawaffe";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:9;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:33:"Disqus on "Disqus Comment System"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:68:"http://wordpress.org/extend/plugins/disqus-comment-system/#post-6808";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 28 Aug 2008 01:22:05 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"6808@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:113:"The Disqus comment system replaces your WordPress comment system with your comments hosted and powered by Disqus.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Disqus";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:10;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:66:"eight7teen on "SexyBookmarks | email, bookmark, and share buttons"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:60:"http://wordpress.org/extend/plugins/sexybookmarks/#post-9249";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 22 Feb 2009 11:30:11 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"9249@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:104:"Adds an attractive social bookmarking menu to your posts, pages, index, or any combination of the three.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"eight7teen";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:11;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:30:"BraveNewCode Inc. on "WPtouch"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:54:"http://wordpress.org/extend/plugins/wptouch/#post-5468";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 01 May 2008 04:58:09 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"5468@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:150:"WPtouch: A simple, powerful and elegant mobile theme for your website.\n\nWPtouch automatically transforms your WordPress blog into an iPhone applicatio";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:17:"BraveNewCode Inc.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:12;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:27:"Matt Mullenweg on "Akismet"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:52:"http://wordpress.org/extend/plugins/akismet/#post-15";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 09 Mar 2007 22:11:30 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:39:"15@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:98:"Akismet checks your comments against the Akismet web service to see if they look like spam or not.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:14:"Matt Mullenweg";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:13;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:36:"Frederick Townes on "W3 Total Cache"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:62:"http://wordpress.org/extend/plugins/w3-total-cache/#post-12073";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 29 Jul 2009 18:46:31 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"12073@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:135:"Improve site performance and user experience via caching: browser, page, object, database, minify and content delivery network support.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:16:"Frederick Townes";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:14;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:49:"Joost de Valk on "Google Analytics for WordPress"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:77:"http://wordpress.org/extend/plugins/google-analytics-for-wordpress/#post-2316";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 14 Sep 2007 12:15:27 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"2316@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:145:"Track your WordPress site easily and with lots of metadata: views per author & category, automatic tracking of outbound clicks and pageviews.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:13:"Joost de Valk";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}s:27:"http://www.w3.org/2005/Atom";a:1:{s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:3:{s:4:"href";s:52:"http://wordpress.org/extend/plugins/rss/view/popular";s:3:"rel";s:4:"self";s:4:"type";s:19:"application/rss+xml";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:8:{s:6:"server";s:5:"nginx";s:4:"date";s:29:"Fri, 23 Sep 2011 17:05:13 GMT";s:12:"content-type";s:23:"text/xml; charset=UTF-8";s:10:"connection";s:5:"close";s:4:"vary";s:15:"Accept-Encoding";s:13:"last-modified";s:19:"2007-03-09 22:31:32";s:14:"content-length";s:4:"7946";s:4:"x-nc";s:11:"HIT luv 138";}s:5:"build";s:14:"20090627192103";}', 'no'), +(135, 0, '_transient_timeout_feed_mod_a5420c83891a9c88ad2a4f04584a5efc', '1316840708', 'no'), +(136, 0, '_transient_feed_mod_a5420c83891a9c88ad2a4f04584a5efc', '1316797508', 'no'), +(137, 0, '_transient_timeout_feed_867bd5c64f85878d03a060509cd2f92c', '1316840709', 'no'); +INSERT INTO `wp_options` (`option_id`, `blog_id`, `option_name`, `option_value`, `autoload`) VALUES +(138, 0, '_transient_feed_867bd5c64f85878d03a060509cd2f92c', 'a:4:{s:5:"child";a:1:{s:0:"";a:1:{s:3:"rss";a:1:{i:0;a:6:{s:4:"data";s:3:"\n\n\n";s:7:"attribs";a:1:{s:0:"";a:1:{s:7:"version";s:3:"2.0";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:1:{s:7:"channel";a:1:{i:0;a:6:{s:4:"data";s:61:"\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:16:"WordPress Planet";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:28:"http://planet.wordpress.org/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"language";a:1:{i:0;a:5:{s:4:"data";s:2:"en";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:47:"WordPress Planet - http://planet.wordpress.org/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"item";a:50:{i:0;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:60:"WordPress.tv: Jay Collier: Web Strategy for Higher Education";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6898";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:77:"http://wordpress.tv/2011/09/23/jay-collier-web-strategy-for-higher-education/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1828:"
\n
\n
Jay Collier: Web Strategy for Higher Education
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 23 Sep 2011 14:08:44 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:65:"Weblog Tools Collection: Do You Really Need All of Those Plugins?";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"http://weblogtoolscollection.com/?p=10513";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:73:"http://feedproxy.google.com/~r/weblogtoolscollection/UXMP/~3/yrylbhxwr6c/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:2805:"

There has been some interesting discussion on how many plugins you should use on your WordPress blog, and whether that number contributes to any problems along the way. The fact of the matter is, it’s really hard to say.

\n

In most situations, using an excessive amount of plugins won’t cause any problems, but plugins use memory when they run, and shared hosting provider love to limit the memory that you can consume at any given moment. If you’re running into memory errors, there are a few things that you can try, but you should probably consider using less plugins or moving to a better host. Outside of hosting limitations, the number of plugins doesn’t play much of a role. We use 36 plugins here, and I have worked on a blog before that used 82, both without issue.

\n

If you’re running into other errors, that’s more than likely just one plugin with nothing to do whatsoever with the amount of plugins you’re using. As long as you continue to use the offending plugin, you’d see the same errors with 2 plugins as you would with 200.

\n

The real question here is, do you need all of those plugins? It might be time to do some spring cleaning.

\n

Are you using a plugin to loads a chatroom in your sidebar? Has that chatroom been used once in the last month? If not, it’s probably time to get rid of that plugin. Do you use a plugin to display a gallery on your blog? WordPress has had built-in gallery support for over three years, so it might be time to get rid of that plugin too. Do you use Simple Facebook Connect to automatically post to Facebook, but use another plugin to add a Facebook Like button to your posts? Well, Simple Facebook Connect can add a Like button too, so you might as well get rid of that second plugin. And, like Simple Facebook Connect and Jetpack, there are plenty of good plugins out there which can probably take the place of more than one plugin on your blog.

\n

The number of plugins you use really doesn’t have much of on an impact on your blog (unless you’re running into hosting limitations), but it can’t hurt to clean things up once a year or so.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 23 Sep 2011 13:00:56 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"James Huff";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:2;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:42:"WPTavern: bbPress 2.0 Stable Now Available";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:31:"http://www.wptavern.com/?p=5462";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:94:"http://feedproxy.google.com/~r/WordpressTavern/~3/rPBGL04BvEQ/bbpress-2-0-stable-now-available";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:3148:"

After a long time in development, bbPress 2.0 stable has been given the green light. While new version releases are exciting, this particular one for bbPress is especially so as it is a total rethink of how bbPress runs, integrates, and functions as a forums plugin instead of stand-alone software. If you’re already using an established bbPress install, moving into the plugin version of bbPress is as simple as importing your content from one to the other. John James Jacoby describes the move as follows:

\n

If you already have a previous version installed, updating to 2.0 is easy with the bbPress Importer. Move your bbPress 1.0 powered content into your new WordPress/bbPress installation and you’re ready to go. (There is already a migration plugin in the works for other forum software that promises to be pretty amazing, too!)

\n

I’m particularly interested in seeing what the migration plugin will be like as I’m currently using vBulletin to handle the forum side of the Tavern. I really like what vBulletin offers out of the box and I’ve been pretty pleased with it since I began using it for the site. However, I’ve reached a point where I’d like to switch over just to see what it’s like while at the same time, offer me an opportunity to write about bbPress more often from an end user perspective. One of the best things about bbPress is the ease in which it takes to make it look similar if not exactly like the WordPress theme in use.

\n

It’s encouraging to see that since the release of bbPress 2.0, there will be more work dedicated to the surrounding ecosystem such as the website, the addition of a bbPress focused Codex, and the official bbPress forum. While giving the 2.0 version a try, I noticed that you can’t browse the bbPress plugin repository and install plugins like you can with WordPress. I hope that at some point in the future, I can expect the same user experience out of bbPress that I currently get out of WordPress.

\n\n\n

Related posts:

  1. Why I Use VBulletin
  2. \n
  3. Why bbPress Is Good For SEO
  4. \n
  5. Listener Poll: Do You Think bbPress Will Evolve Into A WordPress Plugin?
  6. \n

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 23 Sep 2011 13:00:00 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeffro";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:3;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:62:"WordPress.tv: Doug Yuen: Improving Your WordPress Productivity";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6872";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:79:"http://wordpress.tv/2011/09/22/doug-yuen-improving-your-wordpress-productivity/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1836:"
\n
\n
Doug Yuen: Improving Your WordPress Productivity
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 23 Sep 2011 05:05:06 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:4;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:95:"WordPress.tv: Gregory Cornelius & Scott Dasse: Synchronizing Creativity with Content Management";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6897";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:110:"http://wordpress.tv/2011/09/22/gregory-cornelius-scott-dasse-synchronizing-creativity-with-content-management/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1911:"
\n
\n
Gregory Cornelius & Scott Dasse: Synchronizing Creativity with Content Management
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 23:00:29 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:5;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:67:"WPTavern: Sara Cannon On Responsive Web Design From WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:31:"http://www.wptavern.com/?p=5459";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:119:"http://feedproxy.google.com/~r/WordpressTavern/~3/pVDM5jf5btw/sara-cannon-on-responsive-web-design-from-wordcamp-boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:2063:"

Within the past few weeks, I’ve noticed the term ‘Responsive‘ showing up everywhere, especially as it relates to WordPress 3.3 and the administrative area. Having no idea what this term meant, I got in touch with Sara Cannon to figure it out. Unfortunately (or fortunately), she is pretty busy helping with making the back-end of WordPress 3.3 responsive. So the next best thing is her presentation from WordCamp Boston on optimizing a WordPress site for multiple devices. To make a long story short, having a responsive designed WordPress site means it will look good across multiple screen dimensions without the need for plugins or weird tricks. The webpage responds to look correct within the confines of the devices screen. It’s not about designing one site that is pixel perfect on a 30 inch monitor. It’s about designing a website that can be fluid enough to look great on an iPad, 30 inch screen, or an iPhone. After watching the presentation, I can see why this is a cool technique. Perhaps with WordPress 3.3, we’ll be able to login with our iPhones and be able to easily navigate and administrate our websites much easier through the phone rather than through a specific app. I recommend viewing the video in full screen mode as it’s difficult to see the slides.

\n
\n\n\n

Related posts:

  1. Interview With Paul Mycroft On The Erosion Of His Web Design Business
  2. \n
  3. Hasty Mistake With WP2.8 Header Design Challenge
  4. \n

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 17:00:01 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeffro";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:6;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:44:"WPTavern: Plugin Quality Not Plugin Quantity";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:31:"http://www.wptavern.com/?p=5454";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:96:"http://feedproxy.google.com/~r/WordpressTavern/~3/OetOSHEl5iE/plugin-quality-not-plugin-quantity";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:6656:"

Ryan Imel of WPCandy.com has published an editorial that has sparked yet another good discussion. This time, the focus is on the misnomer that it’s better to keep your active plugin count as low as possible to avoid problems.

\n

I’ve been down this road before. In at least a couple of the WordCamps I’ve attended where we discussed plugins, I would tell folks that I had almost 30 active plugins running on WPTavern.com. Judging by their reaction, you’d think I just dropped a bomb on them. In my defense, those 30 or so plugins enabled me to have the functionality I wanted within a WordPress installation. For the most part, these plugins have caused me 0 problems. The total number of active plugins has varied between more than 30 and less than 25 over the past four years but I’ve never had more than 35 activated at one time. After 4 years of using WordPress, my activated plugin count has remained nearly the same for two reasons. The first is that I’m pretty content with the functionality I have. The second is that I’m not the adventurous type who likes to try every plugin known to man.

\n

The funny thing about this discussion is that, you could have 3 plugins activated with one of those causing your site to hang. Or, you could have 25 and your site loads in less than 3 seconds. As Ryan mentions, the number of activated plugins doesn’t matter so much as the quality of the code within them. This conclusion leads us into an entirely different subset of circumstances. For instance, how do you judge the quality of a plugin before installation? How does one know if a particular plugin doesn’t play nice with some other plugin? Are we to sit here and expect end users to know good code from bad? From my perspective, if I activate a plugin and it provides the functionality it says it does, I generally don’t go under the hood to see how it’s done, just as long as it’s done without any apparent issues.

\n

In a perfect world, we should be able to activate 100 different plugins from a variety of different authors and have them all work seamlessly without any problems. But this isn’t a perfect world. It’s open source. It’s the wild wild west of coding. Sure, there are coding standards for WordPress, but not everyone is going to follow them. Not everyone is going to do things the way they should be done because it’s an open world. A plugin review team that works similarly to the theme review team is non-existent allowing plugins that don’t have malicious code into the repository regardless of their code quality. So how does this problem end up getting solved for everyone involved? It doesn’t. We can continue to educate both users and developers until the cows come home but the very nature of how things work in this open source environment allows for bad code quality to happen. It’s the nature of the beast. I think that over time, the problem can become less of an issue but it will never go away. Not unless some major crackdown starts happening on the plugin repository. Educating plugin authors is a good way to treat one of the symptoms of the overall problem but screening code before it gets past the pearly gates of the repository into the hands of users is the only way to truly solve the problem. Just like the theme review team, until a plugin reaches certain quality criteria, it can not be allowed to be hosted on the repository. It may sound bad, but the repository gate keepers would be the ones educating plugin authors before their code is accepted so in the end, it would be win-win situation.

\n

This could cause some plugin fragmentation in terms of where people go to get their plugins but that has existed for years. It might even cause a backlash similar if not, worse than the one generated from implementing the theme review team. But at the end of the day, something like this is good for end users all around. There certainly would be no guarantees that everything will work seamlessly after the team is put together but what it would be doing is increasing the odds of that happening in the future. It would also increase the number of plugins hosted on the repository that can be used as examples of plugins that did things the right way.

\n

However, a plugin review team introduces it’s own complexities such as how many people will be on the team, will only new plugins be screened or all plugins pushing updates to the repository, will these volunteers be paid etc. The funny thing is, if only new plugins were screened on the repository, it would mean that potentially down the road, an update to that plugin would introduce shoddy code which in turn would break someones site.

\n

After thinking about all of this, I start to wonder if it’s a case of “just can’t win“. Perhaps it’s best to educate users and developers as best we can and hope for the best?

\n

Related But Not Required Reading:

\n

Validating Plugins
\nQuality Check Your WordPress Plugins
\nFinding Quality WordPress Plugins
\nWordPress Plugins: How To Know If You Have Too Many

\n\n\n

Related posts:

  1. Plugin Repository Now Supports Videos
  2. \n
  3. Plugin Code Repository Bookmarklet
  4. \n
  5. Please Adopt This Plugin – Comment Quicktags Reloaded
  6. \n

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 14:15:23 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeffro";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:7;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:58:"Weblog Tools Collection: WordPress Theme Releases for 9/22";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"http://weblogtoolscollection.com/?p=10507";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:73:"http://feedproxy.google.com/~r/weblogtoolscollection/UXMP/~3/ckb_zipZFu4/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1602:"

\n

gazpoMag is a clean and featured-rich magazine style theme.

\n

\n

Girly Girl has fluid width, two columns, left sidebar, is widget ready, has valid XHTML, and features feminine colors like rose pink, gray, and lime green.

\n

\n

Insomnia is great for online magazines and personal blogs.

\n

\n

PhotoClick is a one column theme for photography and personal blogs, with a three column widget-ready footer.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 13:00:58 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"James Huff";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:8;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:84:"WordPress.tv: Chris Penn: How to Market Your Blog (okay, Mom’s reading, now what?)";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6721";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:102:"http://wordpress.tv/2011/09/22/chris-penn-how-to-market-your-blog-okay-mom%e2%80%99s-reading-now-what/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1866:"
\n
\n
Chris Penn: How to Market Your Blog (okay, Mom’s reading, now what?)
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 05:55:40 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:9;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:98:"WordPress.tv: Sara Cannon: Theming & Mobile – Optimizing your WordPress site for Various Devices";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6821";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:109:"http://wordpress.tv/2011/09/22/sara-cannon-theming-mobile-optimizing-your-wordpress-site-for-various-devices/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1941:"
\n
\n
Sara Cannon: Theming & Mobile – Optimizing your WordPress site for Various Devices
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 04:52:49 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:10;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:42:"WordPress.tv: C. C. Chapman: Content Rules";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6843";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://wordpress.tv/2011/09/22/c-c-chapman-content-rules/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1767:"
\n
\n
C. C. Chapman: Content Rules
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 03:49:56 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:11;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:54:"WordPress.tv: Kyle Dickson: Mobile WordPress on Campus";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6895";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:71:"http://wordpress.tv/2011/09/22/kyle-dickson-mobile-wordpress-on-campus/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1822:"
\n
\n
Kyle Dickson: Mobile WordPress on Campus
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 02:48:21 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:12;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:58:"WordPress.tv: Jon Bishop: Creating Content With Shortcodes";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6844";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:75:"http://wordpress.tv/2011/09/21/jon-bishop-creating-content-with-shortcodes/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1823:"
\n
\n
Jon Bishop: Creating Content With Shortcodes
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 21:02:37 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:13;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:67:"WordPress.tv: Jake Goldman: Getting Started with WordPress as a CMS";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6854";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:84:"http://wordpress.tv/2011/09/21/jake-goldman-getting-started-with-wordpress-as-a-cms/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1848:"
\n
\n
Jake Goldman: Getting Started with WordPress as a CMS
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 19:50:04 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:14;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:45:"Weblog Tools Collection: bbPress 2.0 Released";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"http://weblogtoolscollection.com/?p=10504";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:73:"http://feedproxy.google.com/~r/weblogtoolscollection/UXMP/~3/jVd5MmBHci0/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1515:"

bbPress 2.0 has been released. With BuddyPress 1.5 launching just a few hours earlier, this is a great day for major WordPress-extending plugins. That’s right, there’s no more complicated installation and integration instructions. bbPress is now a WordPress plugin, and it can easily integrate with Akismet and BuddyPress too.

\n

Simply by activating bbPress 2.0, any standard WordPress theme is suddenly capable of having support forums, user profiles, topic tags, and custom topic views. Your users are able to mark topics as favorites to read them later, and can subscribe to be notified via email to topic replies, so they never miss out on the conversation.

\n

If you’re currently using the old version of bbPress, this new version comes with a handy importer to get you started, and there are importers for other forum platforms planned for the future. If you run into any trouble, please feel free to contact the bbPress support forums.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 19:16:57 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"James Huff";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:15;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:68:"WordPress.tv: Arwin Holmes: Enterprise WordPress Do’s and Don’ts";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6857";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:79:"http://wordpress.tv/2011/09/21/arwin-holmes-enterprise-wordpress-dos-and-donts/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1847:"
\n
\n
Arwin Holmes: Enterprise WordPress Do’s and Don’ts
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 18:51:30 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:16;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:25:"Matt: 40% of Time Traffic";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:21:"http://ma.tt/?p=39292";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:40:"http://ma.tt/2011/09/40-of-time-traffic/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:403:"

At least 40% of TIME.com traffic is going through WordPress, probably more when you add up the non-vertical sites. Bummer they never mention WordPress in the original article.

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 18:13:03 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"Matt";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:17;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:110:"WordPress.tv: Andrew Nacin & Daryl Koopersmith: Lean. Agile. Mobile. Social. Local. Organic. Pivot. WordPress.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6868";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:117:"http://wordpress.tv/2011/09/21/andrew-nacin-daryl-koopersmith-lean-agile-mobile-social-local-organic-pivot-wordpress/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1939:"
\n
\n
Andrew Nacin & Daryl Koopersmith: Lean. Agile. Mobile. Social. Local. Organic. Pivot. WordPress.
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 17:44:51 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:18;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:55:"WPTavern: New Feature Pointers Slated For WordPress 3.3";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:31:"http://www.wptavern.com/?p=5451";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:107:"http://feedproxy.google.com/~r/WordpressTavern/~3/zcWv6C3CLqg/new-feature-pointers-slated-for-wordpress-3-3";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:952:"

Theme.FM has a great writeup explaining one of the new features that is slated to arrive with WordPress 3.3 called Pointers. These pointers appear to show the end user some information related to a new feature. However, it looks as though in future versions of WordPress, there will be an API built around pointers which should allow plugin and theme authors to tap into it’s usefulness. If you don’t like the pointers feature, WPEngineer has an explanation as to how to disable it. Keep in mind though, that the information is based on the nightly build of WordPress so the implementation could be different later on.

\n\n\n

No related posts.

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 17:38:47 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeffro";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:19;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:63:"Publisher Blog: TIME.com Running Verticals on WordPress.com VIP";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:43:"http://publisherblog.automattic.com/?p=1712";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:84:"http://publisherblog.automattic.com/2011/09/21/time-com-verticals-wordpress-com-vip/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:3968:"

Great piece yesterday in paidcontent.org about how TIME.com is leveraging the WordPress.com VIP SaaS platform to run all their vertical sites. In the post TIME.com cites their internal Omniture numbers, stating that ” ..verticals drove 40 percent of total site visits in 2011.

\n

It’s great to see Techland, Swampland, Battleland, and other TIME.com verticals that run on WordPress.com VIP highlighted in this article:

\n

“In developing the vertical strategy, we decided to pinpoint areas of reader and advertiser interest, blow them out as mini-publications in their own right,†(Jim) Frederick (the site’s managing editor) said. “The idea was to get writers who can speak to Tech enthusiasts for Techland or personal finance fans at Moneyland, and forge new readerships, while still embracing our core audience and feeling familiar to our Time loyalists, too.â€â€

\n

LightBox, an amazing photography blog that lives on WordPress.com VIP and then connects effortlessly to Twitter, Facebook, and Tumblr, is a great example of WordPress as a digital hub. TIME.com uses the WordPress site to draw in audiences from various services back to the core content.

\n

Nice work TIME.com team !

\n

\n

Ready to become a VIP Services Client? Some of the world’s biggest brands rely on WordPress.com VIP Services.

\n
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 15:16:35 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Sara Rosso";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:20;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:48:"Weblog Tools Collection: BuddyPress 1.5 Released";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"http://weblogtoolscollection.com/?p=10500";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:73:"http://feedproxy.google.com/~r/weblogtoolscollection/UXMP/~3/gPy9ximwQog/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1188:"

BuddyPress 1.5 has been released. With “hundreds of bug fixes, enhancements, and all-new features,” this is one of the largest updates that the WordPress-powered social networking platform has received in quite some time.

\n

Some highlights of this release include a new installation and update wizard, a new profile manager, integration with WordPress navigation menus, and a greatly improved default theme.

\n

Before upgrading, you may want to stop by this handy guide for some tips as well as plugin and theme compatibility reports. This release has been well tested over a few beta releases and release candidates, but if you run into any trouble, please feel free to contact the BuddyPress support forums.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 13:00:19 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"James Huff";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:21;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:35:"bbPress: bbPress 2.0 now available!";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:25:"http://bbpress.org/?p=488";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:58:"http://bbpress.org/blog/2011/09/bbpress-2-0-now-available/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:2582:"

In hot pursuit of BuddyPress 1.5 follows bbPress 2.0!

\n

No longer are the days of elaborate xml-rpc connections or impossible to figure-out cookie configurations! No more are the integration woes, complex theme arrangements, or separate dashboards! bbPress 2.0 represents a complete rethink of how to fit forums inside WordPress in the simplest, most elegant way possible.

\n

Simply by activating bbPress 2.0, any standard WordPress theme is suddenly capable of having support forums, user profiles, topic tags, and custom topic views. Your users are able to mark topics as favorites to read them later, and can subscribe to be notified via email to topic replies, so they never miss out on the conversation.

\n

bbPress 2.0 comes with Akismet and BuddyPress functionalities baked-in, so if you’re already using either plugin, no additional configuration is required.

\n

If you already have a previous version installed, updating to 2.0 is easy with the bbPress Importer. Move your bbPress 1.0 powered content into your new WordPress/bbPress installation and you’re ready to go. (There is already a migration plugin in the works for other forum software that promises to be pretty amazing, too!)

\n

If you’d like to see bbPress 2.0 in action, a few brave developers have been using it on their live sites already:

\n\n

In the coming weeks we’ll be moving our own forums onto bbPress 2.0, adding a codex to improve the documentation, and doing some general housekeeping here at bbpress.org. We’ve put a lot of work into rebuilding the software, now it’s time to rebuild the site to properly support it!

\n

Props for 2.0 go out to: andy, anointed, boonebgorges, christopher-jon, Coolkevman, cnorris23, dimadin, DJPaul, duck_, dudd, Fartlek, GautamGupta, greenshady, jaredatch, jghazally, Jason K, Kaspace, markmcwilliams, mouratidis, nacin, Nightgunner5, petemall, ryangannon, ryanimel, ramiy, scribu, schrepel, sorich87, vanillalounge, Viper007Bond, westi, and wonderboymusic.

\n

Download bbPress 2.0

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 08:42:31 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:17:"John James Jacoby";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:22;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:97:"WordPress.tv: Jonathan May: Helping Your Small Business Client Take On Maintaining Their Own Site";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6852";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:114:"http://wordpress.tv/2011/09/20/jonathan-may-helping-your-small-business-client-take-on-maintaining-their-own-site/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1903:"
\n
\n
Jonathan May: Helping Your Small Business Client Take On Maintaining Their Own Site
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 20 Sep 2011 23:50:13 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:23;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:51:"WP Android: Version 1.5: Follow your Favorite Blogs";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:35:"http://android.wordpress.org/?p=439";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:52:"http://android.wordpress.org/2011/09/20/version-1-5/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:4135:"

The new Read feature in action.

\n

Today we released Version 1.5 of WordPress for Android to the Android Market, which makes it effortless to keep up with your favorite blogs and sites while on the go.

\n

If you’ve connected one of your WordPress.com blogs with the app, you’ll now see a ‘Read’ button at the bottom of your blogs list. Clicking it will display all the latest posts published on the blogs that you follow, along with the option to like or reblog them. You can even follow blogs and sites that aren’t on WordPress.com, as long as they have an RSS feed.

\n

Sweet! How do I add more sites to my reader?

\n

\n

Tap the “Follow†button while viewing any WordPress.com blog (you’ll find it in the top admin bar while logged in) to add it to your reader. To add a site that’s not on WordPress.com, simply enter the URL of the site at the top of your following list and then click ‘Follow’.

\n

Not following any blogs yet? Check out today’s Freshly Pressed to browse some that you might like.

\n

What else is new?

\n

We’ve tweaked a few things here and there in the app, including using the HTML5 video tag for video uploads instead of the outdated QuickTime tag. There are also a handful of bug fixes in Version 1.5 that improve the app’s reliability.

\n

What’s next for WordPress for Android?

\n

We’re excited to let you know that work has already begun on the next major update to WordPress for Android – Version 2.0. It’s going to have a beautiful new look and will be stuffed with awesome new features. For updates on Version 2.0, check out our Developer Blog. And if you have any feedback on Version 1.5 and the new Read feature, be sure to let us know!

\n

Follow @WPAndroid on Twitter for the latest news.

\n
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 20 Sep 2011 13:35:39 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:3:"Dan";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:24;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:59:"Weblog Tools Collection: WordPress Plugin Releases for 9/20";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"http://weblogtoolscollection.com/?p=10498";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:73:"http://feedproxy.google.com/~r/weblogtoolscollection/UXMP/~3/4yceyJiZ3_U/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1050:"

New plugins

\n

PHPLeague allows you to to manage your sports leagues and can be used for many different sports like football (soccer), basketball, handball, volleyball and even ice-hockey.

\n

Updated plugins

\n

Google XML Sitemaps will generate a special XML sitemap which will help search engines to better index your blog.

\n

Posts 2 Posts allows you to create many-to-many connections between posts of all kinds.

\n

WP-Table Reloaded enables you to create and manage tables in your admin area. No HTML knowledge is needed.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 20 Sep 2011 13:00:29 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"James Huff";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:25;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:42:"Matt: Why Your Company Should Have a Creed";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:21:"http://ma.tt/?p=39282";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:38:"http://ma.tt/2011/09/automattic-creed/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:5290:"

Does your company have a creed? Twice a year, True Ventures (one of Automattic’s investors) organizes an event called Founders’ Camp, a one-day conference for the founders and CEOs of companies in their portfolio. The latest was held in the Automattic Lounge at Pier 38 in San Francisco (it could be the last).

\n

There was an interesting conversation led by Ethan Diamond, Alex Bard, Howard Lindzon, and Narendra Rocherolle on the importance of culture in an organization and how it gets formed. Despite its importance, “culture” is one of those fuzzy things that’s difficult for many founders, especially men, to discuss earnestly.  Even though I have extremely strong opinions about company culture, I find it feels “corny” to talk about it directly. Nevertheless, as part of the discussion, I shared the following practical example from Automattic about something we did to codify and share our values.

\n

It started innocently enough — someone copied me when they emailed their paperwork to accept a job offer. For the first time in a while I looked at the offer letter and realized that it read like a bad generic legal template: no branding; terrible typography; the most important information (start date, salary, stock options) buried under a sea of text; and, worst of all, it was being sent out in .docx format (especially embarrassing for a company whose foundation is Open Source). The offer didn’t reflect who we were, how we worked, and certainly not how we thought about design and user experience.

\n

Nick and MT of the Janitorial team at Automattic designed new documents and worked out a clever way to have a web form on our intranet generate the pages as HTML. It has some extra goodies like vector signatures. Anybody sending a contract or offer can create a PDF out of that web page, and email the document out to the recipient. Everything is logged and tracked. (As a bonus our legal templates for employees and contractors are now tracked in SVN along with the rest of our code.)

\n

Finally, as a hack to introduce new folks to our culture, we put a beta “Automattic Creed”, basically a statement of things important to us, written in the first person. We put it after the legal gobbledygook and before the signature area; if you chose to accept the offer, you’d sign your name next to the values before starting work. This seemed like a powerful statement and might affect people’s perceptions in the same way that putting signatures at the top of forms increases honesty.

\n

That was around the beginning of May last year, and everyone who has joined since then (about half the company) has gotten the creed in their offer letter. The feedback from the beta was excellent and later that same month we added the creed to the home page of our Automattic Field Guide (our internal reference site), where it still lives today with a link to a recent discussion about what the creed means in practice.

\n

Adding the creed before the signature block ended up being an easy change that had a big impact on the company.

\n

A fair number of founders at the event have asked what the creed is. If you’re curious here it is (as of September 19th, 2011):

\n

I will never stop learning. I won’t just work on things that are assigned to me. I know there’s no such thing as a status quo. I will build our business sustainably through passionate and loyal customers. I will never pass up an opportunity to help out a colleague, and I’ll remember the days before I knew everything. I am more motivated by impact than money, and I know that Open Source is one of the most powerful ideas of our generation. I will communicate as much as possible, because it’s the oxygen of a distributed company. I am in a marathon, not a sprint, and no matter how far away the goal is, the only way to get there is by putting one foot in front of another every day. Given time, there is no problem that’s insurmountable.

\n

I’m sure that it will evolve in the future, just as Automattic and WordPress will. If you’re building a startup or any sort of organization, take a few moments to reflect on the qualities that the people you most enjoy working with embody and the user experience of new people joining your organization, from the offer letter to their first day.

\n

Of course if you’d like to see the above in an offer letter, consider applying for Automattic.

\n

If you write a creed for your company or non-profit after reading this, please leave it in the comments!

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 20 Sep 2011 02:23:56 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"Matt";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:26;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:33:"Matt: Silicon Valleys Rental Boom";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:21:"http://ma.tt/?p=39279";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:49:"http://ma.tt/2011/09/silicon-valleys-rental-boom/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:580:"

It’s not only about the money, says Matt Mullenweg, a techie who helped create the popular WordPress blogging software and has invested in Getaround. Some of this is about “my generation’s desire to conserve resources and make better use of what we have to leave the world a better place for our children.â€

\n

Silicon Valleys Rental Boom on The Daily Beast by Dan Lyons.

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 19 Sep 2011 20:57:48 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"Matt";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:27;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:61:"WordPress.tv: John Resig: jQuery Performance and New Features";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6870";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:78:"http://wordpress.tv/2011/09/19/john-resig-jquery-performance-and-new-features/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1843:"
\n
\n
John Resig: jQuery Performance and New Features
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 19 Sep 2011 17:15:17 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:28;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:78:"WordPress.tv: Christina Dulude: Simplifying Your Life with WordPress Multisite";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6896";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:95:"http://wordpress.tv/2011/09/19/christina-dulude-simplifying-your-life-with-wordpress-multisite/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1875:"
\n
\n
Christina Dulude: Simplifying Your Life with WordPress Mulisite
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 19 Sep 2011 16:56:55 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:29;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:114:"WordPress.tv: Andrew Norcross: You’re doing it wrong and it’s all my fault: dissecting the client relationship";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6901";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:142:"http://wordpress.tv/2011/09/19/andrew-norcross-you%e2%80%99re-doing-it-wrong-and-it%e2%80%99s-all-my-fault-dissecting-the-client-relationship/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1934:"
\n
\n
Andrew Norcross: You’re doing it wrong and it’s all my fault: dissecting the client relationship
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 19 Sep 2011 16:47:50 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:30;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:48:"Alex King: wp_publish_post() Does Not Set post_*";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://alexking.org/?p=7260";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:70:"http://alexking.org/blog/2011/09/19/wp_publish_post-does-not-set-post_";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:2125:"

The inline documentation for wp_publish_post() says that it will:

\n

Publish a post by transitioning the post status.

\n

and that’s exactly what it does. Moreover, that’s all it does.

\n

If you are creating a draft post via wp_insert_post() (or wp_update_post(), which calls wp_insert_post()), certain defaults will be set for you when the post status is set to publish (or future, etc.). Among these is the automatic creation of the post_name from the post_title (if none has been explicitly provided) and setting post_date_gmt.

\n

I had some code on my site that was hitting a service to get data, creating a draft, adding some meta data and taxonomy information, then publishing it. When I was initially doing this (and using wp_publish_post() instead of wp_update_post()), I was ending up with published, unnamed posts. Not what I had in mind.

\n

There are two ways around this:

\n
    \n
  1. Use wp_update_post() instead of wp_publish_post(). This works fine, but it’s a little heavier, and conceptually I think the code reads better with the wp_publish_post() call instead.
  2. \n
  3. Use wp_publish_post(), but make sure to set the post_name, post_date_gmt, etc. when you create your draft post via wp_insert_post().
  4. \n
\n

For what it’s worth, I was using wp_update_post(), switched to wp_publish_post() because it seemed cleaner, and have since gone back to wp_update_post(). Using less of my own code and letting WordPress core code do more work for me feels more future-proof.

\n

Hopefully this is useful to someone else who starts digging through the code and is having trouble deciding which of the various functions to use.

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 19 Sep 2011 15:44:20 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"Alex";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:31;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:22:"Matt: Design at Amazon";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:21:"http://ma.tt/?p=39276";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:38:"http://ma.tt/2011/09/design-at-amazon/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:293:"

Amazon is hiring designers and using WordPress to do so. Update: Site is down, anyone know what happened? I wonder if it wasn’t meant to be public. Update 2: Now it’s back.

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 18 Sep 2011 19:08:59 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"Matt";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:32;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:58:"Weblog Tools Collection: WordPress Theme Releases for 9/18";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"http://weblogtoolscollection.com/?p=10492";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:73:"http://feedproxy.google.com/~r/weblogtoolscollection/UXMP/~3/KWdGDqoHRBY/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1204:"

\n

Cash is designed for blogs of a financial nature.

\n

\n

Neo_WDL has featured posts, social icons, twitter updates, threaded comments and widget support.

\n

\n

SimpleBlogger is an easy to use, lightweight, yet advance theme that can be easily customized to make your own.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 18 Sep 2011 13:00:24 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"James Huff";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:33;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:55:"Joseph: Slides: Site Performance, From Pinto to Ferrari";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:30:"http://josephscott.org/?p=4782";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:86:"http://josephscott.org/archives/2011/09/slides-site-performance-from-pinto-to-ferrari/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:689:"

Here are the slides from my “Site Performance, From Pinto to Ferrari” talk that I gave at WordCamp SLC 2011 and Wordcamp Albuquerque 2011.

\n
Site Performance – From Pinto to Ferrari \n
View more presentations from Joseph Scott
\n

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sat, 17 Sep 2011 17:34:56 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:12:"Joseph Scott";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:34;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:59:"Weblog Tools Collection: WordPress Plugin Security Showdown";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"http://weblogtoolscollection.com/?p=10487";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:73:"http://feedproxy.google.com/~r/weblogtoolscollection/UXMP/~3/YD9QC1O6SU0/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1109:"

It’s the weekend, time to work on your next WordPress plugin, but are you following the right security practices? At this year’s WordCamp San Francisco, core developers Mark Jaquith and Jon Cave, along with developer and author Brad Williams, covered some of the best security practices for plugin development and offered some real-life examples of just how easy it is to turn a world-class plugin into a crippling vulnerability.

\n

“One of the greatest things about WordPress plugins is they can do anything, and one of the most frightening things about WordPress plugins is they can do anything.” ~ Mark Jaquith

\n
\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sat, 17 Sep 2011 13:00:39 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"James Huff";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:35;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:39:"WPTavern: WordUp – A Fork Of WordCamp";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:31:"http://www.wptavern.com/?p=5438";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:87:"http://feedproxy.google.com/~r/WordpressTavern/~3/G1SxjKcYN0Y/wordup-a-fork-of-wordcamp";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:2035:"

If you’re anywhere near the Edinburgh area around October 22nd, make a pit stop to an event they are calling WordUp Edinburgh. According to the event website, this un-conference will mimic the WordCamp model in that there will be presentations with attendance being free. However, there are only going to be 50 spots available for this one day event. Congrats to those who purchased their tickets as all available spots have been sold. From taking a look at the attendee list, I’m happy to see that co-creator of WordPress, Mike Little, will be there along with one of my favorite commenters, Donnacha of WordSkill.com.

\n

With regards to the event name, what do you think of WordUp? Could this become the defacto name for independent WordCamp events not wanting to have to deal with all of the guidelines that come with using the trademarked term, WordCamp? At least with WordCamps, we generally have an idea as to what to expect out of the event thanks to longevity of the term being used as well as a tighter grip being placed on events using the name. So I leave you with this poll question.

\n
Note: There is a poll embedded within this post, please visit the site to participate in this post''s poll.
\n\n\n

Related posts:

  1. WordCamp Central Redesigned
  2. \n
  3. My Thoughts On The Virtual WordCamp
  4. \n
  5. WordCamp Hitting The Big Apple
  6. \n

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sat, 17 Sep 2011 11:00:10 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeffro";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:36;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:24:"Matt: Theme Code Matters";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:21:"http://ma.tt/?p=39272";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:40:"http://ma.tt/2011/09/theme-code-matters/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:124:"

Theme Code Matters, Too on Themeshaper.

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sat, 17 Sep 2011 01:32:24 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"Matt";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:37;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:41:"WPTavern: WordPress Mentioned On TheGuild";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:31:"http://www.wptavern.com/?p=5434";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:93:"http://feedproxy.google.com/~r/WordpressTavern/~3/vFNNEoucwj0/wordpress-mentioned-on-theguild";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:836:"

Not really WordPress news but it’s cool to hear a WordPress reference in the show, TheGuild. Fast forward to 9:03 to hear the WordPress remark. As an aside, I watched the entire episode and didn’t understand the show one bit. This was the first time I’ve watched TheGuild and since I’ve never played MMORPG games, I guess I don’t get any of the inside jokes.

\n
Video: Season 5 – Episode 8 – Social Traumas
\n\n\n

No related posts.

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 16 Sep 2011 20:00:39 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeffro";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:38;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:42:"WPTavern: WordPress Wins 2011 bOSSie Award";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:31:"http://www.wptavern.com/?p=5430";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:94:"http://feedproxy.google.com/~r/WordpressTavern/~3/4bzIDuJQM1o/wordpress-wins-2011-bossie-award";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:2106:"

WordPress can put yet another trophy on its mantle with a 2011 bOSSie award by InfoWorld within the Best Open Source Applications category. Confusingly, Drupal also won an award within the same category. Are the two pieces of software so different that they can be considered seperate entities with regards to what they enable the end user to accomplish? Don’t they both accomplish the same task but in their own way?

\n

2011 Bossie Logo

\n

As an aside to open source software, I thought this quote on TechnewsWorld made a good point.

\n

“I had a client that was unhappy because the robot he is helping design for a NASA competition at the local college just doesn’t have the level of lighting realism he wanted with Solidworks,” hairyfeet added. “So I just sent him to this link on the Blender wiki and voila! Thanks to FOSS and a volunteer that wrote the import scripts, he is happily having his robot rendering in photo realism by Blender.”

\n

That, in fact, “is what FOSS should be about — not about politics or factions, or all the GPL vs. BSD flamewars, but ‘can this software make someone’s day easier and/or better?’” hairyfeet concluded. “If it does, that is what makes good software to me.”

\n\n\n

No related posts.

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 16 Sep 2011 17:00:49 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeffro";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:39;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:63:"Publisher Blog: Animal Politico : WordPress Publisher Spotlight";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:43:"http://publisherblog.automattic.com/?p=1702";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:93:"http://publisherblog.automattic.com/2011/09/16/animal-politico-wordpress-publisher-spotlight/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:4080:"

Reflection Media, a small web-design and development firm with a focus on WordPress Custom Solutions, was hired to implement the design and structure of the portal. They answered a few questions about Animal Politico and WordPress.

\n

Tell us about the site:
\n Animal Politico is a Mexican political portal. It’s only available online and is powered almost entirely by WordPress. Since its launch last Autumn, there are over 5000 articles and 44 sub-blogs out of which 3 sub-blogs are used as sort of a discussion forum.

\n

Other features include:

\n\n
\n

What publishing challenges did WordPress help Animal Politico address?
\nI think what was most needed by the editors was flexibility to post, sort and prioritize news articles. With the help of custom taxonomies and a few custom meta-boxes we were able to offer them just that without any problems. Price was also an issue and choosing WordPress as our platform considerably reduced the development expenses.

\n

What are your (development) team’s favorite WordPress features?
\nI think the flexibility we get from the hooks and filters system is what we love most. It provides almost unlimited flexibility without disrupting the update path.

\n

Are you a publisher working with WordPress? We want to hear from you. 

\n

Want WordPress for your site? Get.WP.com

\n
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 16 Sep 2011 16:00:28 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Sara Rosso";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:40;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:46:"WPTavern: WPWeekly Episode 112 – Kickstarted";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:31:"http://www.wptavern.com/?p=5445";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:104:"http://feedproxy.google.com/~r/WordpressTavern/~3/tjzwcd_SRdA/wpweekly-episode-112-%e2%80%93-kickstarted";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:3399:"

wordpressweekly1In this pre-recorded edition of WordPress Weekly, I get you caught up with the news that made the headlines this week. While I didn’t have time to go in-depth on any particular topic, this episode features two interviews. One with Tom McFarlin talking about the lessons he’s learned through commercial plugin development and the other with Scott Kingsley Clark who discusses why he decided to use Kickstarter to fund the development of Pods 2.0. While you enjoy the show, I’ll be prepping the yard and such for the party tomorrow.

\n

One year ago on September 17th, my would be father-in-law passed away from prostate cancer. Fellas, if you’re over 30 or 40, better keep an eye on that thing as it’s taking men out left and right.

\n

Stories Discussed:

\n

Andrea Middleton Takes Over WordCamp Central
\niWeb To WordPress Converter
\nAn Update On Upcoming WordCamps
\nbbPress RC 5 Released
\nBuddyPress 1.5 RC 1 and BuddyPress 1.2.10 Released

\n

Interview With Tom McFarlin Regarding His Lessons Learned So Far With Commercial Plugin Development
\nInterview With Scott Clark Discussing His Use Of Kickstarter.com To Fund Pods 2.0 Development

\n

WPWeekly Meta:

\n

Next Episode: Friday, September 23rd 9P.M. Eastern

\n

Subscribe To WPWeekly Via Itunes: Click here to subscribe

\n

Length Of Episode: 42 Minutes

\n

Download The Show: WordPressWeeklyEpisode112.mp3

\n

Listen To Episode #112:
\n

\n\n\n

Related posts:

  1. Pods Plugin Successfully Kickstarted To Version 2.0
  2. \n
  3. WPWeekly Episode 63 – Interview With Randy Hoyt And Scott Clark
  4. \n
  5. WPWeekly Episode 62 – Celebrating The Freedoms Of The GPL
  6. \n

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 16 Sep 2011 14:40:12 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeffro";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:41;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:61:"WPTavern: Pods Plugin Successfully Kickstarted To Version 2.0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:31:"http://www.wptavern.com/?p=5425";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:113:"http://feedproxy.google.com/~r/WordpressTavern/~3/IF6e2Ptw-GE/pods-plugin-successfully-kickstarted-to-version-2-0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:2922:"

logo for Pods pluginScoot Kingsley Clark who is the lead developer of the Pods Development Framework has successfully acquired the funds necessary to complete development work for Pods 2.0 along with the community website. After launching his project on Kickstarter.com, he managed to get the $1,500.00 goal necessary within 24 hours. However, the project has been so successful at getting pledges, he is nearly 200% or $2,000.00 above the original goal with 7 days left in the pledging period. With regards to what Scott plans on doing with the extra cash, this is what he says under the FAQ section of the project page:

\n

All additional money raised goes towards the Pods Foundation to help fund future development, travel for WordCamps and presentations, and hosting costs. So really, 2.0 is now funded – BUT you can still fund the foundation and everything it stands for.\n

\n

You might be wondering what he means by Pods Foundation. When I had a chance to speak with Scott the other day, he told me that the purpose of the foundation as well as how it’s structured is very similar to the WordPress foundation. I’m pretty sure this is the first WordPress plugin to have it’s own Non Profit foundation attached to it unless you know of another one? Because of the foundation, you can be assured that the money donated will go towards improvement of the plugin and accompanying community website.

\n

Congratulations goes out to Scott as well as his community of users. I have yet to see any other plugin or theme developers use Kickstarter in such a way. Do you think this was a unique opportunity for something like the Pods plugin or could other plugin authors leverage Kickstarter successfully to fund development of their projects?

\n\n\n

Related posts:

  1. IntenseDebate Plugin Version 2.4.2 Released
  2. \n
  3. WPWeekly Episode 63 – Interview With Randy Hoyt And Scott Clark
  4. \n

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 16 Sep 2011 13:00:29 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeffro";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:42;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:59:"Weblog Tools Collection: WordPress Plugin Releases for 9/16";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"http://weblogtoolscollection.com/?p=10484";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:73:"http://feedproxy.google.com/~r/weblogtoolscollection/UXMP/~3/Fmkk9BbiUwI/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:940:"

New plugins

\n

Auto Read More Generator will put a “Read More…” link for each post of the blog page after the first image and the first paragraph.

\n

GetMeCooking Recipe Template makes it easy for you to add recipes within your blog posts in a consistent, Search Engine friendly format and it allows your visitors to easily view and print the recipes.

\n

Updated plugins

\n

Slick Contact Forms creates a widget, which adds a contact form using either a floating, drop down button or a sticky, sliding tab.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 16 Sep 2011 13:00:03 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"James Huff";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:43;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:56:"WPTavern: Andrea Middleton Now Managing WordCamp Central";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:31:"http://www.wptavern.com/?p=5421";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:108:"http://feedproxy.google.com/~r/WordpressTavern/~3/zmWcbIqTwoE/andrea-middleton-now-managing-wordcamp-central";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:940:"

WordCamp Central is now managed by Andrea Middleton instead of Jane Wells. Within the post, Jane mentions that she will take on more of an advisory role while Andrea will be handling all of the management activities associated with the position. According to the facts presented within the introduction post, it certainly seems as though Andrea has the right credentials for the job.

\n\n\n

Related posts:

  1. Jane Wells Is Not So Bad
  2. \n
  3. My WordCamp Columbus Experience
  4. \n

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 16 Sep 2011 12:15:13 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeffro";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:44;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:52:"Weblog Tools Collection: BuddyPress 1.5 RC1 Released";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:41:"http://weblogtoolscollection.com/?p=10481";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:73:"http://feedproxy.google.com/~r/weblogtoolscollection/UXMP/~3/3STcLYH0Mxk/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:924:"

The first release candidate of BuddyPress 1.5 has been released. Long considered to be the one true social networking solution for WordPress, there is a lot to look forward to in BuddyPress 1.5, and this is the first solid glimpse of that.

\n

Though the developers have not exactly cleared this release for use on live sites yet, now is the time to test it out if you’re handy with discovering bugs, and there’s even a test installation available for you to get your hands dirty with.

\n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 15 Sep 2011 17:30:07 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"James Huff";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:45;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:42:"Dev Blog: Software Freedom Day + Hackathon";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:33:"http://wordpress.org/news/?p=2058";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:65:"http://wordpress.org/news/2011/09/software-freedom-day-hackathon/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:3802:"

Saturday, September 17 is Software Freedom Day. To that end, a few announcements about this weekend’s hackathon and WordCamp Portland.

\n

3.3 Hackathon

\n

WordPress 3.3 is about to hit feature freeze. This means it’s the last chance to squeeze in features that haven’t quite been finished, and enhancements and fixes that no one has had time to address yet. Around this time, there are often dozens of tickets that have patches, but the patches have not been tested enough to be committed to core. Then the contributors who worked hard on the patches are disappointed that their code doesn’t make it into the current release. You can help us prevent this!

\n

This weekend, we’ll be running a has-patch needs-testing marathon for the 3.3 milestone. Basically, we’re looking for people who can help test patches and/or refresh patches that need updating. Lead developers and core contributors will be hanging around in the #wordpress-dev channel on irc.freenode.net to answer questions as needed, and will be committing patches as they get enough verification. As you test the patches, report your findings on the trac tickets in question. If all developers who make a living working with WordPress helped out for even an hour or two this weekend, we could clear the 200 tickets or so that are in this situation. To make it fun, why not get together with other WordPress devs and have an in-person hackathon meetup?

\n

WordCamp Portland

\n

At WordCamp Portland this weekend, some of the WordPress core team will be in attendance, including me, Nacin, and Koop. In addition to giving presentations and participating in the unconference sessions, we’ll be involved with a couple of other cool things at WCPDX:

\n\n

So, if you live it the Portland/Seattle area and haven’t already bought a ticket to attend WordCamp Portland, hurry up, as it’s going to be a great celebration of Software Freedom Day and WordPress.

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 15 Sep 2011 07:33:56 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Jane Wells";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:46;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:33:"Dev Blog: A Tale of Two WordCamps";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:33:"http://wordpress.org/news/?p=2057";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:58:"http://wordpress.org/news/2011/09/a-tale-of-two-wordcamps/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:3682:"

This coming weekend, two WordCamps will be going on simultaneously — yep, it’s WordCamp season again! This weekend will be the first of many this autumn with multiple WordCamps. Tomorrow (not quite the weekend but close enough) is WordCamp Cape Town, and then this weekend, first-time WordCamp Albuquerque coincides with 4-time returning champ WordCamp Portland, a cool juxtaposition of a more established local community with one that is just getting started. If you’re anywhere near the Portland area, you should try to attend. The WordPress Foundation will be sponsoring some special activities around Software Freedom Day, and some members of the core team (me, Nacin, Koop) will be there.

\n

Is there a WordCamp coming up near you? Let’s find out!

\n

Sep 15: WordCamp Cape Town Cape Town, South Africa

\n

Sep 16-18: WordCamp Albuquerque Albuquerque, NM

\n

Sep 17-18: WordCamp Portland Portland, OR

\n

Sep 24: WordCamp Lisboa Lisboa, Portugal

\n

Sep 24: WordCamp Germany Koln, Germany

\n

Sep 25: WordCamp Sofia Sofia, Bulgaria

\n

Oct 1: WordCamp Louisville Louisville, Kentucky

\n

Oct 8-9: WordCamp Sevilla Seville, Spain

\n
\n

Oct 15-16: WordCamp Jabalpur Jabalpur, India

\n

Nov 5-6: WordCamp Toronto Toronto, ON

\n

Nov 5-6: WordCamp Gold Coast Gold Coast, Australia

\n

Nov 5-6: WordCamp Philly Philadelphia, PA

\n

Nov 12: WordCamp Caguas Caguas, Puerto Rico

\n

Nov 12-13: WordCamp Kenya Nairobi, Kenya

\n

Nov 12-13: WordCamp Detroit Detroit, MI

\n

Nov 12: WordCamp Richmond Richmond, VA

\n

Nov 12-13: WordCamp Denmark Copenhagen, Denmark

\n

Dec 17: WordCamp Las Vegas Las Vegas, NV

\n

Feb 3-4 WordCamp Atlanta Atlanta, GA

\n

There are also a number of WordCamps still in the early organizing stage that do not yet have dates set. These include: Ft. Wayne, IN; London, UK; Edmonton, Canada; Baku, Azerbaijan; Oslo, Norway; Sacramento, CA;  Birmingham, Alabama; Pittsburgh, PA; Omaha, NE; Orlando, FL; Tokyo, Japan; Paris, France; Zagreb, Croatia; Nashville, TN, Washington DC, Baltimore, MD; Bangkok, Thailand; Istanbul, Turkey.

\n

Hope to see you soon at a WordCamp near you!

\n


\n

\n
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 14 Sep 2011 21:17:08 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Jane Wells";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:47;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:56:"WPTavern: Using WordPress To Create Multiple Image Sizes";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:31:"http://www.wptavern.com/?p=5419";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:108:"http://feedproxy.google.com/~r/WordpressTavern/~3/OIYihc-aYKM/using-wordpress-to-create-multiple-image-sizes";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:684:"

WPBeginner has an excellent tutorial that describes how to use the built in functions of WordPress to generate additional image sizes for use in themes. This is possibly a better alternative than using TimThumb.

\n\n\n

Related posts:

  1. Screencast: Basic Image Editing In WordPress 2.9
  2. \n

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 14 Sep 2011 18:45:23 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeffro";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:48;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:42:"WordPress.tv: Kelly Dwan: Creating Plugins";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:27:"http://wordpress.tv/?p=6861";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:59:"http://wordpress.tv/2011/09/14/kelly-dwan-creating-plugins/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:1786:"
\n
\n
Kelly Dwan: Creating Plugins
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 14 Sep 2011 13:15:24 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"WordCamp Boston";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:49;a:6:{s:4:"data";s:13:"\n \n \n \n \n \n \n";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:37:"WPTavern: iWeb To WordPress Converter";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:31:"http://www.wptavern.com/?p=5416";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:89:"http://feedproxy.google.com/~r/WordpressTavern/~3/D8kEwHe-BCg/iweb-to-wordpress-converter";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:687:"

With MobileMe slated to shutdown on June 30th, 2012 taking iWeb with it, users will need to find a new home for their iWeb powered website. A company by the name of Rage Software has created an iWeb to WordPress converter that takes an exported iWeb website and converts it into a WordPress XML file that can be imported into the self hosted version of WordPress or WordPress.com. Seems easy enough although the conversion software will set you back $49.95.

\n
\n\n\n

No related posts.

";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 14 Sep 2011 13:00:58 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Jeffro";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:9:{s:6:"server";s:5:"nginx";s:4:"date";s:29:"Fri, 23 Sep 2011 17:05:12 GMT";s:12:"content-type";s:15:"application/xml";s:10:"connection";s:5:"close";s:4:"vary";s:15:"Accept-Encoding";s:13:"last-modified";s:29:"Fri, 23 Sep 2011 17:00:20 GMT";s:14:"content-length";s:6:"141909";s:4:"x-nc";s:11:"HIT luv 138";s:13:"accept-ranges";s:5:"bytes";}s:5:"build";s:14:"20090627192103";}', 'no'); +INSERT INTO `wp_options` (`option_id`, `blog_id`, `option_name`, `option_value`, `autoload`) VALUES +(139, 0, '_transient_timeout_feed_mod_867bd5c64f85878d03a060509cd2f92c', '1316840709', 'no'), +(140, 0, '_transient_feed_mod_867bd5c64f85878d03a060509cd2f92c', '1316797509', 'no'), +(141, 0, '_transient_timeout_dash_aa95765b5cc111c56d5993d476b1c2f0', '1316840709', 'no'), +(142, 0, '_transient_dash_aa95765b5cc111c56d5993d476b1c2f0', '
', 'no'), +(143, 0, '_transient_timeout_feed_57bc725ad6568758915363af670fd8bc', '1316840709', 'no'), +(144, 0, '_transient_feed_57bc725ad6568758915363af670fd8bc', 'a:4:{s:5:"child";a:1:{s:0:"";a:1:{s:3:"rss";a:1:{i:0;a:6:{s:4:"data";s:3:"\n \n";s:7:"attribs";a:1:{s:0:"";a:1:{s:7:"version";s:3:"2.0";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:1:{s:7:"channel";a:1:{i:0;a:6:{s:4:"data";s:72:"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:33:"WordPress Plugins » View: Newest";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:47:"http://wordpress.org/extend/plugins/browse/new/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:33:"WordPress Plugins » View: Newest";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"language";a:1:{i:0;a:5:{s:4:"data";s:5:"en-US";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 23 Sep 2011 16:59:48 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:9:"generator";a:1:{i:0;a:5:{s:4:"data";s:25:"http://bbpress.org/?v=1.1";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"item";a:15:{i:0;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:59:"infogeniuz on "infoGeniuz Form Analytics for Gravity Forms"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:91:"http://wordpress.org/extend/plugins/infogeniuz-form-analytics-for-gravity-forms/#post-29919";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 06 Sep 2011 20:37:43 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"29919@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:115:"Add number of visits & pageviews, browser & geolocation data to all your Gravity Forms email notifications.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"infogeniuz";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:41:"quebarato on "QueBarato! Blog Connection"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:73:"http://wordpress.org/extend/plugins/quebarato-blog-connection/#post-30399";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 23:07:58 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30399@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:127:"Ganhar dinheiro através de um post em seu blog parece a idéia perfeita? O QueBarato! apresenta o QueBarato! Blog Connection.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:9:"quebarato";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:2;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:32:"luciana123 on "Notify On Action"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:64:"http://wordpress.org/extend/plugins/notify-on-action/#post-30397";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 21:39:22 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30397@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:117:"This plugin allows Admins to set up email notification on any action performed in any of functions on themes/plugins.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"luciana123";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:3;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:55:"James Irving-Swift (Swifty) on "Electric Studio Mailer"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:70:"http://wordpress.org/extend/plugins/electric-studio-mailer/#post-30381";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 13:39:43 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30381@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:66:"Creates an easy function for sending mail from your Wordpress site";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:27:"James Irving-Swift (Swifty)";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:4;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:24:"bestwebsoft on "Gallery"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:62:"http://wordpress.org/extend/plugins/gallery-plugin/#post-30427";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 16:56:44 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30427@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:63:"This plugin allows you to implement gallery page into web site.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:11:"bestwebsoft";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:5;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:34:"jokerbr313 on "Advanced Post List"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:65:"http://wordpress.org/extend/plugins/advance-post-list/#post-30371";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 09:16:11 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30371@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:132:"Create a large variety of post lists with easy to use advanced settings. Highly customizable for designing unique post-list designs.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"jokerbr313";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:6;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:26:"dmitry78 on "XiSearch bar"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:60:"http://wordpress.org/extend/plugins/xisearch-bar/#post-30313";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 19 Sep 2011 11:38:26 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30313@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:145:"XiSearch bar: increase the quantity and improve the quality of your site content thanks to the advanced search options on every page of your site";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:8:"dmitry78";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:7;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:25:"mikeyotoole on "WP Folio"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:59:"http://wordpress.org/extend/plugins/wp-foliolio/#post-30390";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 21 Sep 2011 19:15:00 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30390@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:140:"WP-Foliolio enables a Web Developer/Designer to create a Wordpress Portfolio for their work with wp's familiar content creation system.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:11:"mikeyotoole";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:8;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:61:"benatkin on "WordPress SyntaxHighlighter Evolved: Brush Pack"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:76:"http://wordpress.org/extend/plugins/syntaxhighlighter-brush-pack/#post-30403";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 02:25:40 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30403@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:150:"Adds brushes to SyntaxHighlighter Evolved. Based on\n[WordPress SyntaxHighlighter Evolved: CoffeeScript\nBrush](http://wordpress.org/extend/plugins/synt";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:8:"benatkin";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:9;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:31:"KwarK on "Kw LiveStream Plugin"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:68:"http://wordpress.org/extend/plugins/kw-livestream-plugin/#post-30404";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 05:41:56 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30404@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:121:"A simple plugin for streaming (live tv) with livestream.com and shortcode with WordPress. Multiple livestream possibility";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:5:"KwarK";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:10;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:29:"Simon Fransson on "Logged in"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:57:"http://wordpress.org/extend/plugins/logged-in/#post-30432";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 20:06:43 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30432@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:142:"Allows you to close your site to non-logged in users, by redirecting them to the login page, displaying a message or a specific template file.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:14:"Simon Fransson";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:11;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:22:"DaganLev on "DGallery"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:56:"http://wordpress.org/extend/plugins/dgallery/#post-30428";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 22 Sep 2011 18:40:33 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30428@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:87:"Overrides WordPress regular gallery with a nicer gallery based on Google+ photo gallery";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:8:"DaganLev";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:12;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:37:"SultanICQ on "Web Page Speed Checker"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:70:"http://wordpress.org/extend/plugins/web-page-speed-checker/#post-30354";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 20 Sep 2011 15:50:11 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30354@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:102:"Web Page Speed Checker is a plugin designed to control the Google Page Speed Score of your blog pages.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:9:"SultanICQ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:13;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:36:"Inpsyde GmbH on "Multilingual Press"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:66:"http://wordpress.org/extend/plugins/multilingual-press/#post-26125";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 26 Apr 2011 18:29:56 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"26125@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:46:"Multilingual websites with WordPress Multisite";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:12:"Inpsyde GmbH";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:14;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:68:"Londontime on "Share Google , twitter , facebook and social sharing"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:63:"http://wordpress.org/extend/plugins/google-wp-buton/#post-30359";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 20 Sep 2011 18:22:23 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"30359@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:87:"Adds a set of cool icons and widgets at the end of your post for your readers to share.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"Londontime";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}s:27:"http://www.w3.org/2005/Atom";a:1:{s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:3:{s:4:"href";s:48:"http://wordpress.org/extend/plugins/rss/view/new";s:3:"rel";s:4:"self";s:4:"type";s:19:"application/rss+xml";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:8:{s:6:"server";s:5:"nginx";s:4:"date";s:29:"Fri, 23 Sep 2011 17:05:13 GMT";s:12:"content-type";s:23:"text/xml; charset=UTF-8";s:10:"connection";s:5:"close";s:4:"vary";s:15:"Accept-Encoding";s:13:"last-modified";s:19:"2011-09-06 20:37:43";s:14:"content-length";s:4:"8029";s:4:"x-nc";s:11:"HIT luv 138";}s:5:"build";s:14:"20090627192103";}', 'no'), +(145, 0, '_transient_timeout_feed_mod_57bc725ad6568758915363af670fd8bc', '1316840709', 'no'), +(146, 0, '_transient_feed_mod_57bc725ad6568758915363af670fd8bc', '1316797509', 'no'), +(147, 0, '_transient_timeout_feed_1a5f760f2e2b48827d4974a60857e7c2', '1316840710', 'no'); +INSERT INTO `wp_options` (`option_id`, `blog_id`, `option_name`, `option_value`, `autoload`) VALUES +(148, 0, '_transient_feed_1a5f760f2e2b48827d4974a60857e7c2', 'a:4:{s:5:"child";a:1:{s:0:"";a:1:{s:3:"rss";a:1:{i:0;a:6:{s:4:"data";s:3:"\n \n";s:7:"attribs";a:1:{s:0:"";a:1:{s:7:"version";s:3:"2.0";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:1:{s:7:"channel";a:1:{i:0;a:6:{s:4:"data";s:72:"\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:43:"WordPress Plugins » View: Recently Updated";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:51:"http://wordpress.org/extend/plugins/browse/updated/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:43:"WordPress Plugins » View: Recently Updated";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"language";a:1:{i:0;a:5:{s:4:"data";s:5:"en-US";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 23 Sep 2011 16:59:08 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:9:"generator";a:1:{i:0;a:5:{s:4:"data";s:25:"http://bbpress.org/?v=1.1";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"item";a:15:{i:0;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:30:"Shelby DeNike on "Minify Link"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:58:"http://wordpress.org/extend/plugins/minifylink/#post-17415";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 20 Apr 2010 19:40:14 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"17415@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:116:"The Minify Link WordPress plugin simply changes all permalinks on your site to Minify links using the Minify.us API.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:13:"Shelby DeNike";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:29:"dkukral on "Email on Publish"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:64:"http://wordpress.org/extend/plugins/email-on-publish/#post-26810";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 23 May 2011 20:54:45 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"26810@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:67:"Plugin for WordPress that emails to text of the post when published";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:7:"dkukral";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:2;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:38:"OddOneOut on "Better WordPress Minify"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:58:"http://wordpress.org/extend/plugins/bwp-minify/#post-25706";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 06 Apr 2011 16:16:48 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"25706@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:80:"Allows you to minify your CSS and JS files for faster page loading for visitors.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:9:"OddOneOut";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:3;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:47:"OddOneOut on "Better WordPress Polldaddy Polls"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:61:"http://wordpress.org/extend/plugins/bwp-polldaddy/#post-25707";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 06 Apr 2011 16:18:59 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"25707@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:63:"Helps you add Polldaddy Polls to your WordPress website easily.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:9:"OddOneOut";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:4;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:39:"hda on "Histoire des Arts | Culture.fr"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:65:"http://wordpress.org/extend/plugins/histoire-des-arts/#post-27656";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 21 Jun 2011 15:19:39 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"27656@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:11:"description";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:3:"hda";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:5;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:43:"loverlynetwork on "Lover.ly Network Plugin"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:70:"http://wordpress.org/extend/plugins/loverly-network-plugin/#post-29199";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 10 Aug 2011 04:36:44 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"29199@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:102:"The Lover.ly Network Plugin allows publishing partners to connect their blog to the Lover.ly platform.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:14:"loverlynetwork";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:6;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:42:"russell.albin on "Simple Business Manager"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:71:"http://wordpress.org/extend/plugins/simple-business-manager/#post-25737";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 08 Apr 2011 00:19:34 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"25737@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:53:"Manage your customers, send invoices, track spending.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:13:"russell.albin";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:7;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:18:"plista on "plista"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:54:"http://wordpress.org/extend/plugins/plista/#post-29335";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 15 Aug 2011 14:47:14 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"29335@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:44:"Plugin for displaying plista Recommendations";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"plista";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:8;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:28:"Ste_95 on "Post Pay Counter"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:64:"http://wordpress.org/extend/plugins/post-pay-counter/#post-29796";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Fri, 02 Sep 2011 11:25:39 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"29796@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:144:"Easily calculate and handle author's pay on a multi-author blog by computing every written post remuneration basing on admin defined rules.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:6:"Ste_95";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:9;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:41:"xcloner on "XCloner - Backup and Restore"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:74:"http://wordpress.org/extend/plugins/xcloner-backup-and-restore/#post-21206";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 28 Sep 2010 07:20:29 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"21206@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:185:"XCloner is a full backup and restore plugin for Wordpress, it will backup and restore both files and database. http://www.xcloner.com";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:7:"xcloner";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:10;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:60:"optimum7 on "Google Rank Checker - SEO Tool with Google API"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:92:"http://wordpress.org/extend/plugins/google-rank-checker-seo-tool-with-google-api/#post-29215";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 10 Aug 2011 14:04:34 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"29215@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:122:"Google Rank Checker - SEO Tool with Google API provides the estimated Google position for a keyword and corresponding URL.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:8:"optimum7";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:11;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:29:"Glenn Ansley on "FT Calendar"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:59:"http://wordpress.org/extend/plugins/ft-calendar/#post-24823";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 01 Mar 2011 04:51:28 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"24823@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:206:"A calendar plugin supporting multiple calendars, recurring events, and several different widgets / shortcodes. More info at http://calendar-plugin.com";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:12:"Glenn Ansley";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:12;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:60:"infogeniuz on "infoGeniuz Form Analytics for Contact Form 7"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:92:"http://wordpress.org/extend/plugins/infogeniuz-form-analytics-for-contact-form-7/#post-29918";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 06 Sep 2011 20:37:13 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"29918@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:116:"Add number of visits & pageviews, browser & geolocation data to all your Contact Form 7 email notifications.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:10:"infogeniuz";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:13;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:41:"strangerstudios on "Paid Memberships Pro"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:68:"http://wordpress.org/extend/plugins/paid-memberships-pro/#post-28043";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 04 Jul 2011 04:02:50 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"28043@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:150:"An infinitely customizable Membership Plugin for WordPress integrated with Authorize.net or PayPal(r) for recurring payments, flexible content control";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:15:"strangerstudios";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:14;a:6:{s:4:"data";s:30:"\n \n \n \n \n \n \n ";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:36:"Zamango on "Zamango Page Navigation"";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:71:"http://wordpress.org/extend/plugins/zamango-page-navigation/#post-15724";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 03 Feb 2010 07:49:32 +0000";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:42:"15724@http://wordpress.org/extend/plugins/";s:7:"attribs";a:1:{s:0:"";a:1:{s:11:"isPermaLink";s:5:"false";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:122:"It creates pagebar on lists (for ex. on category or search results) and Next Post & Previous Post links on each post.";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:7:"Zamango";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}s:27:"http://www.w3.org/2005/Atom";a:1:{s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:3:{s:4:"href";s:52:"http://wordpress.org/extend/plugins/rss/view/updated";s:3:"rel";s:4:"self";s:4:"type";s:19:"application/rss+xml";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:8:{s:6:"server";s:5:"nginx";s:4:"date";s:29:"Fri, 23 Sep 2011 17:05:14 GMT";s:12:"content-type";s:23:"text/xml; charset=UTF-8";s:10:"connection";s:5:"close";s:4:"vary";s:15:"Accept-Encoding";s:13:"last-modified";s:19:"2010-04-20 19:40:14";s:14:"content-length";s:4:"7997";s:4:"x-nc";s:11:"HIT luv 138";}s:5:"build";s:14:"20090627192103";}', 'no'), +(149, 0, '_transient_timeout_feed_mod_1a5f760f2e2b48827d4974a60857e7c2', '1316840710', 'no'), +(150, 0, '_transient_feed_mod_1a5f760f2e2b48827d4974a60857e7c2', '1316797510', 'no'), +(151, 0, '_transient_timeout_plugin_slugs', '1316883910', 'no'), +(152, 0, '_transient_plugin_slugs', 'a:2:{i:0;s:19:"akismet/akismet.php";i:1;s:9:"hello.php";}', 'no'), +(153, 0, '_transient_timeout_dash_de3249c4736ad3bd2cd29147c4a0d43e', '1316840710', 'no'), +(154, 0, '_transient_dash_de3249c4736ad3bd2cd29147c4a0d43e', '

Más populares

\n
W3 Total Cache
 (Instalar)\n

Improve site performance and user experience via caching: browser, page, object, database, minify and content delivery network support.

\n

Plugins recientes

\n
Logged in
 (Instalar)\n

Allows you to close your site to non-logged in users, by redirecting them to the login page, displaying a message or a specific template file.

\n

Actualizados recientemente

\n
plista
 (Instalar)\n

Plugin for displaying plista Recommendations

\n', 'no'), +(155, 0, '_site_transient_timeout_wporg_theme_feature_list', '1316808471', 'yes'), +(156, 0, '_site_transient_wporg_theme_feature_list', 'a:5:{s:6:"Colors";a:15:{i:0;s:5:"black";i:1;s:4:"blue";i:2;s:5:"brown";i:3;s:4:"gray";i:4;s:5:"green";i:5;s:6:"orange";i:6;s:4:"pink";i:7;s:6:"purple";i:8;s:3:"red";i:9;s:6:"silver";i:10;s:3:"tan";i:11;s:5:"white";i:12;s:6:"yellow";i:13;s:4:"dark";i:14;s:5:"light";}s:7:"Columns";a:6:{i:0;s:10:"one-column";i:1;s:11:"two-columns";i:2;s:13:"three-columns";i:3;s:12:"four-columns";i:4;s:12:"left-sidebar";i:5;s:13:"right-sidebar";}s:5:"Width";a:2:{i:0;s:11:"fixed-width";i:1;s:14:"flexible-width";}s:8:"Features";a:18:{i:0;s:8:"blavatar";i:1;s:10:"buddypress";i:2;s:17:"custom-background";i:3;s:13:"custom-colors";i:4;s:13:"custom-header";i:5;s:11:"custom-menu";i:6;s:12:"editor-style";i:7;s:21:"featured-image-header";i:8;s:15:"featured-images";i:9;s:20:"front-page-post-form";i:10;s:19:"full-width-template";i:11;s:12:"microformats";i:12;s:12:"post-formats";i:13;s:20:"rtl-language-support";i:14;s:11:"sticky-post";i:15;s:13:"theme-options";i:16;s:17:"threaded-comments";i:17;s:17:"translation-ready";}s:7:"Subject";a:3:{i:0;s:7:"holiday";i:1;s:13:"photoblogging";i:2;s:8:"seasonal";}}', 'yes'), +(158, 0, 'theme_mods_Broadside', 'a:1:{i:0;b:0;}', 'yes'), +(159, 0, 'optionsframework', 'a:1:{s:2:"id";s:9:"broadside";}', 'yes'); + +-- -------------------------------------------------------- + +-- +-- Estructura de tabla para la tabla `wp_postmeta` +-- + +CREATE TABLE IF NOT EXISTS `wp_postmeta` ( + `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `post_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `meta_key` varchar(255) DEFAULT NULL, + `meta_value` longtext, + PRIMARY KEY (`meta_id`), + KEY `post_id` (`post_id`), + KEY `meta_key` (`meta_key`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; + +-- +-- Volcar la base de datos para la tabla `wp_postmeta` +-- + +INSERT INTO `wp_postmeta` (`meta_id`, `post_id`, `meta_key`, `meta_value`) VALUES +(1, 2, '_wp_page_template', 'default'); + +-- -------------------------------------------------------- + +-- +-- Estructura de tabla para la tabla `wp_posts` +-- + +CREATE TABLE IF NOT EXISTS `wp_posts` ( + `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `post_author` bigint(20) unsigned NOT NULL DEFAULT '0', + `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `post_content` longtext NOT NULL, + `post_title` text NOT NULL, + `post_excerpt` text NOT NULL, + `post_status` varchar(20) NOT NULL DEFAULT 'publish', + `comment_status` varchar(20) NOT NULL DEFAULT 'open', + `ping_status` varchar(20) NOT NULL DEFAULT 'open', + `post_password` varchar(20) NOT NULL DEFAULT '', + `post_name` varchar(200) NOT NULL DEFAULT '', + `to_ping` text NOT NULL, + `pinged` text NOT NULL, + `post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `post_content_filtered` text NOT NULL, + `post_parent` bigint(20) unsigned NOT NULL DEFAULT '0', + `guid` varchar(255) NOT NULL DEFAULT '', + `menu_order` int(11) NOT NULL DEFAULT '0', + `post_type` varchar(20) NOT NULL DEFAULT 'post', + `post_mime_type` varchar(100) NOT NULL DEFAULT '', + `comment_count` bigint(20) NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`), + KEY `post_name` (`post_name`), + KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`), + KEY `post_parent` (`post_parent`), + KEY `post_author` (`post_author`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; + +-- +-- Volcar la base de datos para la tabla `wp_posts` +-- + +INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`) VALUES +(1, 1, '2011-09-23 17:04:51', '2011-09-23 17:04:51', 'Bienvenido a WordPress. Esta es tu primera entrada. Edítala o bórrala, ¡y comienza a publicar!.', '¡Hola mundo!', '', 'publish', 'open', 'open', '', 'hola-mundo', '', '', '2011-09-23 17:04:51', '2011-09-23 17:04:51', '', 0, 'http://localhost/instaldeco/?p=1', 0, 'post', '', 1), +(2, 1, '2011-09-23 17:04:51', '2011-09-23 17:04:51', 'Esta es una página de ejemplo, Es diferente a una entrada de un blog porque se mantiene estática y, en la mayoría de temas, se mostrará en la barra de navegación. Casi todo el mundo comienza con una página Sobre mí para presentarse a los potenciales visitantes. Puede decir algo así:\n\n
¡Hola!: Soy físico durante el día, lector de manga por las noches y este es mi blog. Vivo en Albacete y tengo un gato llamado Alex. Me encantan los mojitos (y mirar a la gente corriendo en los parques)
\n\nO algo así:\n\n
La empresa Calcetines XYC se fundó en 1973, y ha estado produciendo calcetines de calidad para sus clientes desde entonces. Se encuentra en Vetusta, tiene unos 2.000 empleados e intenta ayudar en lo que puede para mejorar la vida en Vestusta
\n\nDeberías ir a tu escritorio, borrar esta página y crear algunas nuevas con tu contenido. ¡A divertirse!', 'Página de ejemplo', '', 'publish', 'open', 'open', '', 'pagina-ejemplo', '', '', '2011-09-23 17:04:51', '2011-09-23 17:04:51', '', 0, 'http://localhost/instaldeco/?page_id=2', 0, 'page', '', 0), +(3, 1, '2011-09-23 17:05:05', '0000-00-00 00:00:00', '', 'Borrador automático', '', 'auto-draft', 'open', 'open', '', '', '', '', '2011-09-23 17:05:05', '0000-00-00 00:00:00', '', 0, 'http://localhost/instaldeco/?p=3', 0, 'post', '', 0); + +-- -------------------------------------------------------- + +-- +-- Estructura de tabla para la tabla `wp_terms` +-- + +CREATE TABLE IF NOT EXISTS `wp_terms` ( + `term_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(200) NOT NULL DEFAULT '', + `slug` varchar(200) NOT NULL DEFAULT '', + `term_group` bigint(10) NOT NULL DEFAULT '0', + PRIMARY KEY (`term_id`), + UNIQUE KEY `slug` (`slug`), + KEY `name` (`name`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; + +-- +-- Volcar la base de datos para la tabla `wp_terms` +-- + +INSERT INTO `wp_terms` (`term_id`, `name`, `slug`, `term_group`) VALUES +(1, 'Sin categoría', 'sin-categoria', 0), +(2, 'Sitios de interés', 'sitios-de-interes', 0); + +-- -------------------------------------------------------- + +-- +-- Estructura de tabla para la tabla `wp_term_relationships` +-- + +CREATE TABLE IF NOT EXISTS `wp_term_relationships` ( + `object_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `term_taxonomy_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `term_order` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`object_id`,`term_taxonomy_id`), + KEY `term_taxonomy_id` (`term_taxonomy_id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Volcar la base de datos para la tabla `wp_term_relationships` +-- + +INSERT INTO `wp_term_relationships` (`object_id`, `term_taxonomy_id`, `term_order`) VALUES +(1, 2, 0), +(2, 2, 0), +(3, 2, 0), +(4, 2, 0), +(5, 2, 0), +(6, 2, 0), +(7, 2, 0), +(1, 1, 0); + +-- -------------------------------------------------------- + +-- +-- Estructura de tabla para la tabla `wp_term_taxonomy` +-- + +CREATE TABLE IF NOT EXISTS `wp_term_taxonomy` ( + `term_taxonomy_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `term_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `taxonomy` varchar(32) NOT NULL DEFAULT '', + `description` longtext NOT NULL, + `parent` bigint(20) unsigned NOT NULL DEFAULT '0', + `count` bigint(20) NOT NULL DEFAULT '0', + PRIMARY KEY (`term_taxonomy_id`), + UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`), + KEY `taxonomy` (`taxonomy`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; + +-- +-- Volcar la base de datos para la tabla `wp_term_taxonomy` +-- + +INSERT INTO `wp_term_taxonomy` (`term_taxonomy_id`, `term_id`, `taxonomy`, `description`, `parent`, `count`) VALUES +(1, 1, 'category', '', 0, 1), +(2, 2, 'link_category', '', 0, 7); + +-- -------------------------------------------------------- + +-- +-- Estructura de tabla para la tabla `wp_usermeta` +-- + +CREATE TABLE IF NOT EXISTS `wp_usermeta` ( + `umeta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `user_id` bigint(20) unsigned NOT NULL DEFAULT '0', + `meta_key` varchar(255) DEFAULT NULL, + `meta_value` longtext, + PRIMARY KEY (`umeta_id`), + KEY `user_id` (`user_id`), + KEY `meta_key` (`meta_key`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ; + +-- +-- Volcar la base de datos para la tabla `wp_usermeta` +-- + +INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES +(1, 1, 'first_name', ''), +(2, 1, 'last_name', ''), +(3, 1, 'nickname', 'rodax'), +(4, 1, 'description', ''), +(5, 1, 'rich_editing', 'true'), +(6, 1, 'comment_shortcuts', 'false'), +(7, 1, 'admin_color', 'fresh'), +(8, 1, 'use_ssl', '0'), +(9, 1, 'show_admin_bar_front', 'true'), +(10, 1, 'show_admin_bar_admin', 'false'), +(11, 1, 'aim', ''), +(12, 1, 'yim', ''), +(13, 1, 'jabber', ''), +(14, 1, 'wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}'), +(15, 1, 'wp_user_level', '10'), +(16, 1, 'wp_dashboard_quick_press_last_post_id', '3'); + +-- -------------------------------------------------------- + +-- +-- Estructura de tabla para la tabla `wp_users` +-- + +CREATE TABLE IF NOT EXISTS `wp_users` ( + `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `user_login` varchar(60) NOT NULL DEFAULT '', + `user_pass` varchar(64) NOT NULL DEFAULT '', + `user_nicename` varchar(50) NOT NULL DEFAULT '', + `user_email` varchar(100) NOT NULL DEFAULT '', + `user_url` varchar(100) NOT NULL DEFAULT '', + `user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `user_activation_key` varchar(60) NOT NULL DEFAULT '', + `user_status` int(11) NOT NULL DEFAULT '0', + `display_name` varchar(250) NOT NULL DEFAULT '', + PRIMARY KEY (`ID`), + KEY `user_login_key` (`user_login`), + KEY `user_nicename` (`user_nicename`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; + +-- +-- Volcar la base de datos para la tabla `wp_users` +-- + +INSERT INTO `wp_users` (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES +(1, 'rodax', '$P$BqFhZetRbRm3e2uUSMqEeLew82pySR1', 'rodax', 'darranz@rodax-software.com', '', '2011-09-23 17:04:51', '', 0, 'rodax'); diff --git a/src/index.php b/src/index.php new file mode 100644 index 0000000..49403ec --- /dev/null +++ b/src/index.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/src/licencia.txt b/src/licencia.txt new file mode 100644 index 0000000..c87e954 --- /dev/null +++ b/src/licencia.txt @@ -0,0 +1,322 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, Junio 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +675 Mass Ave, Cambridge, MA 02139, EEUU + +Se permiten la copia y distribución de copias literales de este documento, +pero no se permite su modificación. + +----------------------------------------------------------------------- + + NOTA IMPORTANTE + +Esta es una traducción no oficial al español de la GNU General Public +License. No ha sido publicada por la Free Software Foundation, y no +establece legalmente las condiciones de distribución para el software que +usa la GNU GPL. Estas condiciones se establecen solamente por el texto +original, en inglés, de la GNU GPL. Sin embargo, esperamos que esta +traducción ayude a los hispanohablantes a entender mejor la GNU GPL. + + AUTORES DE LA TRADUCCIÓN + + * Jesús González Barahona + * Pedro de las Heras Quirós + * Jordi J. Canals (Revisión y Formato. Junio de 2008) + * Fernando Tellado (A partir de Noviembre de 2009) + + +----------------------------------------------------------------------- + + Preámbulo + + Las licencias que cubren la mayor parte del software están diseñadas +para quitarle a usted la libertad de compartirlo y modificarlo. Por el +contrario, la Licencia Pública General de GNU pretende garantizarle la +libertad de compartir y modificar software libre, para asegurar que el +software es libre para todos sus usuarios. Esta Licencia Pública General +se aplica a la mayor parte del software del la Free Software Foundation y +a cualquier otro programa si sus autores se comprometen a utilizarla. +(Existe otro software de la Free Software Foundation que está cubierto por +la Licencia Pública General de GNU para Bibliotecas). Si quiere, también +puede aplicarla a sus propios programas. + + Cuando hablamos de software libre, estamos refiriéndonos a libertad, no +a precio. Nuestras Licencias Públicas Generales están diseñadas para +asegurarnos de que tenga la libertad de distribuir copias de software +libre (y cobrar por ese servicio si quiere), de que reciba el código +fuente o que pueda conseguirlo si lo quiere, de que pueda modificar el +software o usar fragmentos de él en nuevos programas libres, y de que sepa +que puede hacer todas estas cosas. + + Para proteger sus derechos necesitamos algunas restricciones que +prohiban a cualquiera negarle a usted estos derechos o pedirle que +renuncie a ellos. Estas restricciones se traducen en ciertas obligaciones +que le afectan si distribuye copias del software, o si lo modifica. + + Por ejemplo, si distribuye copias de uno de estos programas, sea +gratuitamente, o a cambio de una contraprestación, debe dar a los +receptores todos los derechos que tiene. Debe asegurarse de que ellos +también reciben, o pueden conseguir, el código fuente. Y debe mostrarles +estas condiciones de forma que conozcan sus derechos. + + Protegemos sus derechos con la combinación de dos medidas: + + 1. Ponemos el software bajo copyright y + 2. le ofrecemos esta licencia, que le da permiso legal para copiar, + distribuir y/o modificar el software. + + También, para la protección de cada autor y la nuestra propia, queremos +asegurarnos de que todo el mundo comprende que no se proporciona ninguna +garantía para este software libre. Si el software se modifica por +cualquiera y éste a su vez lo distribuye, queremos que sus receptores +sepan que lo que tienen no es el original, de forma que cualquier problema +introducido por otros no afecte a la reputación de los autores originales. + + Por último, cualquier programa libre está constantemente amenazado por +patentes sobre el software. Queremos evitar el peligro de que los +redistribuidores de un programa libre obtengan patentes por su cuenta, +convirtiendo de facto el programa en propietario. Para evitar esto, hemos +dejado claro que cualquier patente debe ser pedida para el uso libre de +cualquiera, o no ser pedida. + + Los términos exactos y las condiciones para la copia, distribución y +modificación se exponen a continuación. + + + GNU GENERAL PUBLIC LICENSE + TERMINOS Y CONDICIONES PARA LA COPIA, DISTRIBUCIÓN Y MODIFICACIÓN + + 0. Esta Licencia se aplica a cualquier programa u otro tipo de trabajo +que contenga una nota colocada por el tenedor del copyright diciendo que +puede ser distribuido bajo los términos de esta Licencia Pública General. +En adelante, «Programa» se referirá a cualquier programa o trabajo que +cumpla esa condición y «trabajo basado en el Programa» se referirá bien al +Programa o a cualquier trabajo derivado de él según la ley de copyright. +Esto es, un trabajo que contenga el programa o una proción de él, bien en +forma literal o con modificaciones y/o traducido en otro lenguaje. Por +lo tanto, la traducción está incluida sin limitaciones en el término +«modificación». Cada concesionario (licenciatario) será denominado «usted». + +Cualquier otra actividad que no sea la copia, distribución o modificación +no está cubierta por esta Licencia, está fuera de su ámbito. El acto de +ejecutar el Programa no está restringido, y los resultados del Programa +están cubiertos únicamente si sus contenidos constituyen un trabajo basado +en el Programa, independientemente de haberlo producido mediante la +ejecución del programa. El que esto se cumpla, depende de lo que haga el +programa. + + 1. Usted puede copiar y distribuir copias literales del código fuente +del Programa, según lo has recibido, en cualquier medio, supuesto que de +forma adecuada y bien visible publique en cada copia un anuncio de +copyright adecuado y un repudio de garantía, mantenga intactos todos los +anuncios que se refieran a esta Licencia y a la ausencia de garantía, y +proporcione a cualquier otro receptor del programa una copia de esta +Licencia junto con el Programa. + +Puede cobrar un precio por el acto físico de transferir una copia, y +puede, según su libre albedrío, ofrecer garantía a cambio de unos +honorarios. + + 3. Puede modificar su copia o copias del Programa o de cualquier +porción de él, formando de esta manera un trabajo basado en el Programa, y +copiar y distribuir esa modificación o trabajo bajo los términos del +apartado 1, antedicho, supuesto que además cumpla las siguientes +condiciones: + + a) Debe hacer que los ficheros modificados lleven anuncios prominentes + indicando que los ha cambiado y la fecha de cualquier cambio. + + b) Debe hacer que cualquier trabajo que distribuya o publique y que en + todo o en parte contenga o sea derivado del Programa o de cualquier + parte de él sea licenciada como un todo, sin carga alguna, a todas las + terceras partes y bajo los términos de esta Licencia. + + c) Si el programa modificado lee normalmente órdenes interactivamente + cuando es ejecutado, debe hacer que, cuando comience su ejecución para + ese uso interactivo de la forma más habitual, muestre o escriba un + mensaje que incluya un anuncio de copyright y un anuncio de que no se + ofrece ninguna garantía (o por el contrario que sí se ofrece garantía) + y que los usuarios pueden redistribuir el programa bajo estas + condiciones, e indicando al usuario cómo ver una copia de esta + licencia. (Excepción: si el propio programa es interactivo pero + normalmente no muestra ese anuncio, no se requiere que su trabajo + basado en el Programa muestre ningún anuncio). + + +Estos requisitos se aplican al trabajo modificado como un todo. Si partes +identificables de ese trabajo no son derivadas del Programa, y pueden, +razonablemente, ser consideradas trabajos independientes y separados por +ellos mismos, entonces esta Licencia y sus términos no se aplican a esas +partes cuando sean distribuidas como trabajos separados. Pero cuando +distribuya esas mismas secciones como partes de un todo que es un trabajo +basado en el Programa, la distribución del todo debe ser según los +términos de esta licencia, cuyos permisos para otros licenciatarios se +extienden al todo completo, y por lo tanto a todas y cada una de sus +partes, con independencia de quién la escribió. Por lo tanto, no es la +intención de este apartado reclamar derechos o desafiar sus derechos sobre +trabajos escritos totalmente por usted mismo. El intento es ejercer el +derecho a controlar la distribución de trabajos derivados o colectivos +basados en el Programa. + +Además, el simple hecho de reunir un trabajo no basado en el Programa con +el Programa (o con un trabajo basado en el Programa) en un volumen de +almacenamiento o en un medio de distribución no hace que dicho trabajo +entre dentro del ámbito cubierto por esta Licencia. + + 3. Puede copiar y distribuir el Programa (o un trabajo basado en él, +según se especifica en el apartado 2, como código objeto o en formato +ejecutable según los términos de los apartados 1 y 2, supuesto que además +cumpla una de las siguientes condiciones: + + a) Acompañarlo con el código fuente completo correspondiente, en + formato electrónico, que debe ser distribuido según se especifica en + los apartados 1 y 2 de esta Licencia en un medio habitualmente + utilizado para el intercambio de programas, o + + b) Acompañarlo con una oferta por escrito, válida durante al menos + tres años, de proporcionar a cualquier tercera parte una copia completa + en formato electrónico del código fuente correspondiente, a un coste + no mayor que el de realizar físicamente la distribución del fuente, + que será distribuido bajo las condiciones descritas en los apartados 1 + y 2 anteriores, en un medio habitualmente utilizado para el + intercambio de programas, o + + c) Acompañarlo con la información que recibiste ofreciendo distribuir + el código fuente correspondiente. (Esta opción se permite sólo para + distribución no comercial y sólo si usted recibió el programa como + código objeto o en formato ejecutable con tal oferta, de acuerdo con + el apartado b anterior). + +Por código fuente de un trabajo se entiende la forma preferida del trabajo +cuando se le hacen modificaciones. Para un trabajo ejecutable, se entiende +por código fuente completo todo el código fuente para todos los módulos +que contiene, más cualquier fichero asociado de definición de interfaces, +más los guiones utilizados para controlar la compilación e instalación del +ejecutable. Como excepción especial el código fuente distribuido no +necesita incluir nada que sea distribuido normalmente (bien como fuente, +bien en forma binaria) con los componentes principales (compilador, kernel +y similares) del sistema operativo en el cual funciona el ejecutable, a no +ser que el propio componente acompañe al ejecutable. + +Si la distribución del ejecutable o del código objeto se hace mediante la +oferta acceso para copiarlo de un cierto lugar, entonces se considera la +oferta de acceso para copiar el código fuente del mismo lugar como +distribución del código fuente, incluso aunque terceras partes no estén +forzadas a copiar el fuente junto con el código objeto. + + 4. No puede copiar, modificar, sublicenciar o distribuir el Programa +excepto como prevé expresamente esta Licencia. Cualquier intento de +copiar, modificar sublicenciar o distribuir el Programa de otra forma es +inválida, y hará que cesen automáticamente los derechos que te proporciona +esta Licencia. En cualquier caso, las partes que hayan recibido copias o +derechos de usted bajo esta Licencia no cesarán en sus derechos mientras +esas partes continúen cumpliéndola. + + 5. No está obligado a aceptar esta licencia, ya que no la ha firmado. +Sin embargo, no hay hada más que le proporcione permiso para modificar o +distribuir el Programa o sus trabajos derivados. Estas acciones están +prohibidas por la ley si no acepta esta Licencia. Por lo tanto, si +modifica o distribuye el Programa (o cualquier trabajo basado en el +Programa), está indicando que acepta esta Licencia para poder hacerlo, y +todos sus términos y condiciones para copiar, distribuir o modificar el +Programa o trabajos basados en él. + + 6. Cada vez que redistribuya el Programa (o cualquier trabajo basado en +el Programa), el receptor recibe automáticamente una licencia del +licenciatario original para copiar, distribuir o modificar el Programa, de +forma sujeta a estos términos y condiciones. No puede imponer al receptor +ninguna restricción más sobre el ejercicio de los derechos aquí +garantizados. No es usted responsable de hacer cumplir esta licencia por +terceras partes. + + 7. Si como consecuencia de una resolución judicial o de una alegación de +infracción de patente o por cualquier otra razón (no limitada a asuntos +relacionados con patentes) se le imponen condiciones (ya sea por mandato +judicial, por acuerdo o por cualquier otra causa) que contradigan las +condiciones de esta Licencia, ello no le exime de cumplir las condiciones +de esta Licencia. Si no puede realizar distribuciones de forma que se +satisfagan simultáneamente sus obligaciones bajo esta licencia y cualquier +otra obligación pertinente entonces, como consecuencia, no puede +distribuir el Programa de ninguna forma. Por ejemplo, si una patente no +permite la redistribución libre de derechos de autor del Programa por +parte de todos aquellos que reciban copias directa o indirectamente a +través de usted, entonces la única forma en que podría satisfacer tanto +esa condición como esta Licencia sería evitar completamente la +distribución del Programa. + +Si cualquier porción de este apartado se considera inválida o imposible de +cumplir bajo cualquier circunstancia particular ha de cumplirse el resto y +la sección por entero ha de cumplirse en cualquier otra circunstancia + +No es el propósito de este apartado inducirle a infringir ninguna +reivindicación de patente ni de ningún otro derecho de propiedad o +impugnar la validez de ninguna de dichas reivindicaciones. Este apartado +tiene el único propósito de proteger la integridad del sistema de +distribución de software libre, que se realiza mediante prácticas de +licencia pública. Mucha gente ha hecho contribuciones generosas a la gran +variedad de software distribuido mediante ese sistema con la confianza de +que el sistema se aplicará consistentemente. Será el autor/donante quien +decida si quiere distribuir software mediante cualquier otro sistema y una +licencia no puede imponer esa elección. + +Este apartado pretende dejar completamente claro lo que se cree que es una +consecuencia del resto de esta Licencia. + + 8. Si la distribución y/o uso de el Programa está restringida en ciertos +países, bien por patentes o por interfaces bajo copyright, el tenedor del +copyright que coloca este Programa bajo esta Licencia puede añadir una +limitación explícita de distribución geográfica excluyendo esos países, de +forma que la distribución se permita sólo en o entre los países no +excluidos de esta manera. En ese caso, esta Licencia incorporará la +limitación como si estuviese escrita en el cuerpo de esta Licencia. + + 9. La Free Software Foundation puede publicar versiones revisadas y/o +nuevas de la Licencia Pública General de tiempo en tiempo. Dichas nuevas +versiones serán similares en espíritu a la presente versión, pero pueden +ser diferentes en detalles para considerar nuevos problemas o situaciones. + +Cada versión recibe un número de versión que la distingue de otras. Si el +Programa especifica un número de versión de esta Licencia que se refiere a +ella y a «cualquier versión posterior», tienes la opción de seguir los +términos y condiciones, bien de esa versión, bien de cualquier versión +posterior publicada por la Free Software Foundation. Si el Programa no +especifica un número de versión de esta Licencia, puedes escoger cualquier +versión publicada por la Free Software Foundation. + + 10. Si quiere incorporar partes del Programa en otros programas libres +cuyas condiciones de distribución son diferentes, escribe al autor para +pedirle permiso. Si el software tiene copyright de la Free Software +Foundation, escribe a la Free Software Foundation: algunas veces hacemos +excepciones en estos casos. Nuestra decisión estará guiada por el doble +objetivo de de preservar la libertad de todos los derivados de nuestro +software libre y promover el que se comparta y reutilice el software en +general. + + + AUSENCIA DE GARANTÃA + + 11. Como el programa se licencia libre de cargas, no se ofrece ninguna +garantía sobre el programa, en todas la extensión permitida por la +legislación aplicable. Excepto cuando se indique de otra forma por +escrito, los tenedores del copyright y/u otras partes proporcionan el +programa «tal cual», sin garantía de ninguna clase, bien expresa o +implícita, con inclusión, pero sin limitación a las garantías mercantiles +implícitas o a la conveniencia para un propósito particular. Cualquier +riesgo referente a la calidad y prestaciones del programa es asumido por +usted. Si se probase que el Programa es defectuoso, asume el coste de +cualquier servicio, reparación o corrección. + + 12. En ningún caso, salvo que lo requiera la legislación aplicable o +haya sido acordado por escrito, ningún tenedor del copyright ni ninguna +otra parte que modifique y/o redistribuya el Programa según se permite en +esta Licencia será responsable ante usted por daños, incluyendo cualquier +daño general, especial, incidental o resultante producido por el uso o la +imposibilidad de uso del Programa (con inclusión, pero sin limitación a la +pérdida de datos o a la generación incorrecta de datos o a pérdidas +sufridas por usted o por terceras partes o a un fallo del Programa al +funcionar en combinación con cualquier otro programa), incluso si dicho +tenedor u otra parte ha sido advertido de la posibilidad de dichos daños. + + FIN DE TÉRMINOS Y CONDICIONES diff --git a/src/license.txt b/src/license.txt new file mode 100644 index 0000000..d31195a --- /dev/null +++ b/src/license.txt @@ -0,0 +1,281 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/src/readme.html b/src/readme.html new file mode 100644 index 0000000..964d5d6 --- /dev/null +++ b/src/readme.html @@ -0,0 +1,104 @@ + + + + + WordPress › Léame + + + +

+ WordPress +
Versión 3.2.1 +

+

Plataforma Semántica de Publicación Personal

+ +

Para empezar

+

Te damos la bienvenida. WordPress es un proyecto muy especial para mí. Cada desarrollador o colaborador añade algo único a la mezcla, y juntos vamos creando algo hermoso de lo que me enorgullece formar parte. Se han dedicado miles de horas a WordPress y nos seguimos empleando en mejorarlo cada día. Gracias por hacerlo parte de tu mundo.

+

— Matt Mullenweg

+ +

Instalación: la famosa Instalación en 5 minutos

+
    +
  1. Descomprime el paquete en una carpeta vacía.
  2. +
  3. Abre wp-config-sample.php con un editor de texto como WordPad o similar y rellena los datos de tu conexión a la base de datos.
  4. +
  5. Guarda el archivo como wp-config.php.
  6. +
  7. Sube todo a tu servidor.
  8. +
  9. Abre /wp-admin/install.php en tu navegador. Con esto deberán crearse las tablas necesarias para tu blog. Si hay algún error, haz el favor de comprobar tu archivo wp-config.php y probar de nuevo. Si vuelve a fallar, visita los foros de ayuda con todos los datos que puedas aportar.
  10. +
  11. Anota la contraseña que se te proporcionará.
  12. +
  13. El programa de instalación te enviará entonces a la página de entrada. Entra con el nombre de usuario admin y la contraseña generada durante la instalación. Ahora podrás hacer clic en 'Perfil' y cambiar la contraseña.
  14. +
+ +

Actualizar

+

Usar el Actualizador automático

+

Si estás actualizando desde la versión 2.7 o superior puedes usar el actualizador automático:

+
    +
  1. Abre wp-admin/update-core.php en tu navegador y sigue las instrucciones.
  2. +
  3. ¿Querías más?.¡Eso es todo!
  4. +
+ +

Actualizar manualmente:

+
    +
  1. Antes de actualizar nada, asegúrate de tener copias de seguridad de cualquier archivo que hayas modificado, como index.php.
  2. +
  3. Elimina tus archivos de WP anteriores, guardando aquellos que hayas modificado.
  4. +
  5. Sube los nuevos archivos a tu servidor.
  6. +
  7. Dirige tu navegador a /wp-admin/upgrade.php.
  8. +
+

Cambios en las plantillas

+

Si has modificado tus plantillas, es posible que debas hacerles algunos cambios cuando actualices entre versiones mayores.

+ +

Migrar desde otros sistemas

+

WordPress puede importar contenido de otros sistemas. Lo primero que tienes que hacer es instalar WordPress y ponerlo en marcha como se ha descrito arriba, y luego usar nuestras herramientas de importación.

+ +

Requisitos del sistema

+ + +

Recomendaciones del sistema

+ + + +

Recursos en la red

+

Si alguna de tus preguntas no encuentra respuesta en este documento, te sugerimos que aproveches los numerosos recursos de WordPress en la red:

+
+
El Codex de WordPress
+
El Codex es la enciclopedia de todo lo relacionado con WordPress. Es la fuente de información más detallada disponible sobre WordPress.
+
El blog de desarrollo
+
Aquí encontrarás las últimas actualizaciones y noticias relacionadas con WordPress. Inclúyelo en tus marcadores y visítalo con frecuencia.
+
WordPress Planet
+
El WordPress Planet (Planeta WordPress) es un agregador de noticias que recopila entradas de blogs de WordPress por toda la web.
+
Foros de ayuda de WordPress
+
Si has buscado por todas partes pero sigues sin encontrar la respuesta, en los foros de ayuda, muy activos, cuentas con una amplia comunidad deseosa de ayudar. Para ayudarles a ayudarte, asegúrate de usar un título descriptivo e incluir en tu pregunta tantos detalles como te sea posible.
+
Canal IRC de WordPress
+
Por último, existe un canal de chat utilizado por la gente que usa Wordpress para intercambiar opiniones y eventualmente solicitar ayuda. La página del wiki que ves arriba podrá orientarte. (irc.freenode.net #wordpress)
+
+ +

Interfaz XML-RPC y Atom

+

Ahora puedes publicar en tu blog de WordPress con herramientas como Windows Live Writer, Ecto, Bloggar, Radio Userland (es decir, puedes utilizar la función de blog por e-mail de Radio Userland), NewzCrawler, y otras herramientas compatibles con las API (en inglés, Interfaz de Programación de la Aplicación) de blog. :) Puedes ampliar la información en XML-RPC support en el Codex.

+ +

Publicar por e-mail

+

Puedes publicar por medio de un cliente de e-mail. Para configurar esta opción, ve a la pantalla de opciones de "Escribir" y rellena los datos de tu cuenta POP3 secreta. Después tendrás que configurar la ejecución periódica de wp-mail.php para que revise el buzón en busca de correo nuevo. Puedes hacerlo mediante Cron-jobs o, si tu proveedor de alojamiento no lo permite, buscar uno de los muchos servicios de monitorización web para que compruebe la URL de tu wp-mail.php.

+

Publicar es sencillo: cualquier mensaje que envíes a la dirección especificada será publicado, con el asunto como título. Por eso es mejor mantener en privado la dirección. El script borrará los mensajes una vez publicados.

+ +

Perfiles de usuario

+

Hemos introducido un sistema flexible de perfiles de usuario en la versión 2.0. Puedes leer más sobre Funciones y Competencias en el Codex.

+ +

Notas finales

+ + +

Comparte tu afición

+

WordPress no cuenta con campañas de publicidad multimillonarias ni promotores famosos, pero tiene algo aún mejor: tú. Si disfrutas con WordPress, por favor, piensa en decírselo a un amigo, instalárselo a alguien menos entendido que tú o escribir al autor de un artículo que pase de nosotros.

+ +

WordPress es la continuación oficial de b2/cafélog, de Michel V. El trabajo se ha continuado gracias a los desarrolladores de WordPress. Si quieres apoyar a WordPress puedes dar un donativo.

+ +

Copyright

+

WordPress se distribuye bajo la GPLv2 (ver la licencia).

+ + + diff --git a/src/wp-activate.php b/src/wp-activate.php new file mode 100644 index 0000000..1ec4028 --- /dev/null +++ b/src/wp-activate.php @@ -0,0 +1,102 @@ +cache_enabled = false; + +do_action( 'activate_header' ); + +function do_activate_header() { + do_action( 'activate_wp_head' ); +} +add_action( 'wp_head', 'do_activate_header' ); + +function wpmu_activate_stylesheet() { + ?> + + + +
+ + +

+
+

+ +
+

+

+ +

+
+ + get_error_code() || 'blog_taken' == $result->get_error_code() ) { + $signup = $result->get_error_data(); + ?> +

+ '; + if ( $signup->domain . $signup->path == '' ) { + printf( __('Your account has been activated. You may now log in to the site using your chosen username of “%2$s”. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can reset your password.'), network_site_url( 'wp-login.php', 'login' ), $signup->user_login, $signup->user_email, network_site_url( 'wp-login.php?action=lostpassword', 'login' ) ); + } else { + printf( __('Your site at %2$s is active. You may now log in to your site using your chosen username of “%3$s”. Please check your email inbox at %4$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can reset your password.'), 'http://' . $signup->domain, $signup->domain, $signup->user_login, $signup->user_email, network_site_url( 'wp-login.php?action=lostpassword' ) ); + } + echo '

'; + } else { + ?> +

+ '.$result->get_error_message().'

'; + } + } else { + extract($result); + $url = get_blogaddress_by_id( (int) $blog_id); + $user = new WP_User( (int) $user_id); + ?> +

+ +
+

user_login ?>

+

+
+ + +

View your site or Log in'), $url, $url . 'wp-login.php' ); ?>

+ +

Log in or go back to the homepage.' ), network_site_url('wp-login.php', 'login'), network_home_url() ); ?>

+ +
+ + \ No newline at end of file diff --git a/src/wp-admin/admin-ajax.php b/src/wp-admin/admin-ajax.php new file mode 100644 index 0000000..18a853b --- /dev/null +++ b/src/wp-admin/admin-ajax.php @@ -0,0 +1,1555 @@ +ALERT: You are logged out! Could not save draft. Please log in again.'), wp_login_url() ); + $x = new WP_Ajax_Response( array( + 'what' => 'autosave', + 'id' => $id, + 'data' => $message + ) ); + $x->send(); + } + + if ( !empty( $_REQUEST['action'] ) ) + do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] ); + + die('-1'); +} + +if ( isset( $_GET['action'] ) ) : +switch ( $action = $_GET['action'] ) : +case 'fetch-list' : + + $list_class = $_GET['list_args']['class']; + check_ajax_referer( "fetch-list-$list_class", '_ajax_fetch_list_nonce' ); + + $current_screen = (object) $_GET['list_args']['screen']; + //TODO fix this in a better way see #15336 + $current_screen->is_network = 'false' === $current_screen->is_network ? false : true; + $current_screen->is_user = 'false' === $current_screen->is_user ? false : true; + + define( 'WP_NETWORK_ADMIN', $current_screen->is_network ); + define( 'WP_USER_ADMIN', $current_screen->is_user ); + + $wp_list_table = _get_list_table( $list_class ); + if ( ! $wp_list_table ) + die( '0' ); + + if ( ! $wp_list_table->ajax_user_can() ) + die( '-1' ); + + $wp_list_table->ajax_response(); + + die( '0' ); + break; +case 'ajax-tag-search' : + if ( isset( $_GET['tax'] ) ) { + $taxonomy = sanitize_key( $_GET['tax'] ); + $tax = get_taxonomy( $taxonomy ); + if ( ! $tax ) + die( '0' ); + if ( ! current_user_can( $tax->cap->assign_terms ) ) + die( '-1' ); + } else { + die('0'); + } + + $s = stripslashes( $_GET['q'] ); + + if ( false !== strpos( $s, ',' ) ) { + $s = explode( ',', $s ); + $s = $s[count( $s ) - 1]; + } + $s = trim( $s ); + if ( strlen( $s ) < 2 ) + die; // require 2 chars for matching + + $results = $wpdb->get_col( $wpdb->prepare( "SELECT t.name FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.name LIKE (%s)", $taxonomy, '%' . like_escape( $s ) . '%' ) ); + + echo join( $results, "\n" ); + die; + break; +case 'wp-compression-test' : + if ( !current_user_can( 'manage_options' ) ) + die('-1'); + + if ( ini_get('zlib.output_compression') || 'ob_gzhandler' == ini_get('output_handler') ) { + update_site_option('can_compress_scripts', 0); + die('0'); + } + + if ( isset($_GET['test']) ) { + header( 'Expires: Wed, 11 Jan 1984 05:00:00 GMT' ); + header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); + header( 'Cache-Control: no-cache, must-revalidate, max-age=0' ); + header( 'Pragma: no-cache' ); + header('Content-Type: application/x-javascript; charset=UTF-8'); + $force_gzip = ( defined('ENFORCE_GZIP') && ENFORCE_GZIP ); + $test_str = '"wpCompressionTest Lorem ipsum dolor sit amet consectetuer mollis sapien urna ut a. Eu nonummy condimentum fringilla tempor pretium platea vel nibh netus Maecenas. Hac molestie amet justo quis pellentesque est ultrices interdum nibh Morbi. Cras mattis pretium Phasellus ante ipsum ipsum ut sociis Suspendisse Lorem. Ante et non molestie. Porta urna Vestibulum egestas id congue nibh eu risus gravida sit. Ac augue auctor Ut et non a elit massa id sodales. Elit eu Nulla at nibh adipiscing mattis lacus mauris at tempus. Netus nibh quis suscipit nec feugiat eget sed lorem et urna. Pellentesque lacus at ut massa consectetuer ligula ut auctor semper Pellentesque. Ut metus massa nibh quam Curabitur molestie nec mauris congue. Volutpat molestie elit justo facilisis neque ac risus Ut nascetur tristique. Vitae sit lorem tellus et quis Phasellus lacus tincidunt nunc Fusce. Pharetra wisi Suspendisse mus sagittis libero lacinia Integer consequat ac Phasellus. Et urna ac cursus tortor aliquam Aliquam amet tellus volutpat Vestibulum. Justo interdum condimentum In augue congue tellus sollicitudin Quisque quis nibh."'; + + if ( 1 == $_GET['test'] ) { + echo $test_str; + die; + } elseif ( 2 == $_GET['test'] ) { + if ( !isset($_SERVER['HTTP_ACCEPT_ENCODING']) ) + die('-1'); + if ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') && function_exists('gzdeflate') && ! $force_gzip ) { + header('Content-Encoding: deflate'); + $out = gzdeflate( $test_str, 1 ); + } elseif ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') ) { + header('Content-Encoding: gzip'); + $out = gzencode( $test_str, 1 ); + } else { + die('-1'); + } + echo $out; + die; + } elseif ( 'no' == $_GET['test'] ) { + update_site_option('can_compress_scripts', 0); + } elseif ( 'yes' == $_GET['test'] ) { + update_site_option('can_compress_scripts', 1); + } + } + + die('0'); + break; +case 'imgedit-preview' : + $post_id = intval($_GET['postid']); + if ( empty($post_id) || !current_user_can('edit_post', $post_id) ) + die('-1'); + + check_ajax_referer( "image_editor-$post_id" ); + + include_once( ABSPATH . 'wp-admin/includes/image-edit.php' ); + if ( ! stream_preview_image($post_id) ) + die('-1'); + + die(); + break; +case 'menu-quick-search': + if ( ! current_user_can( 'edit_theme_options' ) ) + die('-1'); + + require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; + + _wp_ajax_menu_quick_search( $_REQUEST ); + + exit; + break; +case 'oembed-cache' : + $return = ( $wp_embed->cache_oembed( $_GET['post'] ) ) ? '1' : '0'; + die( $return ); + break; +default : + do_action( 'wp_ajax_' . $_GET['action'] ); + die('0'); + break; +endswitch; +endif; + +/** + * Sends back current comment total and new page links if they need to be updated. + * + * Contrary to normal success AJAX response ("1"), die with time() on success. + * + * @since 2.7 + * + * @param int $comment_id + * @return die + */ +function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) { + $total = (int) @$_POST['_total']; + $per_page = (int) @$_POST['_per_page']; + $page = (int) @$_POST['_page']; + $url = esc_url_raw( @$_POST['_url'] ); + // JS didn't send us everything we need to know. Just die with success message + if ( !$total || !$per_page || !$page || !$url ) + die( (string) time() ); + + $total += $delta; + if ( $total < 0 ) + $total = 0; + + // Only do the expensive stuff on a page-break, and about 1 other time per page + if ( 0 == $total % $per_page || 1 == mt_rand( 1, $per_page ) ) { + $post_id = 0; + $status = 'total_comments'; // What type of comment count are we looking for? + $parsed = parse_url( $url ); + if ( isset( $parsed['query'] ) ) { + parse_str( $parsed['query'], $query_vars ); + if ( !empty( $query_vars['comment_status'] ) ) + $status = $query_vars['comment_status']; + if ( !empty( $query_vars['p'] ) ) + $post_id = (int) $query_vars['p']; + } + + $comment_count = wp_count_comments($post_id); + + if ( isset( $comment_count->$status ) ) // We're looking for a known type of comment count + $total = $comment_count->$status; + // else use the decremented value from above + } + + $time = time(); // The time since the last comment count + + $x = new WP_Ajax_Response( array( + 'what' => 'comment', + 'id' => $comment_id, // here for completeness - not used + 'supplemental' => array( + 'total_items_i18n' => sprintf( _n( '1 item', '%s items', $total ), number_format_i18n( $total ) ), + 'total_pages' => ceil( $total / $per_page ), + 'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ), + 'total' => $total, + 'time' => $time + ) + ) ); + $x->send(); +} + +function _wp_ajax_add_hierarchical_term() { + $action = $_POST['action']; + $taxonomy = get_taxonomy(substr($action, 4)); + check_ajax_referer( $action, '_ajax_nonce-add-' . $taxonomy->name ); + if ( !current_user_can( $taxonomy->cap->edit_terms ) ) + die('-1'); + $names = explode(',', $_POST['new'.$taxonomy->name]); + $parent = isset($_POST['new'.$taxonomy->name.'_parent']) ? (int) $_POST['new'.$taxonomy->name.'_parent'] : 0; + if ( 0 > $parent ) + $parent = 0; + if ( $taxonomy->name == 'category' ) + $post_category = isset($_POST['post_category']) ? (array) $_POST['post_category'] : array(); + else + $post_category = ( isset($_POST['tax_input']) && isset($_POST['tax_input'][$taxonomy->name]) ) ? (array) $_POST['tax_input'][$taxonomy->name] : array(); + $checked_categories = array_map( 'absint', (array) $post_category ); + $popular_ids = wp_popular_terms_checklist($taxonomy->name, 0, 10, false); + + foreach ( $names as $cat_name ) { + $cat_name = trim($cat_name); + $category_nicename = sanitize_title($cat_name); + if ( '' === $category_nicename ) + continue; + if ( !($cat_id = term_exists($cat_name, $taxonomy->name, $parent)) ) { + $new_term = wp_insert_term($cat_name, $taxonomy->name, array('parent' => $parent)); + $cat_id = $new_term['term_id']; + } + $checked_categories[] = $cat_id; + if ( $parent ) // Do these all at once in a second + continue; + $category = get_term( $cat_id, $taxonomy->name ); + ob_start(); + wp_terms_checklist( 0, array( 'taxonomy' => $taxonomy->name, 'descendants_and_self' => $cat_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids )); + $data = ob_get_contents(); + ob_end_clean(); + $add = array( + 'what' => $taxonomy->name, + 'id' => $cat_id, + 'data' => str_replace( array("\n", "\t"), '', $data), + 'position' => -1 + ); + } + + if ( $parent ) { // Foncy - replace the parent and all its children + $parent = get_term( $parent, $taxonomy->name ); + $term_id = $parent->term_id; + + while ( $parent->parent ) { // get the top parent + $parent = &get_term( $parent->parent, $taxonomy->name ); + if ( is_wp_error( $parent ) ) + break; + $term_id = $parent->term_id; + } + + ob_start(); + wp_terms_checklist( 0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $term_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids)); + $data = ob_get_contents(); + ob_end_clean(); + $add = array( + 'what' => $taxonomy->name, + 'id' => $term_id, + 'data' => str_replace( array("\n", "\t"), '', $data), + 'position' => -1 + ); + } + + ob_start(); + wp_dropdown_categories( array( + 'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name', + 'hierarchical' => 1, 'show_option_none' => '— '.$taxonomy->labels->parent_item.' —' + ) ); + $sup = ob_get_contents(); + ob_end_clean(); + $add['supplemental'] = array( 'newcat_parent' => $sup ); + + $x = new WP_Ajax_Response( $add ); + $x->send(); +} + +$id = isset($_POST['id'])? (int) $_POST['id'] : 0; +switch ( $action = $_POST['action'] ) : +case 'delete-comment' : // On success, die with time() instead of 1 + if ( !$comment = get_comment( $id ) ) + die( (string) time() ); + if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) ) + die('-1'); + + check_ajax_referer( "delete-comment_$id" ); + $status = wp_get_comment_status( $comment->comment_ID ); + + $delta = -1; + if ( isset($_POST['trash']) && 1 == $_POST['trash'] ) { + if ( 'trash' == $status ) + die( (string) time() ); + $r = wp_trash_comment( $comment->comment_ID ); + } elseif ( isset($_POST['untrash']) && 1 == $_POST['untrash'] ) { + if ( 'trash' != $status ) + die( (string) time() ); + $r = wp_untrash_comment( $comment->comment_ID ); + if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'trash' ) // undo trash, not in trash + $delta = 1; + } elseif ( isset($_POST['spam']) && 1 == $_POST['spam'] ) { + if ( 'spam' == $status ) + die( (string) time() ); + $r = wp_spam_comment( $comment->comment_ID ); + } elseif ( isset($_POST['unspam']) && 1 == $_POST['unspam'] ) { + if ( 'spam' != $status ) + die( (string) time() ); + $r = wp_unspam_comment( $comment->comment_ID ); + if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'spam' ) // undo spam, not in spam + $delta = 1; + } elseif ( isset($_POST['delete']) && 1 == $_POST['delete'] ) { + $r = wp_delete_comment( $comment->comment_ID ); + } else { + die('-1'); + } + + if ( $r ) // Decide if we need to send back '1' or a more complicated response including page links and comment counts + _wp_ajax_delete_comment_response( $comment->comment_ID, $delta ); + die( '0' ); + break; +case 'delete-tag' : + $tag_id = (int) $_POST['tag_ID']; + check_ajax_referer( "delete-tag_$tag_id" ); + + $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag'; + $tax = get_taxonomy($taxonomy); + + if ( !current_user_can( $tax->cap->delete_terms ) ) + die('-1'); + + $tag = get_term( $tag_id, $taxonomy ); + if ( !$tag || is_wp_error( $tag ) ) + die('1'); + + if ( wp_delete_term($tag_id, $taxonomy)) + die('1'); + else + die('0'); + break; +case 'delete-link' : + check_ajax_referer( "delete-bookmark_$id" ); + if ( !current_user_can( 'manage_links' ) ) + die('-1'); + + $link = get_bookmark( $id ); + if ( !$link || is_wp_error( $link ) ) + die('1'); + + if ( wp_delete_link( $id ) ) + die('1'); + else + die('0'); + break; +case 'delete-meta' : + check_ajax_referer( "delete-meta_$id" ); + if ( !$meta = get_post_meta_by_id( $id ) ) + die('1'); + + if ( !current_user_can( 'edit_post', $meta->post_id ) || is_protected_meta( $meta->meta_key ) ) + die('-1'); + if ( delete_meta( $meta->meta_id ) ) + die('1'); + die('0'); + break; +case 'delete-post' : + check_ajax_referer( "{$action}_$id" ); + if ( !current_user_can( 'delete_post', $id ) ) + die('-1'); + + if ( !get_post( $id ) ) + die('1'); + + if ( wp_delete_post( $id ) ) + die('1'); + else + die('0'); + break; +case 'trash-post' : +case 'untrash-post' : + check_ajax_referer( "{$action}_$id" ); + if ( !current_user_can( 'delete_post', $id ) ) + die('-1'); + + if ( !get_post( $id ) ) + die('1'); + + if ( 'trash-post' == $action ) + $done = wp_trash_post( $id ); + else + $done = wp_untrash_post( $id ); + + if ( $done ) + die('1'); + + die('0'); + break; +case 'delete-page' : + check_ajax_referer( "{$action}_$id" ); + if ( !current_user_can( 'delete_page', $id ) ) + die('-1'); + + if ( !get_page( $id ) ) + die('1'); + + if ( wp_delete_post( $id ) ) + die('1'); + else + die('0'); + break; +case 'dim-comment' : // On success, die with time() instead of 1 + + if ( !$comment = get_comment( $id ) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'comment', + 'id' => new WP_Error('invalid_comment', sprintf(__('Comment %d does not exist'), $id)) + ) ); + $x->send(); + } + + if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) && !current_user_can( 'moderate_comments' ) ) + die('-1'); + + $current = wp_get_comment_status( $comment->comment_ID ); + if ( $_POST['new'] == $current ) + die( (string) time() ); + + check_ajax_referer( "approve-comment_$id" ); + if ( in_array( $current, array( 'unapproved', 'spam' ) ) ) + $result = wp_set_comment_status( $comment->comment_ID, 'approve', true ); + else + $result = wp_set_comment_status( $comment->comment_ID, 'hold', true ); + + if ( is_wp_error($result) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'comment', + 'id' => $result + ) ); + $x->send(); + } + + // Decide if we need to send back '1' or a more complicated response including page links and comment counts + _wp_ajax_delete_comment_response( $comment->comment_ID ); + die( '0' ); + break; +case 'add-link-category' : // On the Fly + check_ajax_referer( $action ); + if ( !current_user_can( 'manage_categories' ) ) + die('-1'); + $names = explode(',', $_POST['newcat']); + $x = new WP_Ajax_Response(); + foreach ( $names as $cat_name ) { + $cat_name = trim($cat_name); + $slug = sanitize_title($cat_name); + if ( '' === $slug ) + continue; + if ( !$cat_id = term_exists( $cat_name, 'link_category' ) ) { + $cat_id = wp_insert_term( $cat_name, 'link_category' ); + } + $cat_id = $cat_id['term_id']; + $cat_name = esc_html(stripslashes($cat_name)); + $x->add( array( + 'what' => 'link-category', + 'id' => $cat_id, + 'data' => "", + 'position' => -1 + ) ); + } + $x->send(); + break; +case 'add-tag' : + check_ajax_referer( 'add-tag', '_wpnonce_add-tag' ); + $post_type = !empty($_POST['post_type']) ? $_POST['post_type'] : 'post'; + $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag'; + $tax = get_taxonomy($taxonomy); + + if ( !current_user_can( $tax->cap->edit_terms ) ) + die('-1'); + + $x = new WP_Ajax_Response(); + + $tag = wp_insert_term($_POST['tag-name'], $taxonomy, $_POST ); + + if ( !$tag || is_wp_error($tag) || (!$tag = get_term( $tag['term_id'], $taxonomy )) ) { + $message = __('An error has occurred. Please reload the page and try again.'); + if ( is_wp_error($tag) && $tag->get_error_message() ) + $message = $tag->get_error_message(); + + $x->add( array( + 'what' => 'taxonomy', + 'data' => new WP_Error('error', $message ) + ) ); + $x->send(); + } + + set_current_screen( $_POST['screen'] ); + + $wp_list_table = _get_list_table('WP_Terms_List_Table'); + + $level = 0; + if ( is_taxonomy_hierarchical($taxonomy) ) { + $level = count( get_ancestors( $tag->term_id, $taxonomy ) ); + ob_start(); + $wp_list_table->single_row( $tag, $level ); + $noparents = ob_get_clean(); + } + + ob_start(); + $wp_list_table->single_row( $tag ); + $parents = ob_get_clean(); + + $x->add( array( + 'what' => 'taxonomy', + 'supplemental' => compact('parents', 'noparents') + ) ); + $x->add( array( + 'what' => 'term', + 'position' => $level, + 'supplemental' => (array) $tag + ) ); + $x->send(); + break; +case 'get-tagcloud' : + if ( isset( $_POST['tax'] ) ) { + $taxonomy = sanitize_key( $_POST['tax'] ); + $tax = get_taxonomy( $taxonomy ); + if ( ! $tax ) + die( '0' ); + if ( ! current_user_can( $tax->cap->assign_terms ) ) + die( '-1' ); + } else { + die('0'); + } + + $tags = get_terms( $taxonomy, array( 'number' => 45, 'orderby' => 'count', 'order' => 'DESC' ) ); + + if ( empty( $tags ) ) + die( isset( $tax->no_tagcloud ) ? $tax->no_tagcloud : __('No tags found!') ); + + if ( is_wp_error( $tags ) ) + die( $tags->get_error_message() ); + + foreach ( $tags as $key => $tag ) { + $tags[ $key ]->link = '#'; + $tags[ $key ]->id = $tag->term_id; + } + + // We need raw tag names here, so don't filter the output + $return = wp_generate_tag_cloud( $tags, array('filter' => 0) ); + + if ( empty($return) ) + die('0'); + + echo $return; + + exit; + break; +case 'get-comments' : + check_ajax_referer( $action ); + + set_current_screen( 'edit-comments' ); + + $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); + + if ( !current_user_can( 'edit_post', $post_id ) ) + die('-1'); + + $wp_list_table->prepare_items(); + + if ( !$wp_list_table->has_items() ) + die('1'); + + $x = new WP_Ajax_Response(); + ob_start(); + foreach ( $wp_list_table->items as $comment ) { + get_comment( $comment ); + $wp_list_table->single_row( $comment ); + } + $comment_list_item = ob_get_contents(); + ob_end_clean(); + + $x->add( array( + 'what' => 'comments', + 'data' => $comment_list_item + ) ); + $x->send(); + break; +case 'replyto-comment' : + check_ajax_referer( $action, '_ajax_nonce-replyto-comment' ); + + set_current_screen( 'edit-comments' ); + + $comment_post_ID = (int) $_POST['comment_post_ID']; + if ( !current_user_can( 'edit_post', $comment_post_ID ) ) + die('-1'); + + $status = $wpdb->get_var( $wpdb->prepare("SELECT post_status FROM $wpdb->posts WHERE ID = %d", $comment_post_ID) ); + + if ( empty($status) ) + die('1'); + elseif ( in_array($status, array('draft', 'pending', 'trash') ) ) + die( __('Error: you are replying to a comment on a draft post.') ); + + $user = wp_get_current_user(); + if ( $user->ID ) { + $comment_author = $wpdb->escape($user->display_name); + $comment_author_email = $wpdb->escape($user->user_email); + $comment_author_url = $wpdb->escape($user->user_url); + $comment_content = trim($_POST['content']); + if ( current_user_can('unfiltered_html') ) { + if ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) { + kses_remove_filters(); // start with a clean slate + kses_init_filters(); // set up the filters + } + } + } else { + die( __('Sorry, you must be logged in to reply to a comment.') ); + } + + if ( '' == $comment_content ) + die( __('Error: please type a comment.') ); + + $comment_parent = absint($_POST['comment_ID']); + $comment_auto_approved = false; + $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID'); + + $comment_id = wp_new_comment( $commentdata ); + $comment = get_comment($comment_id); + if ( ! $comment ) die('1'); + + $position = ( isset($_POST['position']) && (int) $_POST['position'] ) ? (int) $_POST['position'] : '-1'; + + + // automatically approve parent comment + if ( !empty($_POST['approve_parent']) ) { + $parent = get_comment( $comment_parent ); + + if ( $parent && $parent->comment_approved === '0' && $parent->comment_post_ID == $comment_post_ID ) { + if ( wp_set_comment_status( $parent->comment_ID, 'approve' ) ) + $comment_auto_approved = true; + } + } + + ob_start(); + if ( 'dashboard' == $_REQUEST['mode'] ) { + require_once( ABSPATH . 'wp-admin/includes/dashboard.php' ); + _wp_dashboard_recent_comments_row( $comment ); + } else { + if ( 'single' == $_REQUEST['mode'] ) { + $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); + } else { + $wp_list_table = _get_list_table('WP_Comments_List_Table'); + } + $wp_list_table->single_row( $comment ); + } + $comment_list_item = ob_get_contents(); + ob_end_clean(); + + $response = array( + 'what' => 'comment', + 'id' => $comment->comment_ID, + 'data' => $comment_list_item, + 'position' => $position + ); + + if ( $comment_auto_approved ) + $response['supplemental'] = array( 'parent_approved' => $parent->comment_ID ); + + $x = new WP_Ajax_Response(); + $x->add( $response ); + $x->send(); + break; +case 'edit-comment' : + check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' ); + + set_current_screen( 'edit-comments' ); + + $comment_post_ID = (int) $_POST['comment_post_ID']; + if ( ! current_user_can( 'edit_post', $comment_post_ID ) ) + die('-1'); + + if ( '' == $_POST['content'] ) + die( __('Error: please type a comment.') ); + + $comment_id = (int) $_POST['comment_ID']; + $_POST['comment_status'] = $_POST['status']; + edit_comment(); + + $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1'; + $comments_status = isset($_POST['comments_listing']) ? $_POST['comments_listing'] : ''; + + $checkbox = ( isset($_POST['checkbox']) && true == $_POST['checkbox'] ) ? 1 : 0; + $wp_list_table = _get_list_table( $checkbox ? 'WP_Comments_List_Table' : 'WP_Post_Comments_List_Table' ); + + ob_start(); + $wp_list_table->single_row( get_comment( $comment_id ) ); + $comment_list_item = ob_get_contents(); + ob_end_clean(); + + $x = new WP_Ajax_Response(); + + $x->add( array( + 'what' => 'edit_comment', + 'id' => $comment->comment_ID, + 'data' => $comment_list_item, + 'position' => $position + )); + + $x->send(); + break; +case 'add-menu-item' : + if ( ! current_user_can( 'edit_theme_options' ) ) + die('-1'); + + check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' ); + + require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; + + // For performance reasons, we omit some object properties from the checklist. + // The following is a hacky way to restore them when adding non-custom items. + + $menu_items_data = array(); + foreach ( (array) $_POST['menu-item'] as $menu_item_data ) { + if ( + ! empty( $menu_item_data['menu-item-type'] ) && + 'custom' != $menu_item_data['menu-item-type'] && + ! empty( $menu_item_data['menu-item-object-id'] ) + ) { + switch( $menu_item_data['menu-item-type'] ) { + case 'post_type' : + $_object = get_post( $menu_item_data['menu-item-object-id'] ); + break; + + case 'taxonomy' : + $_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] ); + break; + } + + $_menu_items = array_map( 'wp_setup_nav_menu_item', array( $_object ) ); + $_menu_item = array_shift( $_menu_items ); + + // Restore the missing menu item properties + $menu_item_data['menu-item-description'] = $_menu_item->description; + } + + $menu_items_data[] = $menu_item_data; + } + + $item_ids = wp_save_nav_menu_items( 0, $menu_items_data ); + if ( is_wp_error( $item_ids ) ) + die('-1'); + + foreach ( (array) $item_ids as $menu_item_id ) { + $menu_obj = get_post( $menu_item_id ); + if ( ! empty( $menu_obj->ID ) ) { + $menu_obj = wp_setup_nav_menu_item( $menu_obj ); + $menu_obj->label = $menu_obj->title; // don't show "(pending)" in ajax-added items + $menu_items[] = $menu_obj; + } + } + + if ( ! empty( $menu_items ) ) { + $args = array( + 'after' => '', + 'before' => '', + 'link_after' => '', + 'link_before' => '', + 'walker' => new Walker_Nav_Menu_Edit, + ); + echo walk_nav_menu_tree( $menu_items, 0, (object) $args ); + } + break; +case 'add-meta' : + check_ajax_referer( 'add-meta', '_ajax_nonce-add-meta' ); + $c = 0; + $pid = (int) $_POST['post_id']; + $post = get_post( $pid ); + + if ( isset($_POST['metakeyselect']) || isset($_POST['metakeyinput']) ) { + if ( !current_user_can( 'edit_post', $pid ) ) + die('-1'); + if ( isset($_POST['metakeyselect']) && '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput']) ) + die('1'); + if ( $post->post_status == 'auto-draft' ) { + $save_POST = $_POST; // Backup $_POST + $_POST = array(); // Make it empty for edit_post() + $_POST['action'] = 'draft'; // Warning fix + $_POST['post_ID'] = $pid; + $_POST['post_type'] = $post->post_type; + $_POST['post_status'] = 'draft'; + $now = current_time('timestamp', 1); + $_POST['post_title'] = sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now)); + + if ( $pid = edit_post() ) { + if ( is_wp_error( $pid ) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'meta', + 'data' => $pid + ) ); + $x->send(); + } + $_POST = $save_POST; // Now we can restore original $_POST again + if ( !$mid = add_meta( $pid ) ) + die(__('Please provide a custom field value.')); + } else { + die('0'); + } + } else if ( !$mid = add_meta( $pid ) ) { + die(__('Please provide a custom field value.')); + } + + $meta = get_post_meta_by_id( $mid ); + $pid = (int) $meta->post_id; + $meta = get_object_vars( $meta ); + $x = new WP_Ajax_Response( array( + 'what' => 'meta', + 'id' => $mid, + 'data' => _list_meta_row( $meta, $c ), + 'position' => 1, + 'supplemental' => array('postid' => $pid) + ) ); + } else { // Update? + $mid = (int) array_pop( array_keys($_POST['meta']) ); + $key = $_POST['meta'][$mid]['key']; + $value = $_POST['meta'][$mid]['value']; + if ( '' == trim($key) ) + die(__('Please provide a custom field name.')); + if ( '' == trim($value) ) + die(__('Please provide a custom field value.')); + if ( !$meta = get_post_meta_by_id( $mid ) ) + die('0'); // if meta doesn't exist + if ( !current_user_can( 'edit_post', $meta->post_id ) ) + die('-1'); + if ( is_protected_meta( $meta->meta_key ) ) + die('-1'); + if ( $meta->meta_value != stripslashes($value) || $meta->meta_key != stripslashes($key) ) { + if ( !$u = update_meta( $mid, $key, $value ) ) + die('0'); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems). + } + + $key = stripslashes($key); + $value = stripslashes($value); + $x = new WP_Ajax_Response( array( + 'what' => 'meta', + 'id' => $mid, 'old_id' => $mid, + 'data' => _list_meta_row( array( + 'meta_key' => $key, + 'meta_value' => $value, + 'meta_id' => $mid + ), $c ), + 'position' => 0, + 'supplemental' => array('postid' => $meta->post_id) + ) ); + } + $x->send(); + break; +case 'add-user' : + check_ajax_referer( $action ); + if ( !current_user_can('create_users') ) + die('-1'); + if ( !$user_id = add_user() ) + die('0'); + elseif ( is_wp_error( $user_id ) ) { + $x = new WP_Ajax_Response( array( + 'what' => 'user', + 'id' => $user_id + ) ); + $x->send(); + } + $user_object = new WP_User( $user_id ); + + $wp_list_table = _get_list_table('WP_Users_List_Table'); + + $x = new WP_Ajax_Response( array( + 'what' => 'user', + 'id' => $user_id, + 'data' => $wp_list_table->single_row( $user_object, '', $user_object->roles[0] ), + 'supplemental' => array( + 'show-link' => sprintf(__( 'User %s added' ), "user-$user_id", $user_object->user_login), + 'role' => $user_object->roles[0] + ) + ) ); + $x->send(); + break; +case 'autosave' : // The name of this action is hardcoded in edit_post() + define( 'DOING_AUTOSAVE', true ); + + $nonce_age = check_ajax_referer( 'autosave', 'autosavenonce' ); + + $_POST['post_category'] = explode(",", $_POST['catslist']); + if ( $_POST['post_type'] == 'page' || empty($_POST['post_category']) ) + unset($_POST['post_category']); + + $do_autosave = (bool) $_POST['autosave']; + $do_lock = true; + + $data = $alert = ''; + /* translators: draft saved date format, see http://php.net/date */ + $draft_saved_date_format = __('g:i:s a'); + /* translators: %s: date and time */ + $message = sprintf( __('Draft saved at %s.'), date_i18n( $draft_saved_date_format ) ); + + $supplemental = array(); + if ( isset($login_grace_period) ) + $alert .= sprintf( __('Your login has expired. Please open a new browser window and log in again. '), add_query_arg( 'interim-login', 1, wp_login_url() ) ); + + $id = $revision_id = 0; + + $post_ID = (int) $_POST['post_ID']; + $_POST['ID'] = $post_ID; + $post = get_post($post_ID); + if ( 'auto-draft' == $post->post_status ) + $_POST['post_status'] = 'draft'; + + if ( $last = wp_check_post_lock( $post->ID ) ) { + $do_autosave = $do_lock = false; + + $last_user = get_userdata( $last ); + $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' ); + $data = __( 'Autosave disabled.' ); + + $supplemental['disable_autosave'] = 'disable'; + $alert .= sprintf( __( '%s is currently editing this article. If you update it, you will overwrite the changes.' ), esc_html( $last_user_name ) ); + } + + if ( 'page' == $post->post_type ) { + if ( !current_user_can('edit_page', $post_ID) ) + die(__('You are not allowed to edit this page.')); + } else { + if ( !current_user_can('edit_post', $post_ID) ) + die(__('You are not allowed to edit this post.')); + } + + if ( $do_autosave ) { + // Drafts and auto-drafts are just overwritten by autosave + if ( 'auto-draft' == $post->post_status || 'draft' == $post->post_status ) { + $id = edit_post(); + } else { // Non drafts are not overwritten. The autosave is stored in a special post revision. + $revision_id = wp_create_post_autosave( $post->ID ); + if ( is_wp_error($revision_id) ) + $id = $revision_id; + else + $id = $post->ID; + } + $data = $message; + } else { + if ( isset( $_POST['auto_draft'] ) && '1' == $_POST['auto_draft'] ) + $id = 0; // This tells us it didn't actually save + else + $id = $post->ID; + } + + if ( $do_lock && ( isset( $_POST['auto_draft'] ) && ( $_POST['auto_draft'] != '1' ) ) && $id && is_numeric($id) ) + wp_set_post_lock( $id ); + + if ( $nonce_age == 2 ) { + $supplemental['replace-autosavenonce'] = wp_create_nonce('autosave'); + $supplemental['replace-getpermalinknonce'] = wp_create_nonce('getpermalink'); + $supplemental['replace-samplepermalinknonce'] = wp_create_nonce('samplepermalink'); + $supplemental['replace-closedpostboxesnonce'] = wp_create_nonce('closedpostboxes'); + if ( $id ) { + if ( $_POST['post_type'] == 'post' ) + $supplemental['replace-_wpnonce'] = wp_create_nonce('update-post_' . $id); + elseif ( $_POST['post_type'] == 'page' ) + $supplemental['replace-_wpnonce'] = wp_create_nonce('update-page_' . $id); + } + } + + if ( ! empty($alert) ) + $supplemental['alert'] = $alert; + + $x = new WP_Ajax_Response( array( + 'what' => 'autosave', + 'id' => $id, + 'data' => $id ? $data : '', + 'supplemental' => $supplemental + ) ); + $x->send(); + break; +case 'closed-postboxes' : + check_ajax_referer( 'closedpostboxes', 'closedpostboxesnonce' ); + $closed = isset( $_POST['closed'] ) ? explode( ',', $_POST['closed']) : array(); + $closed = array_filter($closed); + + $hidden = isset( $_POST['hidden'] ) ? explode( ',', $_POST['hidden']) : array(); + $hidden = array_filter($hidden); + + $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; + + if ( !preg_match( '/^[a-z_-]+$/', $page ) ) + die('-1'); + + if ( ! $user = wp_get_current_user() ) + die('-1'); + + if ( is_array($closed) ) + update_user_option($user->ID, "closedpostboxes_$page", $closed, true); + + if ( is_array($hidden) ) { + $hidden = array_diff( $hidden, array('submitdiv', 'linksubmitdiv', 'manage-menu', 'create-menu') ); // postboxes that are always shown + update_user_option($user->ID, "metaboxhidden_$page", $hidden, true); + } + + die('1'); + break; +case 'hidden-columns' : + check_ajax_referer( 'screen-options-nonce', 'screenoptionnonce' ); + $hidden = isset( $_POST['hidden'] ) ? $_POST['hidden'] : ''; + $hidden = explode( ',', $_POST['hidden'] ); + $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; + + if ( !preg_match( '/^[a-z_-]+$/', $page ) ) + die('-1'); + + if ( ! $user = wp_get_current_user() ) + die('-1'); + + if ( is_array($hidden) ) + update_user_option($user->ID, "manage{$page}columnshidden", $hidden, true); + + die('1'); + break; +case 'menu-get-metabox' : + if ( ! current_user_can( 'edit_theme_options' ) ) + die('-1'); + + require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; + + if ( isset( $_POST['item-type'] ) && 'post_type' == $_POST['item-type'] ) { + $type = 'posttype'; + $callback = 'wp_nav_menu_item_post_type_meta_box'; + $items = (array) get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); + } elseif ( isset( $_POST['item-type'] ) && 'taxonomy' == $_POST['item-type'] ) { + $type = 'taxonomy'; + $callback = 'wp_nav_menu_item_taxonomy_meta_box'; + $items = (array) get_taxonomies( array( 'show_ui' => true ), 'object' ); + } + + if ( ! empty( $_POST['item-object'] ) && isset( $items[$_POST['item-object']] ) ) { + $item = apply_filters( 'nav_menu_meta_box_object', $items[ $_POST['item-object'] ] ); + ob_start(); + call_user_func_array($callback, array( + null, + array( + 'id' => 'add-' . $item->name, + 'title' => $item->labels->name, + 'callback' => $callback, + 'args' => $item, + ) + )); + + $markup = ob_get_clean(); + + echo json_encode(array( + 'replace-id' => $type . '-' . $item->name, + 'markup' => $markup, + )); + } + + exit; + break; +case 'menu-quick-search': + if ( ! current_user_can( 'edit_theme_options' ) ) + die('-1'); + + require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; + + _wp_ajax_menu_quick_search( $_REQUEST ); + + exit; + break; +case 'wp-link-ajax': + require_once ABSPATH . 'wp-admin/includes/internal-linking.php'; + + check_ajax_referer( 'internal-linking', '_ajax_linking_nonce' ); + + $args = array(); + + if ( isset( $_POST['search'] ) ) + $args['s'] = stripslashes( $_POST['search'] ); + $args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1; + + $results = wp_link_query( $args ); + + if ( ! isset( $results ) ) + die( '0' ); + + echo json_encode( $results ); + echo "\n"; + + exit; + break; +case 'menu-locations-save': + if ( ! current_user_can( 'edit_theme_options' ) ) + die('-1'); + check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' ); + if ( ! isset( $_POST['menu-locations'] ) ) + die('0'); + set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_POST['menu-locations'] ) ); + die('1'); + break; +case 'meta-box-order': + check_ajax_referer( 'meta-box-order' ); + $order = isset( $_POST['order'] ) ? (array) $_POST['order'] : false; + $page_columns = isset( $_POST['page_columns'] ) ? (int) $_POST['page_columns'] : 0; + $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; + + if ( !preg_match( '/^[a-z_-]+$/', $page ) ) + die('-1'); + + if ( ! $user = wp_get_current_user() ) + die('-1'); + + if ( $order ) + update_user_option($user->ID, "meta-box-order_$page", $order, true); + + if ( $page_columns ) + update_user_option($user->ID, "screen_layout_$page", $page_columns, true); + + die('1'); + break; +case 'get-permalink': + check_ajax_referer( 'getpermalink', 'getpermalinknonce' ); + $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0; + die(add_query_arg(array('preview' => 'true'), get_permalink($post_id))); +break; +case 'sample-permalink': + check_ajax_referer( 'samplepermalink', 'samplepermalinknonce' ); + $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0; + $title = isset($_POST['new_title'])? $_POST['new_title'] : ''; + $slug = isset($_POST['new_slug'])? $_POST['new_slug'] : null; + die(get_sample_permalink_html($post_id, $title, $slug)); +break; +case 'inline-save': + check_ajax_referer( 'inlineeditnonce', '_inline_edit' ); + + if ( ! isset($_POST['post_ID']) || ! ( $post_ID = (int) $_POST['post_ID'] ) ) + exit; + + if ( 'page' == $_POST['post_type'] ) { + if ( ! current_user_can( 'edit_page', $post_ID ) ) + die( __('You are not allowed to edit this page.') ); + } else { + if ( ! current_user_can( 'edit_post', $post_ID ) ) + die( __('You are not allowed to edit this post.') ); + } + + set_current_screen( $_POST['screen'] ); + + if ( $last = wp_check_post_lock( $post_ID ) ) { + $last_user = get_userdata( $last ); + $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' ); + printf( $_POST['post_type'] == 'page' ? __( 'Saving is disabled: %s is currently editing this page.' ) : __( 'Saving is disabled: %s is currently editing this post.' ), esc_html( $last_user_name ) ); + exit; + } + + $data = &$_POST; + + $post = get_post( $post_ID, ARRAY_A ); + $post = add_magic_quotes($post); //since it is from db + + $data['content'] = $post['post_content']; + $data['excerpt'] = $post['post_excerpt']; + + // rename + $data['user_ID'] = $GLOBALS['user_ID']; + + if ( isset($data['post_parent']) ) + $data['parent_id'] = $data['post_parent']; + + // status + if ( isset($data['keep_private']) && 'private' == $data['keep_private'] ) + $data['post_status'] = 'private'; + else + $data['post_status'] = $data['_status']; + + if ( empty($data['comment_status']) ) + $data['comment_status'] = 'closed'; + if ( empty($data['ping_status']) ) + $data['ping_status'] = 'closed'; + + // update the post + edit_post(); + + $wp_list_table = _get_list_table('WP_Posts_List_Table'); + + $mode = $_POST['post_view']; + $wp_list_table->display_rows( array( get_post( $_POST['post_ID'] ) ) ); + + exit; + break; +case 'inline-save-tax': + check_ajax_referer( 'taxinlineeditnonce', '_inline_edit' ); + + $taxonomy = sanitize_key( $_POST['taxonomy'] ); + $tax = get_taxonomy( $taxonomy ); + if ( ! $tax ) + die( '0' ); + + if ( ! current_user_can( $tax->cap->edit_terms ) ) + die( '-1' ); + + set_current_screen( 'edit-' . $taxonomy ); + + $wp_list_table = _get_list_table('WP_Terms_List_Table'); + + if ( ! isset($_POST['tax_ID']) || ! ( $id = (int) $_POST['tax_ID'] ) ) + die(-1); + + $tag = get_term( $id, $taxonomy ); + $_POST['description'] = $tag->description; + + $updated = wp_update_term($id, $taxonomy, $_POST); + if ( $updated && !is_wp_error($updated) ) { + $tag = get_term( $updated['term_id'], $taxonomy ); + if ( !$tag || is_wp_error( $tag ) ) { + if ( is_wp_error($tag) && $tag->get_error_message() ) + die( $tag->get_error_message() ); + die( __('Item not updated.') ); + } + + echo $wp_list_table->single_row( $tag ); + } else { + if ( is_wp_error($updated) && $updated->get_error_message() ) + die( $updated->get_error_message() ); + die( __('Item not updated.') ); + } + + exit; + break; +case 'find_posts': + check_ajax_referer( 'find-posts' ); + + if ( empty($_POST['ps']) ) + exit; + + if ( !empty($_POST['post_type']) && in_array( $_POST['post_type'], get_post_types() ) ) + $what = $_POST['post_type']; + else + $what = 'post'; + + $s = stripslashes($_POST['ps']); + preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $s, $matches); + $search_terms = array_map('_search_terms_tidy', $matches[0]); + + $searchand = $search = ''; + foreach ( (array) $search_terms as $term ) { + $term = esc_sql( like_escape( $term ) ); + $search .= "{$searchand}(($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%'))"; + $searchand = ' AND '; + } + $term = esc_sql( like_escape( $s ) ); + if ( count($search_terms) > 1 && $search_terms[0] != $s ) + $search .= " OR ($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%')"; + + $posts = $wpdb->get_results( "SELECT ID, post_title, post_status, post_date FROM $wpdb->posts WHERE post_type = '$what' AND post_status IN ('draft', 'publish') AND ($search) ORDER BY post_date_gmt DESC LIMIT 50" ); + + if ( ! $posts ) { + $posttype = get_post_type_object($what); + exit($posttype->labels->not_found); + } + + $html = ''; + foreach ( $posts as $post ) { + + switch ( $post->post_status ) { + case 'publish' : + case 'private' : + $stat = __('Published'); + break; + case 'future' : + $stat = __('Scheduled'); + break; + case 'pending' : + $stat = __('Pending Review'); + break; + case 'draft' : + $stat = __('Draft'); + break; + } + + if ( '0000-00-00 00:00:00' == $post->post_date ) { + $time = ''; + } else { + /* translators: date format in table columns, see http://php.net/date */ + $time = mysql2date(__('Y/m/d'), $post->post_date); + } + + $html .= ''; + $html .= ''."\n\n"; + } + $html .= '

'.__('Title').''.__('Date').''.__('Status').'
'.esc_html( $time ).''.esc_html( $stat ).'
'; + + $x = new WP_Ajax_Response(); + $x->add( array( + 'what' => $what, + 'data' => $html + )); + $x->send(); + + break; +case 'widgets-order' : + check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' ); + + if ( !current_user_can('edit_theme_options') ) + die('-1'); + + unset( $_POST['savewidgets'], $_POST['action'] ); + + // save widgets order for all sidebars + if ( is_array($_POST['sidebars']) ) { + $sidebars = array(); + foreach ( $_POST['sidebars'] as $key => $val ) { + $sb = array(); + if ( !empty($val) ) { + $val = explode(',', $val); + foreach ( $val as $k => $v ) { + if ( strpos($v, 'widget-') === false ) + continue; + + $sb[$k] = substr($v, strpos($v, '_') + 1); + } + } + $sidebars[$key] = $sb; + } + wp_set_sidebars_widgets($sidebars); + die('1'); + } + + die('-1'); + break; +case 'save-widget' : + check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' ); + + if ( !current_user_can('edit_theme_options') || !isset($_POST['id_base']) ) + die('-1'); + + unset( $_POST['savewidgets'], $_POST['action'] ); + + do_action('load-widgets.php'); + do_action('widgets.php'); + do_action('sidebar_admin_setup'); + + $id_base = $_POST['id_base']; + $widget_id = $_POST['widget-id']; + $sidebar_id = $_POST['sidebar']; + $multi_number = !empty($_POST['multi_number']) ? (int) $_POST['multi_number'] : 0; + $settings = isset($_POST['widget-' . $id_base]) && is_array($_POST['widget-' . $id_base]) ? $_POST['widget-' . $id_base] : false; + $error = '

' . __('An error has occurred. Please reload the page and try again.') . '

'; + + $sidebars = wp_get_sidebars_widgets(); + $sidebar = isset($sidebars[$sidebar_id]) ? $sidebars[$sidebar_id] : array(); + + // delete + if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) { + + if ( !isset($wp_registered_widgets[$widget_id]) ) + die($error); + + $sidebar = array_diff( $sidebar, array($widget_id) ); + $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1'); + } elseif ( $settings && preg_match( '/__i__|%i%/', key($settings) ) ) { + if ( !$multi_number ) + die($error); + + $_POST['widget-' . $id_base] = array( $multi_number => array_shift($settings) ); + $widget_id = $id_base . '-' . $multi_number; + $sidebar[] = $widget_id; + } + $_POST['widget-id'] = $sidebar; + + foreach ( (array) $wp_registered_widget_updates as $name => $control ) { + + if ( $name == $id_base ) { + if ( !is_callable( $control['callback'] ) ) + continue; + + ob_start(); + call_user_func_array( $control['callback'], $control['params'] ); + ob_end_clean(); + break; + } + } + + if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) { + $sidebars[$sidebar_id] = $sidebar; + wp_set_sidebars_widgets($sidebars); + echo "deleted:$widget_id"; + die(); + } + + if ( !empty($_POST['add_new']) ) + die(); + + if ( $form = $wp_registered_widget_controls[$widget_id] ) + call_user_func_array( $form['callback'], $form['params'] ); + + die(); + break; +case 'image-editor': + $attachment_id = intval($_POST['postid']); + if ( empty($attachment_id) || !current_user_can('edit_post', $attachment_id) ) + die('-1'); + + check_ajax_referer( "image_editor-$attachment_id" ); + include_once( ABSPATH . 'wp-admin/includes/image-edit.php' ); + + $msg = false; + switch ( $_POST['do'] ) { + case 'save' : + $msg = wp_save_image($attachment_id); + $msg = json_encode($msg); + die($msg); + break; + case 'scale' : + $msg = wp_save_image($attachment_id); + break; + case 'restore' : + $msg = wp_restore_image($attachment_id); + break; + } + + wp_image_editor($attachment_id, $msg); + die(); + break; +case 'set-post-thumbnail': + $post_ID = intval( $_POST['post_id'] ); + if ( !current_user_can( 'edit_post', $post_ID ) ) + die( '-1' ); + $thumbnail_id = intval( $_POST['thumbnail_id'] ); + + check_ajax_referer( "set_post_thumbnail-$post_ID" ); + + if ( $thumbnail_id == '-1' ) { + delete_post_meta( $post_ID, '_thumbnail_id' ); + die( _wp_post_thumbnail_html() ); + } + + if ( set_post_thumbnail( $post_ID, $thumbnail_id ) ) + die( _wp_post_thumbnail_html( $thumbnail_id ) ); + die( '0' ); + break; +case 'date_format' : + die( date_i18n( sanitize_option( 'date_format', $_POST['date'] ) ) ); + break; +case 'time_format' : + die( date_i18n( sanitize_option( 'time_format', $_POST['date'] ) ) ); + break; +case 'wp-fullscreen-save-post' : + if ( isset($_POST['post_ID']) ) + $post_id = (int) $_POST['post_ID']; + else + $post_id = 0; + + $post = null; + $post_type_object = null; + $post_type = null; + if ( $post_id ) { + $post = get_post($post_id); + if ( $post ) { + $post_type_object = get_post_type_object($post->post_type); + if ( $post_type_object ) { + $post_type = $post->post_type; + $current_screen->post_type = $post->post_type; + $current_screen->id = $current_screen->post_type; + } + } + } elseif ( isset($_POST['post_type']) ) { + $post_type_object = get_post_type_object($_POST['post_type']); + if ( $post_type_object ) { + $post_type = $post_type_object->name; + $current_screen->post_type = $post_type; + $current_screen->id = $current_screen->post_type; + } + } + + check_ajax_referer('update-' . $post_type . '_' . $post_id, '_wpnonce'); + + $post_id = edit_post(); + + if ( is_wp_error($post_id) ) { + if ( $post_id->get_error_message() ) + $message = $post_id->get_error_message(); + else + $message = __('Save failed'); + + echo json_encode( array( 'message' => $message, 'last_edited' => '' ) ); + die(); + } else { + $message = __('Saved.'); + } + + if ( $post ) { + $last_date = mysql2date( get_option('date_format'), $post->post_modified ); + $last_time = mysql2date( get_option('time_format'), $post->post_modified ); + } else { + $last_date = date_i18n( get_option('date_format') ); + $last_time = date_i18n( get_option('time_format') ); + } + + if ( $last_id = get_post_meta($post_id, '_edit_last', true) ) { + $last_user = get_userdata($last_id); + $last_edited = sprintf( __('Last edited by %1$s on %2$s at %3$s'), esc_html( $last_user->display_name ), $last_date, $last_time ); + } else { + $last_edited = sprintf( __('Last edited on %1$s at %2$s'), $last_date, $last_time ); + } + + echo json_encode( array( 'message' => $message, 'last_edited' => $last_edited ) ); + die(); + break; +default : + do_action( 'wp_ajax_' . $_POST['action'] ); + die('0'); + break; +endswitch; +?> diff --git a/src/wp-admin/admin-footer.php b/src/wp-admin/admin-footer.php new file mode 100644 index 0000000..04d7315 --- /dev/null +++ b/src/wp-admin/admin-footer.php @@ -0,0 +1,51 @@ + + +
+
+
+ + + + +
+ + + diff --git a/src/wp-admin/admin-functions.php b/src/wp-admin/admin-functions.php new file mode 100644 index 0000000..b8c84fd --- /dev/null +++ b/src/wp-admin/admin-functions.php @@ -0,0 +1,16 @@ + \ No newline at end of file diff --git a/src/wp-admin/admin-header.php b/src/wp-admin/admin-header.php new file mode 100644 index 0000000..18b5ff3 --- /dev/null +++ b/src/wp-admin/admin-header.php @@ -0,0 +1,219 @@ + + + > + + +<?php echo $admin_title; ?> + + + + + + +"> + + +
+ +
+ + +
+parent_file = $parent_file; +$current_screen->parent_base = preg_replace('/\?.*$/', '', $parent_file); +$current_screen->parent_base = str_replace('.php', '', $current_screen->parent_base); +?> + +
+ \ No newline at end of file diff --git a/src/wp-admin/admin.php b/src/wp-admin/admin.php new file mode 100644 index 0000000..ce1227d --- /dev/null +++ b/src/wp-admin/admin.php @@ -0,0 +1,238 @@ +flush_rules(); + update_option( 'db_upgraded', false ); + + /** + * Runs on the next page load after successful upgrade + * + * @since 2.8 + */ + do_action('after_db_upgrade'); +} elseif ( get_option('db_version') != $wp_db_version ) { + if ( !is_multisite() ) { + wp_redirect(admin_url('upgrade.php?_wp_http_referer=' . urlencode(stripslashes($_SERVER['REQUEST_URI'])))); + exit; + } elseif ( apply_filters( 'do_mu_upgrade', true ) ) { + /** + * On really small MU installs run the upgrader every time, + * else run it less often to reduce load. + * + * @since 2.8.4b + */ + $c = get_blog_count(); + if ( $c <= 50 || ( $c > 50 && mt_rand( 0, (int)( $c / 50 ) ) == 1 ) ) { + require_once( ABSPATH . WPINC . '/http.php' ); + $response = wp_remote_get( admin_url( 'upgrade.php?step=1' ), array( 'timeout' => 120, 'httpversion' => '1.1' ) ); + do_action( 'after_mu_upgrade', $response ); + unset($response); + } + unset($c); + } +} + +require_once(ABSPATH . 'wp-admin/includes/admin.php'); + +auth_redirect(); + +nocache_headers(); + +// Schedule trash collection +if ( !wp_next_scheduled('wp_scheduled_delete') && !defined('WP_INSTALLING') ) + wp_schedule_event(time(), 'daily', 'wp_scheduled_delete'); + +set_screen_options(); + +$date_format = get_option('date_format'); +$time_format = get_option('time_format'); + +wp_reset_vars(array('profile', 'redirect', 'redirect_url', 'a', 'text', 'trackback', 'pingback')); + +wp_enqueue_script( 'common' ); +wp_enqueue_script( 'jquery-color' ); + +$editing = false; + +if ( isset($_GET['page']) ) { + $plugin_page = stripslashes($_GET['page']); + $plugin_page = plugin_basename($plugin_page); +} + +if ( isset($_GET['post_type']) ) + $typenow = sanitize_key($_GET['post_type']); +else + $typenow = ''; + +if ( isset($_GET['taxonomy']) ) + $taxnow = sanitize_key($_GET['taxonomy']); +else + $taxnow = ''; + +if ( WP_NETWORK_ADMIN ) + require(ABSPATH . 'wp-admin/network/menu.php'); +elseif ( WP_USER_ADMIN ) + require(ABSPATH . 'wp-admin/user/menu.php'); +else + require(ABSPATH . 'wp-admin/menu.php'); + +if ( current_user_can( 'manage_options' ) ) + @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) ); + +do_action('admin_init'); + +if ( isset($plugin_page) ) { + if ( !empty($typenow) ) + $the_parent = $pagenow . '?post_type=' . $typenow; + else + $the_parent = $pagenow; + if ( ! $page_hook = get_plugin_page_hook($plugin_page, $the_parent) ) { + $page_hook = get_plugin_page_hook($plugin_page, $plugin_page); + // backwards compatibility for plugins using add_management_page + if ( empty( $page_hook ) && 'edit.php' == $pagenow && '' != get_plugin_page_hook($plugin_page, 'tools.php') ) { + // There could be plugin specific params on the URL, so we need the whole query string + if ( !empty($_SERVER[ 'QUERY_STRING' ]) ) + $query_string = $_SERVER[ 'QUERY_STRING' ]; + else + $query_string = 'page=' . $plugin_page; + wp_redirect( admin_url('tools.php?' . $query_string) ); + exit; + } + } + unset($the_parent); +} + +$hook_suffix = ''; +if ( isset($page_hook) ) + $hook_suffix = $page_hook; +else if ( isset($plugin_page) ) + $hook_suffix = $plugin_page; +else if ( isset($pagenow) ) + $hook_suffix = $pagenow; + +set_current_screen(); + +// Handle plugin admin pages. +if ( isset($plugin_page) ) { + if ( $page_hook ) { + do_action('load-' . $page_hook); + if (! isset($_GET['noheader'])) + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + do_action($page_hook); + } else { + if ( validate_file($plugin_page) ) + wp_die(__('Invalid plugin page')); + + + if ( !( file_exists(WP_PLUGIN_DIR . "/$plugin_page") && is_file(WP_PLUGIN_DIR . "/$plugin_page") ) && !( file_exists(WPMU_PLUGIN_DIR . "/$plugin_page") && is_file(WPMU_PLUGIN_DIR . "/$plugin_page") ) ) + wp_die(sprintf(__('Cannot load %s.'), htmlentities($plugin_page))); + + do_action('load-' . $plugin_page); + + if ( !isset($_GET['noheader'])) + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + if ( file_exists(WPMU_PLUGIN_DIR . "/$plugin_page") ) + include(WPMU_PLUGIN_DIR . "/$plugin_page"); + else + include(WP_PLUGIN_DIR . "/$plugin_page"); + } + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + exit(); +} else if (isset($_GET['import'])) { + + $importer = $_GET['import']; + + if ( ! current_user_can('import') ) + wp_die(__('You are not allowed to import.')); + + if ( validate_file($importer) ) { + wp_redirect( admin_url( 'import.php?invalid=' . $importer ) ); + exit; + } + + // Allow plugins to define importers as well + if ( !isset($wp_importers) || !isset($wp_importers[$importer]) || ! is_callable($wp_importers[$importer][2])) { + if (! file_exists(ABSPATH . "wp-admin/import/$importer.php")) { + wp_redirect( admin_url( 'import.php?invalid=' . $importer ) ); + exit; + } + include(ABSPATH . "wp-admin/import/$importer.php"); + } + + $parent_file = 'tools.php'; + $submenu_file = 'import.php'; + $title = __('Import'); + + if (! isset($_GET['noheader'])) + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); + + define('WP_IMPORTING', true); + + if ( apply_filters( 'force_filtered_html_on_import', false ) ) + kses_init_filters(); // Always filter imported data with kses on multisite. + + call_user_func($wp_importers[$importer][2]); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + // Make sure rules are flushed + global $wp_rewrite; + $wp_rewrite->flush_rules(false); + + exit(); +} else { + do_action("load-$pagenow"); + // Backwards compatibility with old load-page-new.php, load-page.php, + // and load-categories.php actions. + if ( $typenow == 'page' ) { + if ( $pagenow == 'post-new.php' ) + do_action( 'load-page-new.php' ); + elseif ( $pagenow == 'post.php' ) + do_action( 'load-page.php' ); + } elseif ( $pagenow == 'edit-tags.php' ) { + if ( $taxnow == 'category' ) + do_action( 'load-categories.php' ); + elseif ( $taxnow == 'link_category' ) + do_action( 'load-edit-link-categories.php' ); + } +} + +if ( !empty($_REQUEST['action']) ) + do_action('admin_action_' . $_REQUEST['action']); + +?> diff --git a/src/wp-admin/async-upload.php b/src/wp-admin/async-upload.php new file mode 100644 index 0000000..6fa6518 --- /dev/null +++ b/src/wp-admin/async-upload.php @@ -0,0 +1,70 @@ +post_type ) + wp_die( __( 'Unknown post type.' ) ); + $post_type_object = get_post_type_object( 'attachment' ); + if ( ! current_user_can( $post_type_object->cap->edit_post, $id ) ) + wp_die( __( 'You are not allowed to edit this item.' ) ); + + if ( 2 == $_REQUEST['fetch'] ) { + add_filter('attachment_fields_to_edit', 'media_single_attachment_fields_to_edit', 10, 2); + echo get_media_item($id, array( 'send' => false, 'delete' => true )); + } else { + add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2); + echo get_media_item($id); + } + exit; +} + +check_admin_referer('media-form'); + +$id = media_handle_upload('async-upload', $_REQUEST['post_id']); +if ( is_wp_error($id) ) { + echo '
+ ' . __('Dismiss') . ' + ' . sprintf(__('“%s” has failed to upload due to an error'), esc_html($_FILES['async-upload']['name']) ) . '
' . + esc_html($id->get_error_message()) . '
'; + exit; +} + +if ( $_REQUEST['short'] ) { + // short form response - attachment ID only + echo $id; +} else { + // long form response - big chunk o html + $type = $_REQUEST['type']; + echo apply_filters("async_upload_{$type}", $id); +} + +?> diff --git a/src/wp-admin/comment.php b/src/wp-admin/comment.php new file mode 100644 index 0000000..a26ed5c --- /dev/null +++ b/src/wp-admin/comment.php @@ -0,0 +1,289 @@ +

$msg

"; + include('./admin-footer.php'); + die; +} + +switch( $action ) { + +case 'editcomment' : + $title = __('Edit Comment'); + + add_contextual_help( $current_screen, '

' . __( 'You can edit the information left in a comment if needed. This is often useful when you notice that a commenter has made a typographical error.' ) . '

' . + '

' . __( 'You can also moderate the comment from this screen using the Status box, where you can also change the timestamp of the comment.' ) . '

' . + '

' . __( 'For more information:' ) . '

' . + '

' . __( 'Documentation on Comments' ) . '

' . + '

' . __( 'Support Forums' ) . '

' + ); + + wp_enqueue_script('comment'); + require_once('./admin-header.php'); + + $comment_id = absint( $_GET['c'] ); + + if ( !$comment = get_comment( $comment_id ) ) + comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' '.__('Go back').'!', 'javascript:history.go(-1)') ); + + if ( !current_user_can( 'edit_comment', $comment_id ) ) + comment_footer_die( __('You are not allowed to edit this comment.') ); + + if ( 'trash' == $comment->comment_approved ) + comment_footer_die( __('This comment is in the Trash. Please move it out of the Trash if you want to edit it.') ); + + $comment = get_comment_to_edit( $comment_id ); + + include('./edit-form-comment.php'); + + break; + +case 'delete' : +case 'approve' : +case 'trash' : +case 'spam' : + + $title = __('Moderate Comment'); + + $comment_id = absint( $_GET['c'] ); + + if ( !$comment = get_comment_to_edit( $comment_id ) ) { + wp_redirect( admin_url('edit-comments.php?error=1') ); + die(); + } + + if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) { + wp_redirect( admin_url('edit-comments.php?error=2') ); + die(); + } + + // No need to re-approve/re-trash/re-spam a comment. + if ( $action == str_replace( '1', 'approve', $comment->comment_approved ) ) { + wp_redirect( admin_url( 'edit-comments.php?same=' . $comment_id ) ); + die(); + } + + require_once('./admin-header.php'); + + $formaction = $action . 'comment'; + $nonce_action = 'approve' == $action ? 'approve-comment_' : 'delete-comment_'; + $nonce_action .= $comment_id; + +?> +
+ +
+ + +

+ +comment_approved != '0' ) { // if not unapproved + $message = ''; + switch ( $comment->comment_approved ) { + case '1' : + $message = __('This comment is currently approved.'); + break; + case 'spam' : + $message = __('This comment is currently marked as spam.'); + break; + case 'trash' : + $message = __('This comment is currently in the Trash.'); + break; + } + if ( $message ) + echo '

' . $message . '

'; +} +?> +

+ + + + + + +comment_author_email ) { ?> + + + + + +comment_author_url ) { ?> + + + + + + + + + +
comment_author; ?>
comment_author_email; ?>
comment_author_url; ?>
comment_content; ?>
+ +

+ +
+ + + + + + +
+ + + + + +
+ +
+
+'.__('Go back').'!', 'edit-comments.php') ); + if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) + comment_footer_die( __('You are not allowed to edit comments on this post.') ); + + if ( '' != wp_get_referer() && ! $noredir && false === strpos(wp_get_referer(), 'comment.php') ) + $redir = wp_get_referer(); + elseif ( '' != wp_get_original_referer() && ! $noredir ) + $redir = wp_get_original_referer(); + elseif ( in_array( $action, array( 'approvecomment', 'unapprovecomment' ) ) ) + $redir = admin_url('edit-comments.php?p=' . absint( $comment->comment_post_ID ) ); + else + $redir = admin_url('edit-comments.php'); + + $redir = remove_query_arg( array('spammed', 'unspammed', 'trashed', 'untrashed', 'deleted', 'ids', 'approved', 'unapproved'), $redir ); + + switch ( $action ) { + case 'deletecomment' : + wp_delete_comment( $comment_id ); + $redir = add_query_arg( array('deleted' => '1'), $redir ); + break; + case 'trashcomment' : + wp_trash_comment($comment_id); + $redir = add_query_arg( array('trashed' => '1', 'ids' => $comment_id), $redir ); + break; + case 'untrashcomment' : + wp_untrash_comment($comment_id); + $redir = add_query_arg( array('untrashed' => '1'), $redir ); + break; + case 'spamcomment' : + wp_spam_comment($comment_id); + $redir = add_query_arg( array('spammed' => '1', 'ids' => $comment_id), $redir ); + break; + case 'unspamcomment' : + wp_unspam_comment($comment_id); + $redir = add_query_arg( array('unspammed' => '1'), $redir ); + break; + case 'approvecomment' : + wp_set_comment_status( $comment_id, 'approve' ); + $redir = add_query_arg( array( 'approved' => 1 ), $redir ); + break; + case 'unapprovecomment' : + wp_set_comment_status( $comment_id, 'hold' ); + $redir = add_query_arg( array( 'unapproved' => 1 ), $redir ); + break; + } + + wp_redirect( $redir ); + die; + break; + +case 'editedcomment' : + + $comment_id = absint( $_POST['comment_ID'] ); + $comment_post_id = absint( $_POST['comment_post_ID'] ); + + check_admin_referer( 'update-comment_' . $comment_id ); + + edit_comment(); + + $location = ( empty( $_POST['referredby'] ) ? "edit-comments.php?p=$comment_post_id" : $_POST['referredby'] ) . '#comment-' . $comment_id; + $location = apply_filters( 'comment_edit_redirect', $location, $comment_id ); + wp_redirect( $location ); + + exit(); + break; + +default: + wp_die( __('Unknown action.') ); + break; + +} // end switch + +include('./admin-footer.php'); + +?> diff --git a/src/wp-admin/credits.php b/src/wp-admin/credits.php new file mode 100644 index 0000000..773053a --- /dev/null +++ b/src/wp-admin/credits.php @@ -0,0 +1,176 @@ +' . __('Each name or handle is a link to that person’s profile in the WordPress.org community directory.') . '

' . + '

' . __('You can register your own profile at this link to start contributing.') . '

' . + '

' . __('WordPress always needs more people to report bugs, patch bugs, test betas, work on UI design, translate strings, write documentation, and add questions/answers/suggestions to the Support Forums. Join in!') . '

' . + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Contributing to WordPress') . '

' . + '

' . __('Support Forums') . '

' +); + +add_action( 'admin_head', '_wp_credits_add_css' ); +function _wp_credits_add_css() { ?> + +' . esc_html( $display_name ) . ''; +} + +function _wp_credits_build_object_link( &$data ) { + $data = '' . $data[0] . ''; +} + +include( './admin-header.php' ); +?> +
+ +

+ +' . sprintf( __( 'WordPress is created by a worldwide team of passionate individuals. Get involved in WordPress.' ), + 'http://wordpress.org/about/', + /* translators: Url to the codex documentation on contributing to WordPress used on the credits page */ + __( 'http://codex.wordpress.org/Contributing_to_WordPress' ) ) . '

'; + include( './admin-footer.php' ); + exit; +} + +echo '

' . __( 'WordPress is created by a worldwide team of passionate individuals. We couldn’t possibly list them all, but here some of the most influential people currently involved with the project:' ) . "

\n"; + +$gravatar = is_ssl() ? 'https://secure.gravatar.com/avatar/' : 'http://0.gravatar.com/avatar/'; + +foreach ( $credits['groups'] as $group_slug => $group_data ) { + if ( $group_data['name'] ) { + if ( 'Translators' == $group_data['name'] ) { + // Considered a special slug in the API response. (Also, will never be returned for en_US.) + $title = _x( 'Translators', 'Translate this to be the equivalent of English Translators in your language for the credits page Translators section' ); + } elseif ( isset( $group_data['placeholders'] ) ) { + $title = vsprintf( translate( $group_data['name'] ), $group_data['placeholders'] ); + } else { + $title = translate( $group_data['name'] ); + } + + echo '

' . $title . "

\n"; + } + + if ( ! empty( $group_data['shuffle'] ) ) + shuffle( $group_data['data'] ); // We were going to sort by ability to pronounce "hierarchical," but that wouldn't be fair to Matt. + + switch ( $group_data['type'] ) { + case 'list' : + array_walk( $group_data['data'], '_wp_credits_add_profile_link', $credits['data']['profiles'] ); + echo '

' . wp_sprintf( '%l.', $group_data['data'] ) . "

\n\n"; + break; + case 'libraries' : + array_walk( $group_data['data'], '_wp_credits_build_object_link' ); + echo '

' . wp_sprintf( '%l.', $group_data['data'] ) . "

\n\n"; + break; + default: + $compact = 'compact' == $group_data['type']; + $classes = 'wp-people-group ' . ( $compact ? 'compact' : '' ); + echo '\n"; + break; + } +} + +?> +

Get involved in WordPress.' ), + /* translators: Url to the codex documentation on contributing to WordPress used on the credits page */ + __( 'http://codex.wordpress.org/Contributing_to_WordPress' ) ); ?>

+ +
+ diff --git a/src/wp-admin/css/colors-classic-rtl.css b/src/wp-admin/css/colors-classic-rtl.css new file mode 100644 index 0000000..268fa9e --- /dev/null +++ b/src/wp-admin/css/colors-classic-rtl.css @@ -0,0 +1 @@ +.bar{border-right-color:none;border-left-color:#99d;}.post-com-count{background-image:url(../images/bubble_bg-rtl.gif);}#user_info_arrow{background:transparent url(../images/arrows-vs.png) no-repeat 0 5px;}#user_info:hover #user_info_arrow,#user_info.active #user_info_arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 0 5px;}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left;}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 6px;}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows-vs.png) no-repeat 8px 6px;}#adminmenu .wp-submenu .wp-submenu-head{border-right-color:none;border-left-color:#d1e5ee;}.folded #adminmenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4);}#collapse-button div{background-position:0 -108px;}.folded #collapse-button div{background-position:0 -72px;}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px;}.tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee url('../images/menu-bits-rtl-vs.gif?ver=20100610') repeat-x scroll right -379px;}#post-body .misc-pub-section{border-right-color:none;border-left-color:#d1e5ee;}#favorite-toggle{background:transparent url(../images/arrows-vs.png) no-repeat 4px 2px;}#screen-meta a.show-settings,.toggle-arrow{background:transparent url(../images/arrows-vs.png) no-repeat left 3px;}#screen-meta .screen-meta-active a.show-settings{background:transparent url(../images/arrows-vs.png) no-repeat left -33px;}.sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px;}.sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px;} \ No newline at end of file diff --git a/src/wp-admin/css/colors-classic-rtl.dev.css b/src/wp-admin/css/colors-classic-rtl.dev.css new file mode 100644 index 0000000..8a56444 --- /dev/null +++ b/src/wp-admin/css/colors-classic-rtl.dev.css @@ -0,0 +1,98 @@ +.bar { + border-right-color: none; + border-left-color: #99d; +} + +.post-com-count { + background-image: url(../images/bubble_bg-rtl.gif); +} + +#user_info_arrow { + background: transparent url(../images/arrows-vs.png) no-repeat 0 5px; +} + +#user_info:hover #user_info_arrow, +#user_info.active #user_info_arrow { + background: transparent url(../images/arrows-dark-vs.png) no-repeat 0 5px; +} + +/* editors */ + +/* menu */ + +#adminmenushadow, +#adminmenuback { + background-image: url(../images/menu-shadow-rtl.png); + background-position: top left; +} + +#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, +#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { + background: transparent url(../images/arrows-dark-vs.png) no-repeat 8px 6px; +} + +#adminmenu .wp-has-submenu:hover .wp-menu-toggle, +#adminmenu .wp-menu-open .wp-menu-toggle { + background: transparent url(../images/arrows-vs.png) no-repeat 8px 6px; +} + + +#adminmenu .wp-submenu .wp-submenu-head { + border-right-color: none; + border-left-color: #d1e5ee; +} + +.folded #adminmenu .wp-submenu-wrap { + -moz-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); +} + +/* collapse menu button */ +#collapse-button div { + background-position: 0 -108px; +} +.folded #collapse-button div { + background-position: 0 -72px; +} + +/* edit image */ + +.meta-box-sortables .postbox:hover .handlediv { + background: transparent url(../images/arrows-vs.png) no-repeat 6px 7px; +} + +.tablenav .tablenav-pages a { + border-color: #d1e5ee; + background: #eee url('../images/menu-bits-rtl-vs.gif?ver=20100610') repeat-x scroll right -379px; +} + +#post-body .misc-pub-section { + border-right-color: none; + border-left-color: #d1e5ee; +} + +#favorite-toggle { + background: transparent url(../images/arrows-vs.png) no-repeat 4px 2px; +} + +#screen-meta a.show-settings, +.toggle-arrow { + background: transparent url(../images/arrows-vs.png) no-repeat left 3px; +} + +#screen-meta .screen-meta-active a.show-settings { + background: transparent url(../images/arrows-vs.png) no-repeat left -33px; +} + +.sidebar-name-arrow { + background: transparent url(../images/arrows-vs.png) no-repeat 5px 9px; +} +.sidebar-name:hover .sidebar-name-arrow { + background: transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px; +} + + +/* custom header & background pages */ + +/* custom header & background pages */ \ No newline at end of file diff --git a/src/wp-admin/css/colors-classic.css b/src/wp-admin/css/colors-classic.css new file mode 100644 index 0000000..d5d4ebe --- /dev/null +++ b/src/wp-admin/css/colors-classic.css @@ -0,0 +1 @@ +html,.wp-dialog{background-color:#fff;}* html input,* html .widget{border-color:#dfdfdf;}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],select{border-color:#dfdfdf;background-color:#fff;}kbd,code{background:#eaeaea;}input[readonly]{background-color:#eee;}.find-box-search{border-color:#dfdfdf;background-color:#f1f1f1;}.find-box{background-color:#f1f1f1;}.find-box-inside{background-color:#fff;}a.page-numbers:hover{border-color:#999;}body,#wpbody,.form-table .pre{color:#333;}body>#upload-menu{border-bottom-color:#fff;}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links,#replyrow #ed_reply_toolbar input{border-color:#D1E5EE;}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red;}#poststuff .inside label.waiting{color:orange;}#poststuff .inside label.approved{color:green;}#postcustomstuff table{border-color:#dfdfdf;background-color:#F9F9F9;}#postcustomstuff thead th{background-color:#F1F1F1;}#postcustomstuff table input,#postcustomstuff table textarea{border-color:#dfdfdf;background-color:#fff;}.widefat{border-color:#D1E5EE;background-color:#fff;}div.dashboard-widget-error{background-color:#c43;}div.dashboard-widget-notice{background-color:#cfe1ef;}div.dashboard-widget-submit{border-top-color:#ccc;}div.tabs-panel,.wp-tab-panel,ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff;}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff;}input.disabled,textarea.disabled{background-color:#ccc;}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff;}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle,#fullscreen-topbar{background-color:#f5fafd;background-image:-ms-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-moz-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-o-linear-gradient(top,#f7fcfe,#eff8ff);background-image:-webkit-gradient(linear,left top,left bottom,from(#f7fcfe),to(#eff8ff));background-image:-webkit-linear-gradient(top,#f7fcfe,#eff8ff);background-image:linear-gradient(top,#f7fcfe,#eff8ff);}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#D1E5EE;text-shadow:#fff 0 1px 0;-moz-box-shadow:0 1px 0 #fff;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0;}.description,.form-wrap p{color:#666;}strong .post-com-count span{background-color:#21759b;}.sorthelper{background-color:#ccf3fa;}.ac_match,.subsubsub a.current{color:#000;}.wrap h2{color:#174f69;}.wrap .add-new-h2{background:#f1f1f1;}.subtitle{color:#777;}.ac_over{background-color:#f0f0b8;}.ac_results{background-color:#fff;border-color:#808080;}.ac_results li{color:#101010;}.alternate,.alt{background-color:#f7fcfe;}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd;}.bar{background-color:#e8e8e8;border-right-color:#99d;}#media-upload,#media-upload .media-item .slidetoggle{background:#fff;}#media-upload .slidetoggle{border-top-color:#dfdfdf;}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00;}div.error a{color:#c00;}.form-invalid{background-color:#ffebe8!important;}.form-invalid input,.form-invalid select{border-color:#c00!important;}.submit{border-color:#DFDFDF;}.highlight{background-color:#e4f2fd;color:#000;}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666;}.media-item{border-bottom-color:#dfdfdf;}#wpbody-content #media-items .describe{border-top-color:#dfdfdf;}.media-upload-form label.form-help,td.help{color:#9a9a9a;}.post-com-count{background-image:url(../images/bubble_bg.gif);color:#fff;}.post-com-count span{background-color:#bbb;color:#fff;}.post-com-count:hover span{background-color:#d54e21;}.quicktags,.search{background-color:#ccc;color:#000;}.side-info h5{border-bottom-color:#dadada;}.side-info ul{color:#666;}.button,.button-secondary,.submit input,input[type=button],input[type=submit]{border-color:#bbb;color:#464646;}.button:hover,.button-secondary:hover,.submit input:hover,input[type=button]:hover,input[type=submit]:hover{color:#000;border-color:#666;}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;text-shadow:rgba(255,255,255,1) 0 1px 0;}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top;}input.button-primary,button.button-primary,a.button-primary{border-color:#298cba;font-weight:bold;color:#fff;background:#21759B url(../images/button-grad.png) repeat-x scroll left top;text-shadow:rgba(0,0,0,0.3) 0 -1px 0;}input.button-primary:active,button.button-primary:active,a.button-primary:active{background:#21759b url(../images/button-grad-active.png) repeat-x scroll left top;color:#eaf2fa;}input.button-primary:hover,button.button-primary:hover,a.button-primary:hover,a.button-primary:focus,a.button-primary:active{border-color:#13455b;color:#eaf2fa;}.button-disabled,.button[disabled],.button:disabled,.button-secondary[disabled],.button-secondary:disabled,a.button.disabled{color:#aaa!important;border-color:#ddd!important;}.button-primary-disabled,.button-primary[disabled],.button-primary:disabled{color:#9FD0D5!important;background:#298CBA!important;}a:hover,a:active,a:focus{color:#d54e21;}#wphead #viewsite a:hover,#adminmenu a:hover,#adminmenu ul.wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21;}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf;}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333;}#rightnow .rbutton{background-color:#ebebeb;color:#264761;}.submitbox .submit{background-color:#464646;color:#ccc;}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00;}.submitbox .submitdelete:hover,#media-items a.delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00;}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00;}.tablenav .dots{border-color:transparent;}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b;}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21;}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55;}.update-message{color:#000;}a.page-numbers{border-bottom-color:#B8D3E2;}.commentlist li{border-bottom-color:#ccc;}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#D0DFE9;}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0;}.widefat td{color:#555;}.widefat p,.widefat ol,.widefat ul{color:#333;}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head{color:#333;}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333;}h3.dashboard-widget-title small a{color:#d7d7d7;}h3.dashboard-widget-title small a:hover{color:#fff;}a,#adminmenu a,#poststuff #edButtonPreview,#poststuff #edButtonHTML,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,.plugins a.delete,.ui-tabs-nav a{color:#21759b;}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-khtml-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0;}#plugin-information .action-button{background-color:#d54e21;color:#fff;}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-khtml-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0;}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf;}#currenttheme img{border-color:#666;}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9;}input.readonly,textarea.readonly{background-color:#ddd;}#ed_toolbar input,#ed_reply_toolbar input{background:#fff url("../images/fade-butt.png") repeat-x 0 -2px;}#editable-post-name{background-color:#fffbcc;}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777;}.login #nav a,.login #backtoblog a{color:#21759b!important;}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important;}#footer{color:#777;border-color:#b0c8d7;}#media-items,.imgedit-group{border-color:#dfdfdf;}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc;}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#efede7;}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf;}.plugins .active,.plugins .active th,.plugins .active td{color:#000;}.plugins .inactive a{color:#579;}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4;}#the-comment-list .unapproved{background-color:#ffffe0;}#the-comment-list .approve a{color:#006505;}#the-comment-list .unapprove a{color:#d98500;}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b;}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#d1e5ee;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background-color:#f7fcfe;}.postbox h3{color:#174f69;}.widget .widget-top{color:#174f69;}.sidebar-name:hover h3,.postbox h3:hover{color:#000;}.curtime #timestamp{background-image:url(../images/date-button.gif);}#quicktags #ed_link{color:#00f;}#rightnow .youhave{background-color:#f0f6fb;}#rightnow a{color:#448abd;}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat;}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0;}#update-nag,.update-nag{background-color:#fffbcc;border-color:#e6db55;color:#555;}.login #backtoblog a{color:#464646;}#wphead{border-bottom:#d0dfe9 1px solid;}#wphead h1 a{color:#174f69;}#user_info{color:#777;}#user_info:hover,#user_info.active{color:#185069;}#user_info.active{background-color:#f7fcfe;background-image:-ms-linear-gradient(bottom,#f7fcfe,#f9f9f9);background-image:-moz-linear-gradient(bottom,#f7fcfe,#f9f9f9);background-image:-o-linear-gradient(bottom,#f7fcfe,#f9f9f9);background-image:-webkit-gradient(linear,left bottom,left top,from(#f7fcfe),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#f7fcfe,#f9f9f9);background-image:linear-gradient(bottom,#f7fcfe,#f9f9f9);border-color:#d0dfe9 #d0dfe9 #d0dfe9;}#user_info_arrow{background:transparent url(../images/arrows-vs.png) no-repeat 6px 5px;}#user_info:hover #user_info_arrow,#user_info.active #user_info_arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 6px 5px;}#user_info_links{-moz-box-shadow:0 3px 2px -2px rgba(0,0,0,0.2);-webkit-box-shadow:0 3px 2px -2px rgba(0,0,0,0.2);box-shadow:0 3px 2px -2px rgba(0,0,0,0.2);}#user_info_links ul{background:#f7fcfe;border-color:#d0dfe9 #d0dfe9 #d0dfe9;-moz-box-shadow:inset 0 1px 0 #f9f9f9;-webkit-box-shadow:inset 0 1px 0 #f9f9f9;box-shadow:inset 0 1px 0 #f9f9f9;}#user_info_links li:hover{background-color:#ECF8FE;}#user_info_links li:hover a,#user_info_links li a:hover{text-decoration:none;}#user_info a:link,#user_info a:visited,#footer a:link,#footer a:visited{text-decoration:none;}#footer a:hover{color:#000;text-decoration:underline;}div#media-upload-error,.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00;}#pass-strength-result{background-color:#eee;border-color:#ddd!important;}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important;}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;}#quicktags{border-color:#cfdfe9;background-color:#cfdfe9;background-image:url("../images/ed-bg-vs.gif?ver=20101102");}#ed_toolbar input{border-color:#C3C3C3;}#ed_toolbar input:hover{border-color:#aaa;background:#ddd;}#poststuff .wp_themeSkin .mceStatusbar{border-color:#d0dfe9;}#poststuff .wp_themeSkin .mceStatusbar *{color:#555;}#poststuff #edButtonPreview,#poststuff #edButtonHTML{background-color:#f7fcfe;border-color:#d0dfe9 #d0dfe9 #d0dfe9;color:#999;}#poststuff #editor-toolbar .active{border-color:#d0dfe9 #d0dfe9 #eff8ff;background-color:#eff8ff;color:#333;}#post-status-info{background-color:#eff8ff;}.wp_themeSkin *,.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{color:#000;}.wp_themeSkin table.mceLayout{border-color:#bed1dd #bed1dd #d0dfe9;}#editorcontainer #content,#editorcontainer .wp_themeSkin .mceIframeContainer{-moz-box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);-webkit-box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);}.wp_themeSkin iframe{background:transparent;}.wp_themeSkin .mceStatusbar{color:#000;background-color:#f5f5f5;}.wp_themeSkin .mceButton{border-color:#B0C8D7;background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff);}.wp_themeSkin a.mceButtonEnabled:hover{border-color:#5589AA!important;background-color:#c9c9c9;background-image:-ms-linear-gradient(bottom,#bdccd5,#fff);background-image:-moz-linear-gradient(bottom,#bdccd5,#fff));background-image:-o-linear-gradient(bottom,#bdccd5,#fff));background-image:-webkit-gradient(linear,left bottom,left top,from(#bdccd5),to(#fff));background-image:-webkit-linear-gradient(bottom,#bdccd5,#fff)!important;background-image:linear-gradient(bottom,#bdccd5,#fff);}.wp_themeSkin a.mceButton:active,.wp_themeSkin a.mceButtonEnabled:active,.wp_themeSkin a.mceButtonSelected:active,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonActive:active,.wp_themeSkin a.mceButtonActive:hover{background:#B0C8D7!important;background-image:-ms-linear-gradient(bottom,#fff,#cfdfe9);background-image:-moz-linear-gradient(bottom,#fff,#cfdfe9));background-image:-o-linear-gradient(bottom,#fff,#cfdfe9));background-image:-webkit-gradient(linear,left bottom,left top,from(#fff),to(#cfdfe9));background-image:-webkit-linear-gradient(bottom,#fff,#cfdfe9)!important;background-image:linear-gradient(bottom,#fff,#cfdfe9);border-color:#5589AA!important;}.wp_themeSkin .mceButtonDisabled{border-color:#B0C8D7!important;}.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen{border-color:#B0C8D7;background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff);}.wp_themeSkin .mceListBox .mceOpen{border-left:0!important;}.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxHover:active .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin .mceListBoxSelected .mceText,.wp_themeSkin table.mceListBoxEnabled:active .mceText{background:#B0C8D7;border-color:#5589AA!important;}.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText,.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen{border-color:#5589AA!important;background-color:#c9c9c9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff);}.wp_themeSkin select.mceListBox{border-color:#B2B2B2;background-color:#fff;}.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen{border-color:#B0C8D7;}.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover{border-color:#5589AA!important;}.wp_themeSkin table.mceSplitButton td{background-color:#cfdfe9;background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff);}.wp_themeSkin table.mceSplitButton:hover td{background-image:-ms-linear-gradient(bottom,#cfdfe9,#fff);background-image:-moz-linear-gradient(bottom,#cfdfe9,#fff);background-image:-o-linear-gradient(bottom,#cfdfe9,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#fff));background-image:-webkit-linear-gradient(bottom,#cfdfe9,#fff)!important;background-image:linear-gradient(bottom,#cfdfe9,#fff);}.wp_themeSkin .mceSplitButtonActive{background-color:#B0C8D7;}.wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#B2B2B2;}.wp_themeSkin .mceColorSplitMenu a{border-color:#B2B2B2;}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors{border-color:#fff;}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0A246A;background-color:#B6BDD2;}.wp_themeSkin a.mceMoreColors:hover{border-color:#0A246A;}.wp_themeSkin .mceMenu{border-color:#ddd;}.wp_themeSkin .mceMenu table{background-color:#ebeaeb;}.wp_themeSkin .mceMenu .mceText{color:#000;}.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5;}.wp_themeSkin td.mceMenuItemSeparator{background-color:#aaa;}.wp_themeSkin .mceMenuItemTitle a{background-color:#ccc;border-bottom-color:#aaa;}.wp_themeSkin .mceMenuItemTitle span.mceText{color:#000;}.wp_themeSkin .mceMenuItemDisabled .mceText{color:#888;}.wp_themeSkin tr.mceFirst td.mceToolbar{background:#cfdfe9 url("../images/ed-bg-vs.gif?ver=20101102") repeat-x scroll left top;border-color:#cfdfe9;}.wp-admin #mceModalBlocker{background:#000;}.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-moz-border-radius:3px 0 0 0;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;}.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;border-top-right-radius:3px;-khtml-border-top-right-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-radius:0 3px 0 0;}.wp-admin .clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999;}.wp-admin .clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999;}.wp-admin .clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999;}.wp-admin .clearlooks2 .mceFocus .mceTop span{color:#e5e5e5;}#titlediv #title{border-color:#bdccd5;}#editorcontainer{border-color:#bdccd5 #bdccd5 #d0dfe9;}#post-status-info{border-color:#d0dfe9 #bdccd5 #bdccd5;}.editwidget .widget-inside{border-color:#d0dfe9;}#titlediv #title{background-color:#fff;}#tTips p#tTips_inside{background-color:#ddd;color:#333;}#timestampdiv input,#namediv input,#poststuff .inside .the-tagcloud{border-color:#ddd;}#adminmenuback,#adminmenuwrap{background-color:#EFF8FF;border-color:#D1E5EE;}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y;}#adminmenu li.wp-menu-separator{background:#D1E5EE;border-color:#bed1dd;}#adminmenu div.separator{border-color:#D1E5EE;}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark-vs.png) no-repeat -1px 6px;}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows-vs.png) no-repeat -2px 6px;}#adminmenu a.menu-top,.folded #adminmenu li.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#fff;border-bottom-color:#d1e5ee;}#adminmenu li.wp-menu-open{border-color:#d1e5ee;}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:#5589AA;background-image:-ms-linear-gradient(bottom,#5589AA,#5A8FAD);background-image:-moz-linear-gradient(bottom,#5589AA,#5A8FAD);background-image:-o-linear-gradient(bottom,#5589AA,#5A8FAD);background-image:-webkit-gradient(linear,left bottom,left top,from(#5589AA),to(#5A8FAD));background-image:-webkit-linear-gradient(bottom,#5589AA,#5A8FAD);background-image:linear-gradient(bottom,#5589AA,#5A8FAD);}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#5A8FAD;border-bottom-color:#5589AA;}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#5A8FAD;border-bottom-color:#5589AA;}#adminmenu .wp-submenu a:hover{background-color:#EAF2FA!important;color:#333!important;}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333;}#adminmenu .wp-submenu ul{background-color:#fff;}.folded #adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-submenu ul{border-color:#d0dfe9;}.folded #adminmenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4);}#adminmenu .wp-submenu .wp-submenu-head{border-right-color:#d0dfe9;background-color:#EFF8FF;}#adminmenu div.wp-submenu{background-color:transparent;}#collapse-menu{color:#A0C3D5;}#collapse-menu:hover{color:#5A8FAD;}#collapse-button{border-color:#d0dfe9;background-color:#eff8ff;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff);}#collapse-menu:hover #collapse-button{border-color:#A0C3D5;}#collapse-button div{background:transparent url(../images/arrows-vs.png) no-repeat 0 -72px;}.folded #collapse-button div{background-position:0 -108px;}#adminmenu .menu-icon-dashboard div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -60px -33px;}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -60px -1px;}#adminmenu .menu-icon-post div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -271px -33px;}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -271px -1px;}#adminmenu .menu-icon-media div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -120px -33px;}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -120px -1px;}#adminmenu .menu-icon-links div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -90px -33px;}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -90px -1px;}#adminmenu .menu-icon-page div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -150px -33px;}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -150px -1px;}#adminmenu .menu-icon-comments div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -30px -33px;}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -30px -1px;}#adminmenu .menu-icon-appearance div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll 0 -33px;}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll 0 -1px;}#adminmenu .menu-icon-plugins div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -180px -33px;}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -180px -1px;}#adminmenu .menu-icon-users div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -300px -33px;}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -300px -1px;}#adminmenu .menu-icon-tools div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -210px -33px;}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -210px -1px;}#icon-options-general,#adminmenu .menu-icon-settings div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -240px -33px;}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -240px -1px;}#adminmenu .menu-icon-site div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -360px -33px;}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -360px -1px;}#icon-edit,#icon-post{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -552px -5px;}#icon-index{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -137px -5px;}#icon-upload{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -251px -5px;}#icon-link-manager,#icon-link,#icon-link-category{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -190px -5px;}#icon-edit-pages,#icon-page{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -312px -5px;}#icon-edit-comments{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -72px -5px;}#icon-themes{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -11px -5px;}#icon-plugins{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -370px -5px;}#icon-users,#icon-profile,#icon-user-edit{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -600px -5px;}#icon-tools,#icon-admin{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -432px -5px;}#icon-options-general{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -492px -5px;}#icon-ms-admin{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -659px -5px;}table.diff .diff-deletedline{background-color:#fdd;}table.diff .diff-deletedline del{background-color:#f99;}table.diff .diff-addedline{background-color:#dfd;}table.diff .diff-addedline ins{background-color:#9f9;}#att-info{background-color:#E4F2FD;}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf;}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#D54E21;}#screen-options-wrap,#contextual-help-wrap{background-color:#f7fcfe;border-color:#D1e5ee;}#screen-options-link-wrap,#contextual-help-link-wrap{background-color:#eff8ff;border-right:1px solid #D1E5EE;border-left:1px solid #D1E5EE;border-bottom:1px solid #D1E5EE;background-image:-ms-linear-gradient(bottom,#eff8ff,#fff);background-image:-moz-linear-gradient(bottom,#eff8ff,#fff);background-image:-o-linear-gradient(bottom,#eff8ff,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#eff8ff),to(#fff));background-image:-webkit-linear-gradient(bottom,#eff8ff,#fff);background-image:linear-gradient(bottom,#eff8ff,#fff);}#screen-meta-links a.show-settings{color:#606060;}#screen-meta-links a.show-settings:hover{color:#000;}#replysubmit{background-color:#f1f1f1;border-top-color:#ddd;}#replyerror{border-color:#ddd;background-color:#f9f9f9;}#edithead,#replyhead{background-color:#f1f1f1;}#ed_reply_toolbar{background-color:#e9e9e9;}.vim-current,.vim-current th,.vim-current td{background-color:#E4F2FD!important;}.star-average,.star.star-rating{background-color:#fc0;}div.star.select:hover{background-color:#d00;}div.star img{border-left:1px solid #fff;border-right:1px solid #fff;}#plugin-information .fyi ul{background-color:#eaf3fa;}#plugin-information .fyi h2.mainheader{background-color:#cee1ef;}#plugin-information pre,#plugin-information code{background-color:#ededff;}#plugin-information pre{border:1px solid #ccc;}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea,#bulk-titles,#replyrow input{border-color:#ddd;}.inline-editor div.title{background-color:#EAF3FA;}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd;}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b;}.inline-editor .quick-edit-save{background-color:#f1f1f1;}#replyrow #ed_reply_toolbar input:hover{border-color:#aaa;background:#ddd;}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf;}.attention{color:#D54E21;}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows-vs.png) no-repeat 6px 7px;}.tablenav .tablenav-pages{color:#555;}.tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee url('../images/menu-bits-vs.gif?ver=20101102') repeat-x scroll left -379px;}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21;}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa;}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3;}#availablethemes,#availablethemes td{border-color:#ddd;}#current-theme img{border-color:#999;}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999;}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc;}.misc-pub-section{border-top-color:#fff;border-bottom-color:#eee;}#minor-publishing{border-bottom-color:#ddd;}#post-body .misc-pub-section{border-right-color:#eee;}.post-com-count span{background-color:#bbb;}.form-table .color-palette td{border-color:#fff;}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333;}#wp_editimgbtn,#wp_delimgbtn,#wp_editgallery,#wp_delgallery{border-color:#999;background-color:#eee;}#wp_editimgbtn:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_delgallery:hover{border-color:#555;background-color:#ccc;}#favorite-first{border-color:#c0c0c0;background:#f1f1f1;background:-moz-linear-gradient(bottom,#e7e7e7,#fff);background:-webkit-gradient(linear,left bottom,left top,from(#e7e7e7),to(#fff));}#favorite-inside{border-color:#c0c0c0;background-color:#fff;}#favorite-toggle{background:transparent url(../images/fav-arrow.gif?ver=20100531) no-repeat 0 -4px;border-color:#d0dfe9;-moz-box-shadow:inset 1px 0 0 #fff;-webkit-box-shadow:inset 1px 0 0 #fff;box-shadow:inset 1px 0 0 #fff;}#favorite-actions a{color:#464646;}#favorite-actions a:hover{color:#000;}#favorite-inside a:hover{text-decoration:underline;}#screen-meta a.show-settings,.toggle-arrow{background:transparent url(../images/arrows-vs.png) no-repeat right 3px;}#screen-meta .screen-meta-active a.show-settings{background:transparent url(../images/arrows-vs.png) no-repeat right -33px;}.view-switch #view-switch-list{background:transparent url(../images/list.png) no-repeat 0 0;}.view-switch .current #view-switch-list{background:transparent url(../images/list.png) no-repeat -40px 0;}.view-switch #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -20px 0;}.view-switch .current #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -60px 0;}#header-logo{background:transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center;}.popular-tags,.feature-filter{background-color:#fff;border-color:#DFDFDF;}#theme-information .action-button{border-top-color:#DFDFDF;}.theme-listing br.line{border-bottom-color:#ccc;}div.widgets-sortables,#widgets-left .inactive{background-color:#f7fcfe;border-color:#d0dfe9;}#available-widgets .widget-holder{background-color:#f7fcfe;border-color:#d0dfe9;}#available-widgets .widget-description{color:#555;}.sidebar-name{color:#464646;background-color:#f7fcfe;background-image:-ms-linear-gradient(top,#ECF8FE,#f7fcfe);background-image:-moz-linear-gradient(top,#ECF8FE,#f7fcfe);background-image:-o-linear-gradient(top,#ECF8FE,#f7fcfe);background-image:-webkit-gradient(linear,left top,left bottom,from(#ECF8FE),to(#f7fcfe));background-image:-webkit-linear-gradient(top,#ECF8FE,#f7fcfe);background-image:linear-gradient(top,#ECF8FE,#f7fcfe);text-shadow:#fff 0 1px 0;border-color:#d0dfe9;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;}.sidebar-name:hover,#removing-widget{color:#d54e21;}#removing-widget span{color:black;}.sidebar-name-arrow{background:transparent url(../images/arrows-vs.png) no-repeat 5px 9px;}.sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px;}.in-widget-title{color:#606060;}.deleting .widget-title *{color:#aaa;}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1;}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5;}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf;}.comment-ays,.comment-ays th{border-color:#ddd;}.comment-ays th{background-color:#f1f1f1;}#menu-management .menu-edit{border-color:#d0dfe9;}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#d0dfe9;}#nav-menu-header{border-bottom-color:#d0dfe9;}#nav-menu-footer{border-top-color:#fff;}#menu-management .nav-tabs-arrow a{color:#C1C1C1;}#menu-management .nav-tabs-arrow a:hover{color:#D54E21;}#menu-management .nav-tabs-arrow a:active{color:#464646;}#menu-management .nav-tab-active{border-color:#dfdfdf;}#menu-management .nav-tab{background:#f7fcfe;border-color:#d0dfe9;}.js .input-with-default-title{color:#aaa;}#cancel-save{color:#f00;}#cancel-save:hover{background-color:#F00;color:#fff;}.list-container{border-color:#dfdfdf;}.menu-item-handle{border-color:#d0dfe9;}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc;}.item-type{color:#999;}.item-controls .menu-item-delete:hover{color:#f00;}.item-edit{background:transparent url(../images/arrows-vs.png) no-repeat 8px 10px;border-bottom-color:#eee;}.item-edit:hover{background:transparent url(../images/arrows-dark-vs.png) no-repeat 8px 10px;}.menu-item-settings{border-color:#d0dfe9;}.link-to-original{color:#777;border-color:#d0dfe9;}#cancel-save:hover{color:#fff!important;}#update-menu-item{color:#fff!important;}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important;}.submitbox .submitcancel{color:#21759B;border-bottom-color:#21759B;}.submitbox .submitcancel:hover{background:#21759B;color:#fff;}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;}#menu-management .nav-tab-active{background:#eff8ff;border-bottom-color:#eff8ff;}#upload-form label{color:#777;}.fullscreen-overlay{background:#fff;}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#BED1DD;}#fullscreen-topbar{border-bottom-color:#D1E5EE;} \ No newline at end of file diff --git a/src/wp-admin/css/colors-classic.dev.css b/src/wp-admin/css/colors-classic.dev.css new file mode 100644 index 0000000..329d32e --- /dev/null +++ b/src/wp-admin/css/colors-classic.dev.css @@ -0,0 +1,2087 @@ +html, +.wp-dialog { + background-color: #fff; +} + +* html input, +* html .widget { + border-color: #dfdfdf; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="file"], +input[type="button"], +input[type="submit"], +input[type="reset"], +select { + border-color: #dfdfdf; + background-color: #fff; +} + +kbd, +code { + background: #eaeaea; +} + +input[readonly] { + background-color: #eee; +} + +.find-box-search { + border-color: #dfdfdf; + background-color: #f1f1f1; +} + +.find-box { + background-color: #f1f1f1; +} + +.find-box-inside { + background-color: #fff; +} + +a.page-numbers:hover { + border-color: #999; +} + +body, +#wpbody, +.form-table .pre { + color: #333; +} + +body > #upload-menu { + border-bottom-color: #fff; +} + +#postcustomstuff table, +#your-profile fieldset, +#rightnow, +div.dashboard-widget, +#dashboard-widgets p.dashboard-widget-links, +#replyrow #ed_reply_toolbar input { + border-color: #D1E5EE +} + +#poststuff .inside label.spam, +#poststuff .inside label.deleted { + color: red; +} + +#poststuff .inside label.waiting { + color: orange; +} + +#poststuff .inside label.approved { + color: green; +} + +#postcustomstuff table { + border-color: #dfdfdf; + background-color: #F9F9F9; +} + +#postcustomstuff thead th { + background-color: #F1F1F1; +} + +#postcustomstuff table input, +#postcustomstuff table textarea { + border-color: #dfdfdf; + background-color: #fff; +} + +.widefat { + border-color: #D1E5EE; + background-color: #fff; +} + +div.dashboard-widget-error { + background-color: #c43; +} + +div.dashboard-widget-notice { + background-color: #cfe1ef; +} + +div.dashboard-widget-submit { + border-top-color: #ccc; +} + +div.tabs-panel, +.wp-tab-panel, +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + border-color: #dfdfdf; + background-color: #fff; +} + +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + background-color: #fff; +} + +input.disabled, +textarea.disabled { + background-color: #ccc; +} +/* #upload-menu li a.upload-tab-link, */ +#plugin-information .action-button a, +#plugin-information .action-button a:hover, +#plugin-information .action-button a:visited { + color: #fff; +} + +.widget .widget-top, +.postbox h3, +.stuffbox h3, +.widefat thead tr th, +.widefat tfoot tr th, +h3.dashboard-widget-title, +h3.dashboard-widget-title span, +h3.dashboard-widget-title small, +.find-box-head, +.sidebar-name, +#nav-menu-header, +#nav-menu-footer, +.menu-item-handle, +#fullscreen-topbar { + background-color: #f5fafd; /* Fallback */ + background-image: -ms-linear-gradient(top, #f7fcfe, #eff8ff); /* IE10 */ + background-image: -moz-linear-gradient(top, #f7fcfe, #eff8ff); /* Firefox */ + background-image: -o-linear-gradient(top, #f7fcfe, #eff8ff); /* Opera */ + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fcfe), to(#eff8ff)); /* old Webkit */ + background-image: -webkit-linear-gradient(top, #f7fcfe, #eff8ff); /* new Webkit */ + background-image: linear-gradient(top, #f7fcfe, #eff8ff); /* proposed W3C Markup */ +} + +.widget .widget-top, +.postbox h3, +.stuffbox h3 { + border-bottom-color: #D1E5EE; + text-shadow: #fff 0 1px 0; + -moz-box-shadow: 0 1px 0 #fff; + -webkit-box-shadow: 0 1px 0 #fff; + box-shadow: 0 1px 0 #fff; +} + +.form-table th, +.form-wrap label { + color: #222; + text-shadow: #fff 0 1px 0; +} + +.description, +.form-wrap p { + color: #666; +} + +strong .post-com-count span { + background-color: #21759b; +} + +.sorthelper { + background-color: #ccf3fa; +} + +.ac_match, +.subsubsub a.current { + color: #000; +} + +.wrap h2 { + color: #174f69; +} + +.wrap .add-new-h2 { + background: #f1f1f1; +} + +.subtitle { + color: #777; +} + +.ac_over { + background-color: #f0f0b8; +} + +.ac_results { + background-color: #fff; + border-color: #808080; +} + +.ac_results li { + color: #101010; +} + +.alternate, +.alt { + background-color: #f7fcfe; +} + +.available-theme a.screenshot { + background-color: #f1f1f1; + border-color: #ddd; +} + +.bar { + background-color: #e8e8e8; + border-right-color: #99d; +} + +#media-upload, +#media-upload .media-item .slidetoggle { + background: #fff; +} + +#media-upload .slidetoggle { + border-top-color: #dfdfdf; +} + +div.error, +.login #login_error { + background-color: #ffebe8; + border-color: #c00; +} + +div.error a { + color: #c00; +} + +.form-invalid { + background-color: #ffebe8 !important; +} + +.form-invalid input, +.form-invalid select { + border-color: #c00 !important; +} + +.submit { + border-color: #DFDFDF; +} + +.highlight { + background-color: #e4f2fd; + color: #000; +} + +.howto, +.nonessential, +#edit-slug-box, +.form-input-tip, +.subsubsub { + color: #666; +} + +.media-item { + border-bottom-color: #dfdfdf; +} + +#wpbody-content #media-items .describe { + border-top-color: #dfdfdf; +} + +.media-upload-form label.form-help, +td.help { + color: #9a9a9a; +} + +.post-com-count { + background-image: url(../images/bubble_bg.gif); + color: #fff; +} + +.post-com-count span { + background-color: #bbb; + color: #fff; +} + +.post-com-count:hover span { + background-color: #d54e21; +} + +.quicktags, .search { + background-color: #ccc; + color: #000; +} + +.side-info h5 { + border-bottom-color: #dadada; +} + +.side-info ul { + color: #666; +} + +.button, +.button-secondary, +.submit input, +input[type=button], +input[type=submit] { + border-color: #bbb; + color: #464646; +} + +.button:hover, +.button-secondary:hover, +.submit input:hover, +input[type=button]:hover, +input[type=submit]:hover { + color: #000; + border-color: #666; +} + +.button, +.submit input, +.button-secondary { + background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top; + text-shadow: rgba(255,255,255,1) 0 1px 0; +} + +.button:active, +.submit input:active, +.button-secondary:active { + background: #eee url(../images/white-grad-active.png) repeat-x scroll left top; +} + +input.button-primary, +button.button-primary, +a.button-primary { + border-color: #298cba; + font-weight: bold; + color: #fff; + background: #21759B url(../images/button-grad.png) repeat-x scroll left top; + text-shadow: rgba(0,0,0,0.3) 0 -1px 0; +} + +input.button-primary:active, +button.button-primary:active, +a.button-primary:active { + background: #21759b url(../images/button-grad-active.png) repeat-x scroll left top; + color: #eaf2fa; +} + +input.button-primary:hover, +button.button-primary:hover, +a.button-primary:hover, +a.button-primary:focus, +a.button-primary:active { + border-color: #13455b; + color: #eaf2fa; +} + +.button-disabled, +.button[disabled], +.button:disabled, +.button-secondary[disabled], +.button-secondary:disabled, +a.button.disabled { + color: #aaa !important; + border-color: #ddd !important; +} + +.button-primary-disabled, +.button-primary[disabled], +.button-primary:disabled { + color: #9FD0D5 !important; + background: #298CBA !important; +} + +a:hover, +a:active, +a:focus { + color: #d54e21; +} + +#wphead #viewsite a:hover, +#adminmenu a:hover, +#adminmenu ul.wp-submenu a:hover, +#the-comment-list .comment a:hover, +#rightnow a:hover, +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover, +.ui-tabs-nav a:hover, +.plugins .inactive a:hover, +#all-plugins-table .plugins .inactive a:hover, +#search-plugins-table .plugins .inactive a:hover { + color: #d54e21; +} + +#the-comment-list .comment-item, +#dashboard-widgets #dashboard_quick_press form p.submit { + border-color: #dfdfdf; +} + +#side-sortables .category-tabs .tabs a, +#side-sortables .add-menu-item-tabs .tabs a, +.wp-tab-bar .wp-tab-active a { + color: #333; +} + +#rightnow .rbutton { + background-color: #ebebeb; + color: #264761; +} + +.submitbox .submit { + background-color: #464646; + color: #ccc; +} + +.plugins a.delete:hover, +#all-plugins-table .plugins a.delete:hover, +#search-plugins-table .plugins a.delete:hover, +.submitbox .submitdelete { + color: #f00; + border-bottom-color: #f00; +} + +.submitbox .submitdelete:hover, +#media-items a.delete:hover { + color: #fff; + background-color: #f00; + border-bottom-color: #f00; +} + +#normal-sortables .submitbox .submitdelete:hover { + color: #000; + background-color: #f00; + border-bottom-color: #f00; +} + +.tablenav .dots { + border-color: transparent; +} + +.tablenav .next, +.tablenav .prev { + border-color: transparent; + color: #21759b; +} + +.tablenav .next:hover, +.tablenav .prev:hover { + border-color: transparent; + color: #d54e21; +} + +div.updated, +.login .message { + background-color: #ffffe0; + border-color: #e6db55; +} + +.update-message { + color: #000; +} + +a.page-numbers { + border-bottom-color: #B8D3E2; +} + +.commentlist li { + border-bottom-color: #ccc; +} + +.widefat td, +.widefat th { + border-top-color: #fff; + border-bottom-color: #D0DFE9; +} + +.widefat th { + text-shadow: rgba(255,255,255,0.8) 0 1px 0; +} + +.widefat td { + color: #555; +} +.widefat p, +.widefat ol, +.widefat ul { + color: #333; +} + +.widefat thead tr th, +.widefat tfoot tr th, +h3.dashboard-widget-title, +h3.dashboard-widget-title span, +h3.dashboard-widget-title small, +.find-box-head { + color: #333; +} + +th.sortable a:hover, th.sortable a:active, th.sortable a:focus { + color: #333; +} + +h3.dashboard-widget-title small a { + color: #d7d7d7; +} + +h3.dashboard-widget-title small a:hover { + color: #fff; +} + +a, +#adminmenu a, +#poststuff #edButtonPreview, +#poststuff #edButtonHTML, +#the-comment-list p.comment-author strong a, +#media-upload a.del-link, +#media-items a.delete, +.plugins a.delete, +.ui-tabs-nav a { + color: #21759b; +} + +#adminmenu .awaiting-mod, +#adminmenu .update-plugins, +#sidemenu a .update-plugins, +#rightnow .reallynow { + background-color: #464646; + color: #fff; + -moz-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + -khtml-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + box-shadow: rgba(255,255,255,0.5) 0 1px 0; +} +#plugin-information .action-button { + background-color: #d54e21; + color: #fff; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins{ + background-color: #464646; + color: #fff; + -moz-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + -khtml-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + box-shadow: rgba(255,255,255,0.5) 0 1px 0; +} + +div#media-upload-header, +div#plugin-information-header { + background-color: #f9f9f9; + border-bottom-color: #dfdfdf; +} + +#currenttheme img { + border-color: #666; +} + +#dashboard_secondary div.dashboard-widget-content ul li a { + background-color: #f9f9f9; +} + +input.readonly, textarea.readonly { + background-color: #ddd; +} + +#ed_toolbar input, +#ed_reply_toolbar input { + background: #fff url("../images/fade-butt.png") repeat-x 0 -2px; +} + +#editable-post-name { + background-color: #fffbcc; +} + +#edit-slug-box strong, +.tablenav .displaying-num, +#submitted-on, +.submitted-on { + color: #777; +} + +.login #nav a, +.login #backtoblog a { + color: #21759b !important; +} + +.login #nav a:hover, +.login #backtoblog a:hover { + color: #d54e21 !important; +} + +#footer { + color: #777; + border-color: #b0c8d7; +} + +#media-items, +.imgedit-group { + border-color: #dfdfdf; +} + +.checkbox, +.side-info, +.plugins tr, +#your-profile #rich_editing { + background-color: #fcfcfc; +} + +.plugins .inactive, +.plugins .inactive th, +.plugins .inactive td, +tr.inactive + tr.plugin-update-tr .plugin-update { + background-color: #efede7; +} + +.plugin-update-tr .update-message { + background-color: #fffbe4; + border-color: #dfdfdf; +} + +.plugins .active, +.plugins .active th, +.plugins .active td { + color: #000; +} + +.plugins .inactive a { + color: #557799; +} + +#the-comment-list tr.undo, +#the-comment-list div.undo { + background-color: #f4f4f4; +} + +#the-comment-list .unapproved { + background-color: #ffffe0; +} + +#the-comment-list .approve a { + color: #006505; +} + +#the-comment-list .unapprove a { + color: #d98500; +} + +table.widefat span.delete a, +table.widefat span.trash a, +table.widefat span.spam a, +#dashboard_recent_comments .delete a, +#dashboard_recent_comments .trash a, +#dashboard_recent_comments .spam a { + color: #bc0b0b; +} + +.widget, +#widget-list .widget-top, +.postbox, +#titlediv, +#poststuff .postarea, +.stuffbox { + border-color: #d1e5ee; + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.widget, +#widget-list .widget-top, +.postbox, +.menu-item-settings { + background-color: #f7fcfe; +} + +.postbox h3 { + color: #174f69; +} + +.widget .widget-top { + color: #174f69; +} + +.sidebar-name:hover h3, +.postbox h3:hover { + color: #000; +} + +.curtime #timestamp { + background-image: url(../images/date-button.gif); +} + +#quicktags #ed_link { + color: #00f; +} + +#rightnow .youhave { + background-color: #f0f6fb; +} + +#rightnow a { + color: #448abd; +} + +.tagchecklist span a, +#bulk-titles div a { + background: url(../images/xit.gif) no-repeat; +} + +.tagchecklist span a:hover, +#bulk-titles div a:hover { + background: url(../images/xit.gif) no-repeat -10px 0; +} + +#update-nag, .update-nag { + background-color: #fffbcc; + border-color: #e6db55; + color: #555; +} + +.login #backtoblog a { + color: #464646; +} + +#wphead { + border-bottom:#d0dfe9 1px solid; +} + +#wphead h1 a { + color: #174f69; +} + +#user_info { + color: #777; +} + +#user_info:hover, +#user_info.active { + color: #185069; +} + +#user_info.active { + background-color: #f7fcfe; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #f7fcfe, #f9f9f9); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #f7fcfe, #f9f9f9); /* Firefox */ + background-image: -o-linear-gradient(bottom, #f7fcfe, #f9f9f9); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#f7fcfe), to(#f9f9f9)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #f7fcfe, #f9f9f9); /* new Webkit */ + background-image: linear-gradient(bottom, #f7fcfe, #f9f9f9); /* proposed W3C Markup */ + border-color: #d0dfe9 #d0dfe9 #d0dfe9; +} + +#user_info_arrow { + background: transparent url(../images/arrows-vs.png) no-repeat 6px 5px; +} + +#user_info:hover #user_info_arrow, +#user_info.active #user_info_arrow { + background: transparent url(../images/arrows-dark-vs.png) no-repeat 6px 5px; +} + +#user_info_links { + -moz-box-shadow: 0 3px 2px -2px rgba( 0, 0, 0, 0.2 ); + -webkit-box-shadow: 0 3px 2px -2px rgba( 0, 0, 0, 0.2 ); + box-shadow: 0 3px 2px -2px rgba( 0, 0, 0, 0.2 ); +} + +#user_info_links ul { + background: #f7fcfe; + border-color: #d0dfe9 #d0dfe9 #d0dfe9; + -moz-box-shadow: inset 0 1px 0 #f9f9f9; + -webkit-box-shadow: inset 0 1px 0 #f9f9f9; + box-shadow: inset 0 1px 0 #f9f9f9; +} + +#user_info_links li:hover { + background-color: #ECF8FE; +} + +#user_info_links li:hover a, +#user_info_links li a:hover { + text-decoration: none; +} + +#user_info a:link, +#user_info a:visited, +#footer a:link, +#footer a:visited { + text-decoration: none; +} + +#footer a:hover { + color: #000; + text-decoration: underline; +} + +div#media-upload-error, +.file-error, +abbr.required, +.widget-control-remove:hover, +table.widefat .delete a:hover, +table.widefat .trash a:hover, +table.widefat .spam a:hover, +#dashboard_recent_comments .delete a:hover, +#dashboard_recent_comments .trash a:hover +#dashboard_recent_comments .spam a:hover { + color: #f00; +} + +#pass-strength-result { + background-color: #eee; + border-color: #ddd !important; +} + +#pass-strength-result.bad { + background-color: #ffb78c; + border-color: #ff853c !important; +} + +#pass-strength-result.good { + background-color: #ffec8b; + border-color: #fc0 !important; +} + +#pass-strength-result.short { + background-color: #ffa0a0; + border-color: #f04040 !important; +} + +#pass-strength-result.strong { + background-color: #c3ff88; + border-color: #8dff1c !important; +} + +/* editors */ +#quicktags { + border-color: #cfdfe9; + background-color: #cfdfe9; + background-image: url("../images/ed-bg-vs.gif?ver=20101102"); +} + +#ed_toolbar input { + border-color: #C3C3C3; +} + +#ed_toolbar input:hover { + border-color: #aaa; + background: #ddd; +} + +#poststuff .wp_themeSkin .mceStatusbar { + border-color: #d0dfe9; +} + +#poststuff .wp_themeSkin .mceStatusbar * { + color: #555; +} + +#poststuff #edButtonPreview, +#poststuff #edButtonHTML { + background-color: #f7fcfe; + border-color: #d0dfe9 #d0dfe9 #d0dfe9; + color: #999; +} + +#poststuff #editor-toolbar .active { + border-color: #d0dfe9 #d0dfe9 #eff8ff; + background-color: #eff8ff; + color: #333; +} + +/* TinyMCE */ +#post-status-info { + background-color: #eff8ff; +} + +.wp_themeSkin *, +.wp_themeSkin a:hover, +.wp_themeSkin a:link, +.wp_themeSkin a:visited, +.wp_themeSkin a:active { + color: #000; +} + +/* Containers */ +.wp_themeSkin table.mceLayout { + border-color: #bed1dd #bed1dd #d0dfe9; +} + +#editorcontainer #content, +#editorcontainer .wp_themeSkin .mceIframeContainer { + -moz-box-shadow: inset 1px 1px 2px rgba( 0, 0, 0, 0.1 ); + -webkit-box-shadow: inset 1px 1px 2px rgba( 0, 0, 0, 0.1 ); + box-shadow: inset 1px 1px 2px rgba( 0, 0, 0, 0.1 ); +} +.wp_themeSkin iframe { + background: transparent; +} + +/* Layout */ +.wp_themeSkin .mceStatusbar { + color: #000; + background-color: #f5f5f5; +} + +/* Button */ +.wp_themeSkin .mceButton { + border-color: #B0C8D7; + background-color: #cfdfe9; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */ +} + +.wp_themeSkin a.mceButtonEnabled:hover { + border-color: #5589AA !important; + background-color: #c9c9c9; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #bdccd5, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #bdccd5, #fff)); /* Firefox */ + background-image: -o-linear-gradient(bottom, #bdccd5, #fff)); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#bdccd5), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #bdccd5, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #bdccd5, #fff); /* proposed W3C Markup */ +} + +.wp_themeSkin a.mceButton:active, +.wp_themeSkin a.mceButtonEnabled:active, +.wp_themeSkin a.mceButtonSelected:active, +.wp_themeSkin a.mceButtonActive, +.wp_themeSkin a.mceButtonActive:active, +.wp_themeSkin a.mceButtonActive:hover { + background: #B0C8D7 !important; + background-image: -ms-linear-gradient(bottom, #fff, #cfdfe9); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #fff, #cfdfe9)); /* Firefox */ + background-image: -o-linear-gradient(bottom, #fff, #cfdfe9)); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#fff), to(#cfdfe9)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #fff, #cfdfe9) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #fff, #cfdfe9); /* proposed W3C Markup */ + border-color: #5589AA !important; +} + +.wp_themeSkin .mceButtonDisabled { + border-color: #B0C8D7 !important; +} + +/* ListBox */ +.wp_themeSkin .mceListBox .mceText, +.wp_themeSkin .mceListBox .mceOpen { + border-color: #B0C8D7; + background-color: #cfdfe9; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */ +} + +.wp_themeSkin .mceListBox .mceOpen { + border-left: 0px !important; +} + +.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen, +.wp_themeSkin .mceListBoxHover .mceOpen, +.wp_themeSkin .mceListBoxHover:active .mceOpen, +.wp_themeSkin .mceListBoxSelected .mceOpen, +.wp_themeSkin .mceListBoxSelected .mceText, +.wp_themeSkin table.mceListBoxEnabled:active .mceText { + background: #B0C8D7; + border-color: #5589AA !important; +} + +/* List Box Hover */ +.wp_themeSkin table.mceListBoxEnabled:hover .mceText, +.wp_themeSkin .mceListBoxHover .mceText, +.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen, +.wp_themeSkin .mceListBoxHover .mceOpen { + border-color: #5589AA !important; + background-color: #c9c9c9; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */ +} + +.wp_themeSkin select.mceListBox { + border-color: #B2B2B2; + background-color: #fff; +} + +/* SplitButton */ +.wp_themeSkin .mceSplitButton a.mceAction, +.wp_themeSkin .mceSplitButton a.mceOpen { + border-color: #B0C8D7; +} + +.wp_themeSkin .mceSplitButton a.mceOpen:hover, +.wp_themeSkin .mceSplitButtonSelected a.mceOpen, +.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction, +.wp_themeSkin .mceSplitButton a.mceAction:hover { + border-color: #5589AA !important; +} + + +.wp_themeSkin table.mceSplitButton td { + background-color: #cfdfe9; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */ +} + +.wp_themeSkin table.mceSplitButton:hover td { + background-image: -ms-linear-gradient(bottom, #cfdfe9, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #cfdfe9, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #cfdfe9, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #cfdfe9, #fff) !important; /* new Webkit */ + background-image: linear-gradient(bottom, #cfdfe9, #fff); /* proposed W3C Markup */ +} + +.wp_themeSkin .mceSplitButtonActive { + background-color: #B0C8D7; +} + +/* ColorSplitButton */ +.wp_themeSkin div.mceColorSplitMenu table { + background-color: #ebebeb; + border-color: #B2B2B2; +} + +.wp_themeSkin .mceColorSplitMenu a { + border-color: #B2B2B2; +} + +.wp_themeSkin .mceColorSplitMenu a.mceMoreColors { + border-color: #fff; +} + +.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover { + border-color: #0A246A; + background-color: #B6BDD2; +} + +.wp_themeSkin a.mceMoreColors:hover { + border-color: #0A246A; +} + +/* Menu */ +.wp_themeSkin .mceMenu { + border-color: #ddd; +} + +.wp_themeSkin .mceMenu table { + background-color: #ebeaeb; +} + +.wp_themeSkin .mceMenu .mceText { + color: #000; +} + +.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover, +.wp_themeSkin .mceMenu .mceMenuItemActive { + background-color: #f5f5f5; +} +.wp_themeSkin td.mceMenuItemSeparator { + background-color: #aaa; +} +.wp_themeSkin .mceMenuItemTitle a { + background-color: #ccc; + border-bottom-color: #aaa; +} +.wp_themeSkin .mceMenuItemTitle span.mceText { + color: #000; +} +.wp_themeSkin .mceMenuItemDisabled .mceText { + color: #888; +} + +.wp_themeSkin tr.mceFirst td.mceToolbar { + background: #cfdfe9 url("../images/ed-bg-vs.gif?ver=20101102") repeat-x scroll left top; + border-color: #cfdfe9; +} + +.wp-admin #mceModalBlocker { + background: #000; +} + +.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft { + background: #444444; + border-left: 1px solid #999; + border-top: 1px solid #999; + -moz-border-radius: 3px 0 0 0; + -webkit-border-top-left-radius: 3px; + -khtml-border-top-left-radius: 3px; + border-top-left-radius: 3px; +} + +.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight { + background: #444444; + border-right: 1px solid #999; + border-top: 1px solid #999; + border-top-right-radius: 3px; + -khtml-border-top-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + -moz-border-radius: 0 3px 0 0; +} + +.wp-admin .clearlooks2 .mceMiddle .mceLeft { + background: #f1f1f1; + border-left: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceMiddle .mceRight { + background: #f1f1f1; + border-right: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceBottom { + background: #f1f1f1; + border-bottom: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceBottom .mceLeft { + background: #f1f1f1; + border-bottom: 1px solid #999; + border-left: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceBottom .mceCenter { + background: #f1f1f1; + border-bottom: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceBottom .mceRight { + background: #f1f1f1; + border-bottom: 1px solid #999; + border-right: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceFocus .mceTop span { + color: #e5e5e5; +} +/* end TinyMCE */ + +#titlediv #title { + border-color: #bdccd5; +} + +#editorcontainer { + border-color: #bdccd5 #bdccd5 #d0dfe9; +} + +#post-status-info { + border-color: #d0dfe9 #bdccd5 #bdccd5; +} + +.editwidget .widget-inside { + border-color: #d0dfe9; +} + +#titlediv #title { + background-color: #fff; +} + +#tTips p#tTips_inside { + background-color: #ddd; + color: #333; +} + +#timestampdiv input, +#namediv input, +#poststuff .inside .the-tagcloud { + border-color: #ddd; +} + +/* menu */ +#adminmenuback, +#adminmenuwrap { + background-color: #EFF8FF; + border-color: #D1E5EE; +} + +#adminmenushadow, +#adminmenuback { + background-image: url(../images/menu-shadow.png); + background-position: top right; + background-repeat: repeat-y; +} + +#adminmenu li.wp-menu-separator { + background: #D1E5EE; + border-color: #bed1dd; +} + +#adminmenu div.separator { + border-color: #D1E5EE; +} + +#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, +#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { + background: transparent url(../images/arrows-dark-vs.png) no-repeat -1px 6px; +} + +#adminmenu .wp-has-submenu:hover .wp-menu-toggle, +#adminmenu .wp-menu-open .wp-menu-toggle { + background: transparent url(../images/arrows-vs.png) no-repeat -2px 6px; +} + +#adminmenu a.menu-top, +.folded #adminmenu li.menu-top, +#adminmenu .wp-submenu .wp-submenu-head { + border-top-color: #ffffff; + border-bottom-color: #d1e5ee; +} + +#adminmenu li.wp-menu-open { + border-color: #d1e5ee; +} + +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.current a.menu-top, +.folded #adminmenu li.wp-has-current-submenu, +.folded #adminmenu li.current.menu-top, +#adminmenu .wp-menu-arrow, +#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head { + background-color: #5589AA; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #5589AA, #5A8FAD); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #5589AA, #5A8FAD); /* Firefox */ + background-image: -o-linear-gradient(bottom, #5589AA, #5A8FAD); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#5589AA), to(#5A8FAD)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #5589AA, #5A8FAD); /* new Webkit */ + background-image: linear-gradient(bottom, #5589AA, #5A8FAD); /* proposed W3C Markup */ +} + +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.current a.menu-top, +#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head { + text-shadow: 0 -1px 0 #333; + color: #fff; + border-top-color: #5A8FAD; + border-bottom-color: #5589AA; +} + +.folded #adminmenu li.wp-has-current-submenu, +.folded #adminmenu li.current.menu-top { + border-top-color: #5A8FAD; + border-bottom-color: #5589AA; +} + +#adminmenu .wp-submenu a:hover { + background-color: #EAF2FA !important; + color: #333 !important; +} + +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover { + color: #333; +} + +#adminmenu .wp-submenu ul { + background-color: #fff; +} + +.folded #adminmenu .wp-submenu-wrap, +.folded #adminmenu .wp-submenu ul { + border-color: #d0dfe9; +} + +.folded #adminmenu .wp-submenu-wrap { + -moz-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); +} + +#adminmenu .wp-submenu .wp-submenu-head { + border-right-color: #d0dfe9; + background-color: #EFF8FF; +} + +#adminmenu div.wp-submenu { + background-color: transparent; +} + +/* collapse menu button */ +#collapse-menu { + color: #A0C3D5; +} + +#collapse-menu:hover { + color: #5A8FAD; +} + +#collapse-button { + border-color: #d0dfe9; + background-color: #eff8ff; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #eff8ff, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #eff8ff, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #eff8ff, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #eff8ff, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #eff8ff, #fff); /* proposed W3C Markup */ +} +#collapse-menu:hover #collapse-button { + border-color: #A0C3D5; +} +#collapse-button div { + background: transparent url(../images/arrows-vs.png) no-repeat 0 -72px; +} +.folded #collapse-button div { + background-position: 0 -108px; +} + +/* menu and screen icons */ +#adminmenu .menu-icon-dashboard div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -60px -33px; +} + +#adminmenu .menu-icon-dashboard:hover div.wp-menu-image, +#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-dashboard.current div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -60px -1px; +} + +#adminmenu .menu-icon-post div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -271px -33px; +} + +#adminmenu .menu-icon-post:hover div.wp-menu-image, +#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -271px -1px; +} + +#adminmenu .menu-icon-media div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -120px -33px; +} + +#adminmenu .menu-icon-media:hover div.wp-menu-image, +#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -120px -1px; +} + +#adminmenu .menu-icon-links div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -90px -33px; +} + +#adminmenu .menu-icon-links:hover div.wp-menu-image, +#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -90px -1px; +} + +#adminmenu .menu-icon-page div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -150px -33px; +} + +#adminmenu .menu-icon-page:hover div.wp-menu-image, +#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -150px -1px; +} + +#adminmenu .menu-icon-comments div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -30px -33px; +} + +#adminmenu .menu-icon-comments:hover div.wp-menu-image, +#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-comments.current div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -30px -1px; +} + +#adminmenu .menu-icon-appearance div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll 0 -33px; +} + +#adminmenu .menu-icon-appearance:hover div.wp-menu-image, +#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll 0 -1px; +} + +#adminmenu .menu-icon-plugins div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -180px -33px; +} + +#adminmenu .menu-icon-plugins:hover div.wp-menu-image, +#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -180px -1px; +} + +#adminmenu .menu-icon-users div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -300px -33px; +} + +#adminmenu .menu-icon-users:hover div.wp-menu-image, +#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-users.current div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -300px -1px; +} + +#adminmenu .menu-icon-tools div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -210px -33px; +} + +#adminmenu .menu-icon-tools:hover div.wp-menu-image, +#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-tools.current div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -210px -1px; +} + +#icon-options-general, +#adminmenu .menu-icon-settings div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -240px -33px; +} + +#adminmenu .menu-icon-settings:hover div.wp-menu-image, +#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -240px -1px; +} + +#adminmenu .menu-icon-site div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -360px -33px; +} + +#adminmenu .menu-icon-site:hover div.wp-menu-image, +#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -360px -1px; +} +/* end menu and screen icons */ + +/* Screen Icons */ +#icon-edit, +#icon-post { + background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -552px -5px; +} + +#icon-index { + background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -137px -5px; +} + +#icon-upload { + background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -251px -5px; +} + +#icon-link-manager, +#icon-link, +#icon-link-category { + background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -190px -5px; +} + +#icon-edit-pages, +#icon-page { + background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -312px -5px; +} + +#icon-edit-comments { + background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -72px -5px; +} + +#icon-themes { + background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -11px -5px; +} + +#icon-plugins { + background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -370px -5px; +} + +#icon-users, +#icon-profile, +#icon-user-edit { + background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -600px -5px; +} + +#icon-tools, +#icon-admin { + background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -432px -5px; +} + +#icon-options-general { + background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -492px -5px; +} + +#icon-ms-admin { + background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -659px -5px; +} +/* end screen icons */ + + +/* Diff */ +table.diff .diff-deletedline { + background-color: #fdd; +} + +table.diff .diff-deletedline del { + background-color: #f99; +} + +table.diff .diff-addedline { + background-color: #dfd; +} + +table.diff .diff-addedline ins { + background-color: #9f9; +} + +#att-info { + background-color: #E4F2FD; +} + +/* edit image */ +#sidemenu a { + background-color: #f9f9f9; + border-color: #f9f9f9; + border-bottom-color: #dfdfdf; +} + +#sidemenu a.current { + background-color: #fff; + border-color: #dfdfdf #dfdfdf #fff; + color: #D54E21; +} + +#screen-options-wrap, +#contextual-help-wrap { + background-color: #f7fcfe; + border-color: #D1e5ee; +} + +#screen-options-link-wrap, +#contextual-help-link-wrap { + background-color: #eff8ff; /* Fallback */ + border-right: 1px solid #D1E5EE; + border-left: 1px solid #D1E5EE; + border-bottom: 1px solid #D1E5EE; + background-image: -ms-linear-gradient(bottom, #eff8ff, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #eff8ff, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #eff8ff, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#eff8ff), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #eff8ff, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #eff8ff, #fff); /* proposed W3C Markup */ +} + +#screen-meta-links a.show-settings { + color: #606060; +} + +#screen-meta-links a.show-settings:hover { + color: #000; +} + +#replysubmit { + background-color: #f1f1f1; + border-top-color: #ddd; +} + +#replyerror { + border-color: #ddd; + background-color: #f9f9f9; +} + +#edithead, +#replyhead { + background-color: #f1f1f1; +} + +#ed_reply_toolbar { + background-color: #e9e9e9; +} + +/* table vim shortcuts */ +.vim-current, +.vim-current th, +.vim-current td { + background-color: #E4F2FD !important; +} + +/* Install Plugins */ +.star-average, +.star.star-rating { + background-color: #fc0; +} + +div.star.select:hover { + background-color: #d00; +} + +div.star img { + border-left: 1px solid #fff; + border-right: 1px solid #fff; +} + +#plugin-information .fyi ul { + background-color: #eaf3fa; +} + +#plugin-information .fyi h2.mainheader { + background-color: #cee1ef; +} + +#plugin-information pre, +#plugin-information code { + background-color: #ededff; +} + +#plugin-information pre { + border: 1px solid #ccc; +} + +/* inline editor */ +.inline-edit-row fieldset input[type="text"], +.inline-edit-row fieldset textarea, +#bulk-titles, +#replyrow input { + border-color: #ddd; +} + +.inline-editor div.title { + background-color: #EAF3FA; +} + +.inline-editor ul.cat-checklist { + background-color: #fff; + border-color: #ddd; +} + +.inline-editor .categories .catshow, +.inline-editor .categories .cathide { + color: #21759b; +} + +.inline-editor .quick-edit-save { + background-color: #f1f1f1; +} + +#replyrow #ed_reply_toolbar input:hover { + border-color: #aaa; + background: #ddd; +} + +fieldset.inline-edit-col-right .inline-edit-col { + border-color: #dfdfdf; +} + +.attention { + color: #D54E21; +} + +.meta-box-sortables .postbox:hover .handlediv { + background: transparent url(../images/arrows-vs.png) no-repeat 6px 7px; +} + +.tablenav .tablenav-pages { + color: #555; +} + +.tablenav .tablenav-pages a { + border-color: #d1e5ee; + background: #eee url('../images/menu-bits-vs.gif?ver=20101102') repeat-x scroll left -379px; +} + +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #d54e21; +} + +.tablenav .tablenav-pages a.disabled, +.tablenav .tablenav-pages a.disabled:hover, +.tablenav .tablenav-pages a.disabled:focus { + color: #aaa; +} + +.tablenav .tablenav-pages .current { + background: #dfdfdf; + border-color: #d3d3d3; +} + +#availablethemes, +#availablethemes td { + border-color: #ddd; +} + +#current-theme img { + border-color: #999; +} + +#TB_window #TB_title a.tb-theme-preview-link, +#TB_window #TB_title a.tb-theme-preview-link:visited { + color: #999; +} + +#TB_window #TB_title a.tb-theme-preview-link:hover, +#TB_window #TB_title a.tb-theme-preview-link:focus { + color: #ccc; +} + +.misc-pub-section { + border-top-color: #fff; + border-bottom-color: #eee; +} + +#minor-publishing { + border-bottom-color: #ddd; +} + +#post-body .misc-pub-section { + border-right-color: #eee; +} + +.post-com-count span { + background-color: #bbb; +} + +.form-table .color-palette td { + border-color: #fff; +} + +.sortable-placeholder { + border-color: #bbb; + background-color: #f5f5f5; +} + +#post-body ul.category-tabs li.tabs a, +#post-body ul.add-menu-item-tabs li.tabs a, +body.press-this ul.category-tabs li.tabs a { + color: #333; +} + +#wp_editimgbtn, +#wp_delimgbtn, +#wp_editgallery, +#wp_delgallery { + border-color: #999; + background-color: #eee; +} + +#wp_editimgbtn:hover, +#wp_delimgbtn:hover, +#wp_editgallery:hover, +#wp_delgallery:hover { + border-color: #555; + background-color: #ccc; +} + +#favorite-first { + border-color: #c0c0c0; + background: #f1f1f1; /* fallback color */ + background:-moz-linear-gradient(bottom, #e7e7e7, #fff); + background:-webkit-gradient(linear, left bottom, left top, from(#e7e7e7), to(#fff)); +} + +#favorite-inside { + border-color: #c0c0c0; + background-color: #fff; +} + +#favorite-toggle { + background: transparent url(../images/fav-arrow.gif?ver=20100531) no-repeat 0 -4px; + border-color: #d0dfe9; + -moz-box-shadow: inset 1px 0 0 #fff; + -webkit-box-shadow: inset 1px 0 0 #fff; + box-shadow: inset 1px 0 0 #fff; +} + +#favorite-actions a { + color: #464646; +} + +#favorite-actions a:hover { + color: #000; +} + +#favorite-inside a:hover { + text-decoration: underline; +} + +#screen-meta a.show-settings, +.toggle-arrow { + background: transparent url(../images/arrows-vs.png) no-repeat right 3px; +} + +#screen-meta .screen-meta-active a.show-settings { + background: transparent url(../images/arrows-vs.png) no-repeat right -33px; +} + +.view-switch #view-switch-list { + background: transparent url(../images/list.png) no-repeat 0 0; +} + +.view-switch .current #view-switch-list { + background: transparent url(../images/list.png) no-repeat -40px 0; +} + +.view-switch #view-switch-excerpt { + background: transparent url(../images/list.png) no-repeat -20px 0; +} + +.view-switch .current #view-switch-excerpt { + background: transparent url(../images/list.png) no-repeat -60px 0; +} + +#header-logo { + background: transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center; +} + +.popular-tags, +.feature-filter { + background-color: #fff; + border-color: #DFDFDF; +} + +#theme-information .action-button { + border-top-color: #DFDFDF; +} + +.theme-listing br.line { + border-bottom-color: #ccc; +} + +div.widgets-sortables, +#widgets-left .inactive { + background-color: #f7fcfe; + border-color: #d0dfe9; +} + +#available-widgets .widget-holder { + background-color: #f7fcfe; + border-color: #d0dfe9; +} + +#available-widgets .widget-description { + color: #555; +} + +.sidebar-name { + color: #464646; + background-color: #f7fcfe; /* Fallback */ + background-image: -ms-linear-gradient(top, #ECF8FE, #f7fcfe); /* IE10 */ + background-image: -moz-linear-gradient(top, #ECF8FE, #f7fcfe); /* Firefox */ + background-image: -o-linear-gradient(top, #ECF8FE, #f7fcfe); /* Opera */ + background-image: -webkit-gradient(linear, left top, left bottom, from(#ECF8FE), to(#f7fcfe)); /* old Webkit */ + background-image: -webkit-linear-gradient(top, #ECF8FE, #f7fcfe); /* new Webkit */ + background-image: linear-gradient(top, #ECF8FE, #f7fcfe); /* proposed W3C Markup */ + text-shadow: #fff 0 1px 0; + border-color: #d0dfe9; + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; +} + +.sidebar-name:hover, +#removing-widget { + color: #d54e21; +} + +#removing-widget span { + color: black; +} + +.sidebar-name-arrow { + background: transparent url(../images/arrows-vs.png) no-repeat 5px 9px; +} + +.sidebar-name:hover .sidebar-name-arrow { + background: transparent url(../images/arrows-dark-vs.png) no-repeat 5px 9px; +} + +.in-widget-title { + color: #606060; +} + +.deleting .widget-title * { + color: #aaa; +} + +.imgedit-menu div { + border-color: #d5d5d5; + background-color: #f1f1f1; +} + +.imgedit-menu div:hover { + border-color: #c1c1c1; + background-color: #eaeaea; +} + +.imgedit-menu div.disabled { + border-color: #ccc; + background-color: #ddd; + filter: alpha(opacity=50); + opacity: 0.5; +} + +#dashboard_recent_comments div.undo { + border-top-color: #dfdfdf; +} + +.comment-ays, +.comment-ays th { + border-color: #ddd; +} + +.comment-ays th { + background-color: #f1f1f1; +} + +/* added from nav-menu.css */ +#menu-management .menu-edit { + border-color: #d0dfe9; +} + +#post-body { + background: #ffffff; + border-top-color: #fff; + border-bottom-color: #d0dfe9; +} + +#nav-menu-header { + border-bottom-color: #d0dfe9; +} + +#nav-menu-footer { + border-top-color: #fff; +} + +#menu-management .nav-tabs-arrow a { + color: #C1C1C1; +} + +#menu-management .nav-tabs-arrow a:hover { + color: #D54E21; +} + +#menu-management .nav-tabs-arrow a:active { + color: #464646; +} + +#menu-management .nav-tab-active { + border-color: #dfdfdf; +} + +#menu-management .nav-tab { + background: #f7fcfe; + border-color: #d0dfe9; +} + +.js .input-with-default-title { + color: #aaa; +} + +#cancel-save { + color: #ff0000; +} + +#cancel-save:hover { + background-color: #FF0000; + color: #fff; +} + +.list-container { + border-color: #dfdfdf; +} + +.menu-item-handle { + border-color: #d0dfe9; +} + +.menu li.deleting .menu-item-handle { + background-color: #f66; + text-shadow: #ccc; +} + +.item-type { /* Menu item controls */ + color: #999999; +} + +.item-controls .menu-item-delete:hover { + color: #ff0000; +} + +.item-edit { + background: transparent url(../images/arrows-vs.png) no-repeat 8px 10px; + border-bottom-color: #eee; +} + +.item-edit:hover { + background: transparent url(../images/arrows-dark-vs.png) no-repeat 8px 10px; +} + +.menu-item-settings { /* Menu editing */ + border-color: #d0dfe9; +} + +.link-to-original { + color: #777; + border-color: #d0dfe9; +} + +#cancel-save:hover { + color: #fff !important; +} + +#update-menu-item { + color: #fff !important; +} + +#update-menu-item:hover, +#update-menu-item:active, +#update-menu-item:focus { + color: #eaf2fa !important; + border-color: #13455b !important; +} + +.submitbox .submitcancel { + color: #21759B; + border-bottom-color: #21759B; +} + +.submitbox .submitcancel:hover { + background: #21759B; + color: #fff; +} +/* end added from nav-menu.css */ + +#menu-management .nav-tab-active, +.menu-item-handle, +.menu-item-settings { + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; +} + +#menu-management .nav-tab-active { + background: #eff8ff; + border-bottom-color: #eff8ff; +} + +/* custom header & background pages */ +#upload-form label { + color: #777; +} +/* custom header & background pages */ + +/* full screen */ +.fullscreen-overlay { + background: #fff; +} + +.wp-fullscreen-focus #wp-fullscreen-title, +.wp-fullscreen-focus #wp-fullscreen-container { + border-color: #BED1DD; +} + +#fullscreen-topbar { + border-bottom-color: #D1E5EE; +} diff --git a/src/wp-admin/css/colors-fresh-rtl.css b/src/wp-admin/css/colors-fresh-rtl.css new file mode 100644 index 0000000..bd5b114 --- /dev/null +++ b/src/wp-admin/css/colors-fresh-rtl.css @@ -0,0 +1 @@ +.bar{border-right-color:none;border-left-color:#99d;}.post-com-count{background-image:url(../images/bubble_bg-rtl.gif);}#user_info_arrow{background:transparent url(../images/arrows.png) no-repeat 0 5px;}#user_info:hover #user_info_arrow,#user_info.active #user_info_arrow{background:transparent url(../images/arrows-dark.png) no-repeat 0 5px;}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow-rtl.png);background-position:top left;}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark.png) no-repeat 8px 6px;}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows.png) no-repeat 8px 6px;}#adminmenu .wp-submenu .wp-submenu-head{border-right-color:none;border-left-color:#dfdfdf;}.folded #adminmenu .wp-submenu-wrap{-moz-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:-2px 2px 5px rgba(0,0,0,0.4);box-shadow:-2px 2px 5px rgba(0,0,0,0.4);}#collapse-button div{background-position:0 -108px;}.folded #collapse-button div{background-position:0 -72px;}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px;}.tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee url('../images/menu-bits-rtl.gif?ver=20100610') repeat-x scroll right -379px;}#post-body .misc-pub-section{border-right-color:none;border-left-color:#eee;}#favorite-toggle{background:transparent url(../images/arrows.png) no-repeat 4px 2px;}#screen-meta a.show-settings,.toggle-arrow{background:transparent url(../images/arrows.png) no-repeat left 3px;}#screen-meta .screen-meta-active a.show-settings{background:transparent url(../images/arrows.png) no-repeat left -33px;}.sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px;}.sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px;} \ No newline at end of file diff --git a/src/wp-admin/css/colors-fresh-rtl.dev.css b/src/wp-admin/css/colors-fresh-rtl.dev.css new file mode 100644 index 0000000..58ffe59 --- /dev/null +++ b/src/wp-admin/css/colors-fresh-rtl.dev.css @@ -0,0 +1,98 @@ +.bar { + border-right-color: none; + border-left-color: #99d; +} + +.post-com-count { + background-image: url(../images/bubble_bg-rtl.gif); +} + +#user_info_arrow { + background: transparent url(../images/arrows.png) no-repeat 0 5px; +} + +#user_info:hover #user_info_arrow, +#user_info.active #user_info_arrow { + background: transparent url(../images/arrows-dark.png) no-repeat 0 5px; +} + +/* editors */ + +/* menu */ + +#adminmenushadow, +#adminmenuback { + background-image: url(../images/menu-shadow-rtl.png); + background-position: top left; +} + +#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, +#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { + background: transparent url(../images/arrows-dark.png) no-repeat 8px 6px; +} + +#adminmenu .wp-has-submenu:hover .wp-menu-toggle, +#adminmenu .wp-menu-open .wp-menu-toggle { + background: transparent url(../images/arrows.png) no-repeat 8px 6px; +} + + +#adminmenu .wp-submenu .wp-submenu-head { + border-right-color: none; + border-left-color: #dfdfdf; +} + +.folded #adminmenu .wp-submenu-wrap { + -moz-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); + box-shadow: -2px 2px 5px rgba( 0, 0, 0, 0.4 ); +} + +/* collapse menu button */ +#collapse-button div { + background-position: 0 -108px; +} +.folded #collapse-button div { + background-position: 0 -72px; +} + +/* edit image */ + +.meta-box-sortables .postbox:hover .handlediv { + background: transparent url(../images/arrows.png) no-repeat 6px 7px; +} + +.tablenav .tablenav-pages a { + border-color: #e3e3e3; + background: #eee url('../images/menu-bits-rtl.gif?ver=20100610') repeat-x scroll right -379px; +} + +#post-body .misc-pub-section { + border-right-color: none; + border-left-color: #eee; +} + +#favorite-toggle { + background: transparent url(../images/arrows.png) no-repeat 4px 2px; +} + +#screen-meta a.show-settings, +.toggle-arrow { + background: transparent url(../images/arrows.png) no-repeat left 3px; +} + +#screen-meta .screen-meta-active a.show-settings { + background: transparent url(../images/arrows.png) no-repeat left -33px; +} + +.sidebar-name-arrow { + background: transparent url(../images/arrows.png) no-repeat 5px 9px; +} +.sidebar-name:hover .sidebar-name-arrow { + background: transparent url(../images/arrows-dark.png) no-repeat 5px 9px; +} + + +/* custom header & background pages */ + +/* custom header & background pages */ diff --git a/src/wp-admin/css/colors-fresh.css b/src/wp-admin/css/colors-fresh.css new file mode 100644 index 0000000..760faee --- /dev/null +++ b/src/wp-admin/css/colors-fresh.css @@ -0,0 +1 @@ +html,.wp-dialog{background-color:#fff;}* html input,* html .widget{border-color:#dfdfdf;}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],select{border-color:#dfdfdf;background-color:#fff;}kbd,code{background:#eaeaea;}input[readonly]{background-color:#eee;}.find-box-search{border-color:#dfdfdf;background-color:#f1f1f1;}.find-box{background-color:#f1f1f1;}.find-box-inside{background-color:#fff;}a.page-numbers:hover{border-color:#999;}body,#wpbody,.form-table .pre{color:#333;}body>#upload-menu{border-bottom-color:#fff;}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links,#replyrow #ed_reply_toolbar input{border-color:#ccc;}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red;}#poststuff .inside label.waiting{color:orange;}#poststuff .inside label.approved{color:green;}#postcustomstuff table{border-color:#dfdfdf;background-color:#F9F9F9;}#postcustomstuff thead th{background-color:#F1F1F1;}#postcustomstuff table input,#postcustomstuff table textarea{border-color:#dfdfdf;background-color:#fff;}.widefat{border-color:#dfdfdf;background-color:#f9f9f9;}div.dashboard-widget-error{background-color:#c43;}div.dashboard-widget-notice{background-color:#cfe1ef;}div.dashboard-widget-submit{border-top-color:#ccc;}div.tabs-panel,.wp-tab-panel,ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;background-color:#fff;}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#fff;}input.disabled,textarea.disabled{background-color:#ccc;}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff;}.widget .widget-top,.postbox h3,.stuffbox h3,.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head,.sidebar-name,#nav-menu-header,#nav-menu-footer,.menu-item-handle,#fullscreen-topbar{background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);}.widget .widget-top,.postbox h3,.stuffbox h3{border-bottom-color:#dfdfdf;text-shadow:#fff 0 1px 0;-moz-box-shadow:0 1px 0 #fff;-webkit-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0;}.description,.form-wrap p{color:#666;}strong .post-com-count span{background-color:#21759b;}.sorthelper{background-color:#ccf3fa;}.ac_match,.subsubsub a.current{color:#000;}.wrap h2{color:#464646;}.wrap .add-new-h2{background:#f1f1f1;}.subtitle{color:#777;}.ac_over{background-color:#f0f0b8;}.ac_results{background-color:#fff;border-color:#808080;}.ac_results li{color:#101010;}.alternate,.alt{background-color:#fcfcfc;}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd;}.bar{background-color:#e8e8e8;border-right-color:#99d;}#media-upload,#media-upload .media-item .slidetoggle{background:#fff;}#media-upload .slidetoggle{border-top-color:#dfdfdf;}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00;}div.error a{color:#c00;}.form-invalid{background-color:#ffebe8!important;}.form-invalid input,.form-invalid select{border-color:#c00!important;}.submit{border-color:#DFDFDF;}.highlight{background-color:#e4f2fd;color:#000;}.howto,.nonessential,#edit-slug-box,.form-input-tip,.subsubsub{color:#666;}.media-item{border-bottom-color:#dfdfdf;}#wpbody-content #media-items .describe{border-top-color:#dfdfdf;}.media-upload-form label.form-help,td.help{color:#9a9a9a;}.post-com-count{background-image:url(../images/bubble_bg.gif);color:#fff;}.post-com-count span{background-color:#bbb;color:#fff;}.post-com-count:hover span{background-color:#d54e21;}.quicktags,.search{background-color:#ccc;color:#000;}.side-info h5{border-bottom-color:#dadada;}.side-info ul{color:#666;}.button,.button-secondary,.submit input,input[type=button],input[type=submit]{border-color:#bbb;color:#464646;}.button:hover,.button-secondary:hover,.submit input:hover,input[type=button]:hover,input[type=submit]:hover{color:#000;border-color:#666;}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;text-shadow:rgba(255,255,255,1) 0 1px 0;}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top;}input.button-primary,button.button-primary,a.button-primary{border-color:#298cba;font-weight:bold;color:#fff;background:#21759B url(../images/button-grad.png) repeat-x scroll left top;text-shadow:rgba(0,0,0,0.3) 0 -1px 0;}input.button-primary:active,button.button-primary:active,a.button-primary:active{background:#21759b url(../images/button-grad-active.png) repeat-x scroll left top;color:#eaf2fa;}input.button-primary:hover,button.button-primary:hover,a.button-primary:hover,a.button-primary:focus,a.button-primary:active{border-color:#13455b;color:#eaf2fa;}.button-disabled,.button[disabled],.button:disabled,.button-secondary[disabled],.button-secondary:disabled,a.button.disabled{color:#aaa!important;border-color:#ddd!important;}.button-primary-disabled,.button-primary[disabled],.button-primary:disabled{color:#9FD0D5!important;background:#298CBA!important;}a:hover,a:active,a:focus{color:#d54e21;}#wphead #viewsite a:hover,#adminmenu a:hover,#adminmenu ul.wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21;}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf;}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333;}#rightnow .rbutton{background-color:#ebebeb;color:#264761;}.submitbox .submit{background-color:#464646;color:#ccc;}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00;}.submitbox .submitdelete:hover,#media-items a.delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00;}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00;}.tablenav .dots{border-color:transparent;}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b;}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21;}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55;}.update-message{color:#000;}a.page-numbers{border-bottom-color:#B8D3E2;}.commentlist li{border-bottom-color:#ccc;}.widefat td,.widefat th{border-top-color:#fff;border-bottom-color:#dfdfdf;}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0;}.widefat td{color:#555;}.widefat p,.widefat ol,.widefat ul{color:#333;}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head{color:#333;}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333;}h3.dashboard-widget-title small a{color:#d7d7d7;}h3.dashboard-widget-title small a:hover{color:#fff;}a,#adminmenu a,#poststuff #edButtonPreview,#poststuff #edButtonHTML,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,.plugins a.delete,.ui-tabs-nav a{color:#21759b;}#adminmenu .awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-khtml-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0;}#plugin-information .action-button{background-color:#d54e21;color:#fff;}#adminmenu li.current a .awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-moz-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-khtml-box-shadow:rgba(255,255,255,0.5) 0 1px 0;-webkit-box-shadow:rgba(255,255,255,0.5) 0 1px 0;box-shadow:rgba(255,255,255,0.5) 0 1px 0;}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf;}#currenttheme img{border-color:#666;}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9;}input.readonly,textarea.readonly{background-color:#ddd;}#ed_toolbar input,#ed_reply_toolbar input{background:#fff url("../images/fade-butt.png") repeat-x 0 -2px;}#editable-post-name{background-color:#fffbcc;}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777;}.login #nav a,.login #backtoblog a{color:#21759b!important;}.login #nav a:hover,.login #backtoblog a:hover{color:#d54e21!important;}#footer{color:#777;border-color:#dfdfdf;}#media-items,.imgedit-group{border-color:#dfdfdf;}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fcfcfc;}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#f4f4f4;}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf;}.plugins .active,.plugins .active th,.plugins .active td{color:#000;}.plugins .inactive a{color:#579;}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4;}#the-comment-list .unapproved{background-color:#ffffe0;}#the-comment-list .approve a{color:#006505;}#the-comment-list .unapprove a{color:#d98500;}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b;}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#dfdfdf;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.widget,#widget-list .widget-top,.postbox,.menu-item-settings{background-color:#f5f5f5;background-image:-ms-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-moz-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-o-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#f5f5f5));background-image:-webkit-linear-gradient(top,#f9f9f9,#f5f5f5);background-image:linear-gradient(top,#f9f9f9,#f5f5f5);}.postbox h3{color:#464646;}.widget .widget-top{color:#222;}.sidebar-name:hover h3,.postbox h3:hover{color:#000;}.curtime #timestamp{background-image:url(../images/date-button.gif);}#quicktags #ed_link{color:#00f;}#rightnow .youhave{background-color:#f0f6fb;}#rightnow a{color:#448abd;}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat;}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0;}#update-nag,.update-nag{background-color:#FFFBCC;border-color:#E6DB55;color:#555;}.login #backtoblog a{color:#464646;}#wphead{border-bottom:#dfdfdf 1px solid;}#wphead h1 a{color:#464646;}#user_info{color:#555;}#user_info:hover,#user_info.active{color:#222;}#user_info.active{background-color:#f1f1f1;background-image:-ms-linear-gradient(bottom,#e9e9e9,#f9f9f9);background-image:-moz-linear-gradient(bottom,#e9e9e9,#f9f9f9);background-image:-o-linear-gradient(bottom,#e9e9e9,#f9f9f9);background-image:-webkit-gradient(linear,left bottom,left top,from(#e9e9e9),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#e9e9e9,#f9f9f9);background-image:linear-gradient(bottom,#e9e9e9,#f9f9f9);border-color:#aaa #aaa #dfdfdf;}#user_info_arrow{background:transparent url(../images/arrows.png) no-repeat 6px 5px;}#user_info:hover #user_info_arrow,#user_info.active #user_info_arrow{background:transparent url(../images/arrows-dark.png) no-repeat 6px 5px;}#user_info_links{-moz-box-shadow:0 3px 2px -2px rgba(0,0,0,0.2);-webkit-box-shadow:0 3px 2px -2px rgba(0,0,0,0.2);box-shadow:0 3px 2px -2px rgba(0,0,0,0.2);}#user_info_links ul{background:#f1f1f1;border-color:#ccc #aaa #aaa;-moz-box-shadow:inset 0 1px 0 #f9f9f9;-webkit-box-shadow:inset 0 1px 0 #f9f9f9;box-shadow:inset 0 1px 0 #f9f9f9;}#user_info_links li:hover{background-color:#dfdfdf;}#user_info_links li:hover a,#user_info_links li a:hover{text-decoration:none;}#user_info a:link,#user_info a:visited,#footer a:link,#footer a:visited{text-decoration:none;}#footer a:hover{color:#000;text-decoration:underline;}div#media-upload-error,.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00;}#pass-strength-result{background-color:#eee;border-color:#ddd!important;}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important;}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;}#quicktags{border-color:#ccc;background-color:#dfdfdf;background-image:url("../images/ed-bg.gif");}#ed_toolbar input{border-color:#C3C3C3;}#ed_toolbar input:hover{border-color:#aaa;background:#ddd;}#poststuff .wp_themeSkin .mceStatusbar{border-color:#dfdfdf;}#poststuff .wp_themeSkin .mceStatusbar *{color:#555;}#poststuff #edButtonPreview,#poststuff #edButtonHTML{background-color:#f1f1f1;border-color:#dfdfdf #dfdfdf #ccc;color:#999;}#poststuff #editor-toolbar .active{border-color:#ccc #ccc #e9e9e9;background-color:#e9e9e9;color:#333;}#post-status-info{background-color:#EDEDED;}.wp_themeSkin *,.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{color:#000;}.wp_themeSkin table.mceLayout{border-color:#ccc #ccc #dfdfdf;}#editorcontainer #content,#editorcontainer .wp_themeSkin .mceIframeContainer{-moz-box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);-webkit-box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);box-shadow:inset 1px 1px 2px rgba(0,0,0,0.1);}.wp_themeSkin iframe{background:transparent;}.wp_themeSkin .mceStatusbar{color:#000;background-color:#f5f5f5;}.wp_themeSkin .mceButton{border-color:#ccc;background-color:#eee;background-image:-ms-linear-gradient(bottom,#ddd,#fff);background-image:-moz-linear-gradient(bottom,#ddd,#fff);background-image:-o-linear-gradient(bottom,#ddd,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ddd),to(#fff));background-image:-webkit-linear-gradient(bottom,#ddd,#fff);background-image:linear-gradient(bottom,#ddd,#fff);}.wp_themeSkin a.mceButtonEnabled:hover{border-color:#a0a0a0;background:#ddd;background-image:-ms-linear-gradient(bottom,#ccc,#fff);background-image:-moz-linear-gradient(bottom,#ccc,#fff);background-image:-o-linear-gradient(bottom,#ccc,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#fff));background-image:-webkit-linear-gradient(bottom,#ccc,#fff);background-image:linear-gradient(bottom,#ccc,#fff);}.wp_themeSkin a.mceButton:active,.wp_themeSkin a.mceButtonEnabled:active,.wp_themeSkin a.mceButtonSelected:active,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonActive:active,.wp_themeSkin a.mceButtonActive:hover{background-color:#ddd;background-image:-ms-linear-gradient(bottom,#eee,#bbb);background-image:-moz-linear-gradient(bottom,#eee,#bbb);background-image:-o-linear-gradient(bottom,#eee,#bbb);background-image:-webkit-gradient(linear,left bottom,left top,from(#eee),to(#bbb));background-image:-webkit-linear-gradient(bottom,#eee,#bbb);background-image:linear-gradient(bottom,#eee,#bbb);border-color:#909090;}.wp_themeSkin .mceButtonDisabled{border-color:#ccc!important;}.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen{border-color:#ccc;background-color:#eee;background-image:-ms-linear-gradient(bottom,#ddd,#fff);background-image:-moz-linear-gradient(bottom,#ddd,#fff);background-image:-o-linear-gradient(bottom,#ddd,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ddd),to(#fff));background-image:-webkit-linear-gradient(bottom,#ddd,#fff);background-image:linear-gradient(bottom,#ddd,#fff);}.wp_themeSkin .mceListBox .mceOpen{border-left:0!important;}.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxHover:active .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin .mceListBoxSelected .mceText,.wp_themeSkin table.mceListBoxEnabled:active .mceText{background:#ccc;border-color:#999;}.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText,.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen{border-color:#909090;background-color:#eee;background-image:-ms-linear-gradient(bottom,#ccc,#fff);background-image:-moz-linear-gradient(bottom,#ccc,#fff);background-image:-o-linear-gradient(bottom,#ccc,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#fff));background-image:-webkit-linear-gradient(bottom,#ccc,#fff);background-image:linear-gradient(bottom,#ccc,#fff);}.wp_themeSkin select.mceListBox{border-color:#B2B2B2;background-color:#fff;}.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen{border-color:#ccc;}.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover{border-color:#909090;}.wp_themeSkin table.mceSplitButton td{background-color:#eee;background-image:-ms-linear-gradient(bottom,#ddd,#fff);background-image:-moz-linear-gradient(bottom,#ddd,#fff);background-image:-o-linear-gradient(bottom,#ddd,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ddd),to(#fff));background-image:-webkit-linear-gradient(bottom,#ddd,#fff);background-image:linear-gradient(bottom,#ddd,#fff);}.wp_themeSkin table.mceSplitButton:hover td{background-image:-ms-linear-gradient(bottom,#ccc,#fff);background-image:-moz-linear-gradient(bottom,#ccc,#fff);background-image:-o-linear-gradient(bottom,#ccc,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#ccc),to(#fff));background-image:-webkit-linear-gradient(bottom,#ccc,#fff);background-image:linear-gradient(bottom,#ccc,#fff);}.wp_themeSkin .mceSplitButtonActive{background-color:#B2B2B2;}.wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#B2B2B2;}.wp_themeSkin .mceColorSplitMenu a{border-color:#B2B2B2;}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors{border-color:#fff;}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0A246A;background-color:#B6BDD2;}.wp_themeSkin a.mceMoreColors:hover{border-color:#0A246A;}.wp_themeSkin .mceMenu{border-color:#ddd;}.wp_themeSkin .mceMenu table{background-color:#ebeaeb;}.wp_themeSkin .mceMenu .mceText{color:#000;}.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5;}.wp_themeSkin td.mceMenuItemSeparator{background-color:#aaa;}.wp_themeSkin .mceMenuItemTitle a{background-color:#ccc;border-bottom-color:#aaa;}.wp_themeSkin .mceMenuItemTitle span.mceText{color:#000;}.wp_themeSkin .mceMenuItemDisabled .mceText{color:#888;}.wp_themeSkin tr.mceFirst td.mceToolbar{background:#dfdfdf url("../images/ed-bg.gif") repeat-x scroll left top;border-color:#ccc;}.wp-admin #mceModalBlocker{background:#000;}.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-moz-border-radius:3px 0 0 0;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;}.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;border-top-right-radius:3px;-khtml-border-top-right-radius:3px;-webkit-border-top-right-radius:3px;-moz-border-radius:0 3px 0 0;}.wp-admin .clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999;}.wp-admin .clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999;}.wp-admin .clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999;}.wp-admin .clearlooks2 .mceFocus .mceTop span{color:#e5e5e5;}#titlediv #title{border-color:#ccc;}#editorcontainer{border-color:#ccc #ccc #dfdfdf;}#post-status-info{border-color:#dfdfdf #ccc #ccc;}.editwidget .widget-inside{border-color:#dfdfdf;}#titlediv #title{background-color:#fff;}#tTips p#tTips_inside{background-color:#ddd;color:#333;}#timestampdiv input,#namediv input,#poststuff .inside .the-tagcloud{border-color:#ddd;}#adminmenuback,#adminmenuwrap{background-color:#ececec;border-color:#ccc;}#adminmenushadow,#adminmenuback{background-image:url(../images/menu-shadow.png);background-position:top right;background-repeat:repeat-y;}#adminmenu li.wp-menu-separator{background:#dfdfdf;border-color:#cfcfcf;}#adminmenu div.separator{border-color:#e1e1e1;}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/arrows-dark.png) no-repeat -1px 6px;}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/arrows.png) no-repeat -2px 6px;}#adminmenu a.menu-top,.folded #adminmenu li.menu-top,#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#f9f9f9;border-bottom-color:#dfdfdf;}#adminmenu li.wp-menu-open{border-color:#dfdfdf;}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,#adminmenu .wp-menu-arrow,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:#777;background-image:-ms-linear-gradient(bottom,#6d6d6d,#808080);background-image:-moz-linear-gradient(bottom,#6d6d6d,#808080);background-image:-o-linear-gradient(bottom,#6d6d6d,#808080);background-image:-webkit-gradient(linear,left bottom,left top,from(#6d6d6d),to(#808080));background-image:-webkit-linear-gradient(bottom,#6d6d6d,#808080);background-image:linear-gradient(bottom,#6d6d6d,#808080);}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top,#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{text-shadow:0 -1px 0 #333;color:#fff;border-top-color:#808080;border-bottom-color:#6d6d6d;}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{border-top-color:#808080;border-bottom-color:#6d6d6d;}#adminmenu .wp-submenu a:hover{background-color:#EAF2FA!important;color:#333!important;}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333;}#adminmenu .wp-submenu ul{background-color:#fff;}.folded #adminmenu .wp-submenu-wrap,.folded #adminmenu .wp-submenu ul{border-color:#dfdfdf;}.folded #adminmenu .wp-submenu-wrap{-moz-box-shadow:2px 2px 5px rgba(0,0,0,0.4);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,0.4);box-shadow:2px 2px 5px rgba(0,0,0,0.4);}#adminmenu .wp-submenu .wp-submenu-head{border-right-color:#dfdfdf;background-color:#ececec;}#adminmenu div.wp-submenu{background-color:transparent;}#collapse-menu{color:#aaa;}#collapse-menu:hover{color:#999;}#collapse-button{border-color:#ccc;background-color:#f4f4f4;background-image:-ms-linear-gradient(bottom,#dfdfdf,#fff);background-image:-moz-linear-gradient(bottom,#dfdfdf,#fff);background-image:-o-linear-gradient(bottom,#dfdfdf,#fff);background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#fff));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#fff);background-image:linear-gradient(bottom,#dfdfdf,#fff);}#collapse-menu:hover #collapse-button{border-color:#aaa;}#collapse-button div{background:transparent url(../images/arrows.png) no-repeat 0 -72px;}.folded #collapse-button div{background-position:0 -108px;}#adminmenu .menu-icon-dashboard div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -60px -33px;}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -60px -1px;}#adminmenu .menu-icon-post div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -271px -33px;}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -271px -1px;}#adminmenu .menu-icon-media div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -120px -33px;}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -120px -1px;}#adminmenu .menu-icon-links div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -90px -33px;}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -90px -1px;}#adminmenu .menu-icon-page div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -150px -33px;}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -150px -1px;}#adminmenu .menu-icon-comments div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -30px -33px;}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -30px -1px;}#adminmenu .menu-icon-appearance div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll 0 -33px;}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll 0 -1px;}#adminmenu .menu-icon-plugins div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -180px -33px;}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -180px -1px;}#adminmenu .menu-icon-users div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -300px -33px;}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-users.current div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -300px -1px;}#adminmenu .menu-icon-tools div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -210px -33px;}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-tools.current div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -210px -1px;}#icon-options-general,#adminmenu .menu-icon-settings div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -240px -33px;}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -240px -1px;}#adminmenu .menu-icon-site div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -360px -33px;}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -360px -1px;}#icon-edit,#icon-post{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -552px -5px;}#icon-index{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -137px -5px;}#icon-upload{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -251px -5px;}#icon-link-manager,#icon-link,#icon-link-category{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -190px -5px;}#icon-edit-pages,#icon-page{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -312px -5px;}#icon-edit-comments{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -72px -5px;}#icon-themes{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -11px -5px;}#icon-plugins{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -370px -5px;}#icon-users,#icon-profile,#icon-user-edit{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -600px -5px;}#icon-tools,#icon-admin{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -432px -5px;}#icon-options-general{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -492px -5px;}#icon-ms-admin{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -659px -5px;}table.diff .diff-deletedline{background-color:#fdd;}table.diff .diff-deletedline del{background-color:#f99;}table.diff .diff-addedline{background-color:#dfd;}table.diff .diff-addedline ins{background-color:#9f9;}#att-info{background-color:#E4F2FD;}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf;}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#D54E21;}#screen-options-wrap,#contextual-help-wrap{background-color:#f1f1f1;border-color:#dfdfdf;}#screen-options-link-wrap,#contextual-help-link-wrap{background-color:#e3e3e3;border-right:1px solid transparent;border-left:1px solid transparent;border-bottom:1px solid transparent;background-image:-ms-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-moz-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-o-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:-webkit-gradient(linear,left bottom,left top,from(#dfdfdf),to(#f1f1f1));background-image:-webkit-linear-gradient(bottom,#dfdfdf,#f1f1f1);background-image:linear-gradient(bottom,#dfdfdf,#f1f1f1);}#screen-meta-links a.show-settings{color:#777;}#screen-meta-links a.show-settings:hover{color:#000;}#replysubmit{background-color:#f1f1f1;border-top-color:#ddd;}#replyerror{border-color:#ddd;background-color:#f9f9f9;}#edithead,#replyhead{background-color:#f1f1f1;}#ed_reply_toolbar{background-color:#e9e9e9;}.vim-current,.vim-current th,.vim-current td{background-color:#E4F2FD!important;}.star-average,.star.star-rating{background-color:#fc0;}div.star.select:hover{background-color:#d00;}div.star img{border-left:1px solid #fff;border-right:1px solid #fff;}.widefat div.star img{border-left:1px solid #f9f9f9;border-right:1px solid #f9f9f9;}#plugin-information .fyi ul{background-color:#eaf3fa;}#plugin-information .fyi h2.mainheader{background-color:#cee1ef;}#plugin-information pre,#plugin-information code{background-color:#ededff;}#plugin-information pre{border:1px solid #ccc;}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea,#bulk-titles,#replyrow input{border-color:#ddd;}.inline-editor div.title{background-color:#EAF3FA;}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd;}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b;}.inline-editor .quick-edit-save{background-color:#f1f1f1;}#replyrow #ed_reply_toolbar input:hover{border-color:#aaa;background:#ddd;}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf;}.attention{color:#D54E21;}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px;}.tablenav .tablenav-pages{color:#555;}.tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee url('../images/menu-bits.gif?ver=20100610') repeat-x scroll left -379px;}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21;}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa;}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3;}#availablethemes,#availablethemes td{border-color:#ddd;}#current-theme img{border-color:#999;}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999;}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc;}.misc-pub-section{border-top-color:#fff;border-bottom-color:#dfdfdf;}#minor-publishing{border-bottom-color:#dfdfdf;}#post-body .misc-pub-section{border-right-color:#eee;}.post-com-count span{background-color:#bbb;}.form-table .color-palette td{border-color:#fff;}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333;}#wp_editimgbtn,#wp_delimgbtn,#wp_editgallery,#wp_delgallery{border-color:#999;background-color:#eee;}#wp_editimgbtn:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_delgallery:hover{border-color:#555;background-color:#ccc;}#favorite-first{border-color:#c0c0c0;background:#f1f1f1;background:-moz-linear-gradient(bottom,#e7e7e7,#fff);background:-webkit-gradient(linear,left bottom,left top,from(#e7e7e7),to(#fff));}#favorite-inside{border-color:#c0c0c0;background-color:#fff;}#favorite-toggle{background:transparent url(../images/arrows.png) no-repeat 4px 2px;border-color:#dfdfdf;-moz-box-shadow:inset 1px 0 0 #fff;-webkit-box-shadow:inset 1px 0 0 #fff;box-shadow:inset 1px 0 0 #fff;}#favorite-actions a{color:#464646;}#favorite-actions a:hover{color:#000;}#favorite-inside a:hover{text-decoration:underline;}#screen-meta a.show-settings,.toggle-arrow{background:transparent url(../images/arrows.png) no-repeat right 3px;}#screen-meta .screen-meta-active a.show-settings{background:transparent url(../images/arrows.png) no-repeat right -33px;}.view-switch #view-switch-list{background:transparent url(../images/list.png) no-repeat 0 0;}.view-switch .current #view-switch-list{background:transparent url(../images/list.png) no-repeat -40px 0;}.view-switch #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -20px 0;}.view-switch .current #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -60px 0;}#header-logo{background:transparent url(../images/wp-logo.png?ver=20110504) no-repeat scroll center center;}.popular-tags,.feature-filter{background-color:#fff;border-color:#DFDFDF;}#theme-information .action-button{border-top-color:#DFDFDF;}.theme-listing br.line{border-bottom-color:#ccc;}div.widgets-sortables,#widgets-left .inactive{background-color:#fcfcfc;border-color:#dfdfdf;}#available-widgets .widget-holder{background-color:#fcfcfc;border-color:#dfdfdf;}#available-widgets .widget-description{color:#555;}.sidebar-name{color:#464646;text-shadow:#fff 0 1px 0;border-color:#dfdfdf;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;}.sidebar-name:hover,#removing-widget{color:#d54e21;}#removing-widget span{color:black;}.sidebar-name-arrow{background:transparent url(../images/arrows.png) no-repeat 5px 9px;}.sidebar-name:hover .sidebar-name-arrow{background:transparent url(../images/arrows-dark.png) no-repeat 5px 9px;}.in-widget-title{color:#606060;}.deleting .widget-title *{color:#aaa;}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1;}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5;}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf;}.comment-ays,.comment-ays th{border-color:#ddd;}.comment-ays th{background-color:#f1f1f1;}#menu-management .menu-edit{border-color:#dfdfdf;}#post-body{background:#fff;border-top-color:#fff;border-bottom-color:#dfdfdf;}#nav-menu-header{border-bottom-color:#dfdfdf;}#nav-menu-footer{border-top-color:#fff;}#menu-management .nav-tabs-arrow a{color:#C1C1C1;}#menu-management .nav-tabs-arrow a:hover{color:#D54E21;}#menu-management .nav-tabs-arrow a:active{color:#464646;}#menu-management .nav-tab-active{border-color:#dfdfdf;}#menu-management .nav-tab{background:#fbfbfb;border-color:#dfdfdf;}.js .input-with-default-title{color:#aaa;}#cancel-save{color:#f00;}#cancel-save:hover{background-color:#F00;color:#fff;}.list-container{border-color:#DFDFDF;}.menu-item-handle{border-color:#dfdfdf;}.menu li.deleting .menu-item-handle{background-color:#f66;text-shadow:#ccc;}.item-type{color:#999;}.item-controls .menu-item-delete:hover{color:#f00;}.item-edit{background:transparent url(../images/arrows.png) no-repeat 8px 10px;border-bottom-color:#eee;}.item-edit:hover{background:transparent url(../images/arrows-dark.png) no-repeat 8px 10px;}.menu-item-settings{border-color:#dfdfdf;}.link-to-original{color:#777;border-color:#dfdfdf;}#cancel-save:hover{color:#fff!important;}#update-menu-item{color:#fff!important;}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important;}.submitbox .submitcancel{color:#21759B;border-bottom-color:#21759B;}.submitbox .submitcancel:hover{background:#21759B;color:#fff;}#menu-management .nav-tab-active,.menu-item-handle,.menu-item-settings{-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;}#menu-management .nav-tab-active{background:#f9f9f9;border-bottom-color:#f9f9f9;}#upload-form label{color:#777;}.fullscreen-overlay{background:#fff;}.wp-fullscreen-focus #wp-fullscreen-title,.wp-fullscreen-focus #wp-fullscreen-container{border-color:#ccc;}#fullscreen-topbar{border-bottom-color:#DFDFDF;} \ No newline at end of file diff --git a/src/wp-admin/css/colors-fresh.dev.css b/src/wp-admin/css/colors-fresh.dev.css new file mode 100644 index 0000000..eb86042 --- /dev/null +++ b/src/wp-admin/css/colors-fresh.dev.css @@ -0,0 +1,2091 @@ +html, +.wp-dialog { + background-color: #fff; +} + +* html input, +* html .widget { + border-color: #dfdfdf; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="file"], +input[type="button"], +input[type="submit"], +input[type="reset"], +select { + border-color: #dfdfdf; + background-color: #fff; +} + +kbd, +code { + background: #eaeaea; +} + +input[readonly] { + background-color: #eee; +} + +.find-box-search { + border-color: #dfdfdf; + background-color: #f1f1f1; +} + +.find-box { + background-color: #f1f1f1; +} + +.find-box-inside { + background-color: #fff; +} + +a.page-numbers:hover { + border-color: #999; +} + +body, +#wpbody, +.form-table .pre { + color: #333; +} + +body > #upload-menu { + border-bottom-color: #fff; +} + +#postcustomstuff table, +#your-profile fieldset, +#rightnow, +div.dashboard-widget, +#dashboard-widgets p.dashboard-widget-links, +#replyrow #ed_reply_toolbar input { + border-color: #ccc; +} + +#poststuff .inside label.spam, +#poststuff .inside label.deleted { + color: red; +} + +#poststuff .inside label.waiting { + color: orange; +} + +#poststuff .inside label.approved { + color: green; +} + +#postcustomstuff table { + border-color: #dfdfdf; + background-color: #F9F9F9; +} + +#postcustomstuff thead th { + background-color: #F1F1F1; +} + +#postcustomstuff table input, +#postcustomstuff table textarea { + border-color: #dfdfdf; + background-color: #fff; +} + +.widefat { + border-color: #dfdfdf; + background-color: #f9f9f9; +} + +div.dashboard-widget-error { + background-color: #c43; +} + +div.dashboard-widget-notice { + background-color: #cfe1ef; +} + +div.dashboard-widget-submit { + border-top-color: #ccc; +} + +div.tabs-panel, +.wp-tab-panel, +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + border-color: #dfdfdf; + background-color: #fff; +} + +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + background-color: #fff; +} + +input.disabled, +textarea.disabled { + background-color: #ccc; +} +/* #upload-menu li a.upload-tab-link, */ +#plugin-information .action-button a, +#plugin-information .action-button a:hover, +#plugin-information .action-button a:visited { + color: #fff; +} + +.widget .widget-top, +.postbox h3, +.stuffbox h3, +.widefat thead tr th, +.widefat tfoot tr th, +h3.dashboard-widget-title, +h3.dashboard-widget-title span, +h3.dashboard-widget-title small, +.find-box-head, +.sidebar-name, +#nav-menu-header, +#nav-menu-footer, +.menu-item-handle, +#fullscreen-topbar { + background-color: #f1f1f1; /* Fallback */ + background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); /* IE10 */ + background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); /* Firefox */ + background-image: -o-linear-gradient(top, #f9f9f9, #ececec); /* Opera */ + background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); /* old Webkit */ + background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); /* new Webkit */ + background-image: linear-gradient(top, #f9f9f9, #ececec); /* proposed W3C Markup */ +} + +.widget .widget-top, +.postbox h3, +.stuffbox h3 { + border-bottom-color: #dfdfdf; + text-shadow: #fff 0 1px 0; + -moz-box-shadow: 0 1px 0 #fff; + -webkit-box-shadow: 0 1px 0 #fff; + box-shadow: 0 1px 0 #fff; +} + +.form-table th, +.form-wrap label { + color: #222; + text-shadow: #fff 0 1px 0; +} + +.description, +.form-wrap p { + color: #666; +} + +strong .post-com-count span { + background-color: #21759b; +} + +.sorthelper { + background-color: #ccf3fa; +} + +.ac_match, +.subsubsub a.current { + color: #000; +} + +.wrap h2 { + color: #464646; +} + +.wrap .add-new-h2 { + background: #f1f1f1; +} + +.subtitle { + color: #777; +} + +.ac_over { + background-color: #f0f0b8; +} + +.ac_results { + background-color: #fff; + border-color: #808080; +} + +.ac_results li { + color: #101010; +} + +.alternate, +.alt { + background-color: #fcfcfc; +} + +.available-theme a.screenshot { + background-color: #f1f1f1; + border-color: #ddd; +} + +.bar { + background-color: #e8e8e8; + border-right-color: #99d; +} + +#media-upload, +#media-upload .media-item .slidetoggle { + background: #fff; +} + +#media-upload .slidetoggle { + border-top-color: #dfdfdf; +} + +div.error, +.login #login_error { + background-color: #ffebe8; + border-color: #c00; +} + +div.error a { + color: #c00; +} + +.form-invalid { + background-color: #ffebe8 !important; +} + +.form-invalid input, +.form-invalid select { + border-color: #c00 !important; +} + +.submit { + border-color: #DFDFDF; +} + +.highlight { + background-color: #e4f2fd; + color: #000; +} + +.howto, +.nonessential, +#edit-slug-box, +.form-input-tip, +.subsubsub { + color: #666; +} + +.media-item { + border-bottom-color: #dfdfdf; +} + +#wpbody-content #media-items .describe { + border-top-color: #dfdfdf; +} + +.media-upload-form label.form-help, +td.help { + color: #9a9a9a; +} + +.post-com-count { + background-image: url(../images/bubble_bg.gif); + color: #fff; +} + +.post-com-count span { + background-color: #bbb; + color: #fff; +} + +.post-com-count:hover span { + background-color: #d54e21; +} + +.quicktags, .search { + background-color: #ccc; + color: #000; +} + +.side-info h5 { + border-bottom-color: #dadada; +} + +.side-info ul { + color: #666; +} + +.button, +.button-secondary, +.submit input, +input[type=button], +input[type=submit] { + border-color: #bbb; + color: #464646; +} + +.button:hover, +.button-secondary:hover, +.submit input:hover, +input[type=button]:hover, +input[type=submit]:hover { + color: #000; + border-color: #666; +} + +.button, +.submit input, +.button-secondary { + background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top; + text-shadow: rgba(255,255,255,1) 0 1px 0; +} + +.button:active, +.submit input:active, +.button-secondary:active { + background: #eee url(../images/white-grad-active.png) repeat-x scroll left top; +} + +input.button-primary, +button.button-primary, +a.button-primary { + border-color: #298cba; + font-weight: bold; + color: #fff; + background: #21759B url(../images/button-grad.png) repeat-x scroll left top; + text-shadow: rgba(0,0,0,0.3) 0 -1px 0; +} + +input.button-primary:active, +button.button-primary:active, +a.button-primary:active { + background: #21759b url(../images/button-grad-active.png) repeat-x scroll left top; + color: #eaf2fa; +} + +input.button-primary:hover, +button.button-primary:hover, +a.button-primary:hover, +a.button-primary:focus, +a.button-primary:active { + border-color: #13455b; + color: #eaf2fa; +} + +.button-disabled, +.button[disabled], +.button:disabled, +.button-secondary[disabled], +.button-secondary:disabled, +a.button.disabled { + color: #aaa !important; + border-color: #ddd !important; +} + +.button-primary-disabled, +.button-primary[disabled], +.button-primary:disabled { + color: #9FD0D5 !important; + background: #298CBA !important; +} + +a:hover, +a:active, +a:focus { + color: #d54e21; +} + +#wphead #viewsite a:hover, +#adminmenu a:hover, +#adminmenu ul.wp-submenu a:hover, +#the-comment-list .comment a:hover, +#rightnow a:hover, +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover, +.ui-tabs-nav a:hover, +.plugins .inactive a:hover, +#all-plugins-table .plugins .inactive a:hover, +#search-plugins-table .plugins .inactive a:hover { + color: #d54e21; +} + +#the-comment-list .comment-item, +#dashboard-widgets #dashboard_quick_press form p.submit { + border-color: #dfdfdf; +} + +#side-sortables .category-tabs .tabs a, +#side-sortables .add-menu-item-tabs .tabs a, +.wp-tab-bar .wp-tab-active a { + color: #333; +} + +#rightnow .rbutton { + background-color: #ebebeb; + color: #264761; +} + +.submitbox .submit { + background-color: #464646; + color: #ccc; +} + +.plugins a.delete:hover, +#all-plugins-table .plugins a.delete:hover, +#search-plugins-table .plugins a.delete:hover, +.submitbox .submitdelete { + color: #f00; + border-bottom-color: #f00; +} + +.submitbox .submitdelete:hover, +#media-items a.delete:hover { + color: #fff; + background-color: #f00; + border-bottom-color: #f00; +} + +#normal-sortables .submitbox .submitdelete:hover { + color: #000; + background-color: #f00; + border-bottom-color: #f00; +} + +.tablenav .dots { + border-color: transparent; +} + +.tablenav .next, +.tablenav .prev { + border-color: transparent; + color: #21759b; +} + +.tablenav .next:hover, +.tablenav .prev:hover { + border-color: transparent; + color: #d54e21; +} + +div.updated, +.login .message { + background-color: #ffffe0; + border-color: #e6db55; +} + +.update-message { + color: #000; +} + +a.page-numbers { + border-bottom-color: #B8D3E2; +} + +.commentlist li { + border-bottom-color: #ccc; +} + +.widefat td, +.widefat th { + border-top-color: #fff; + border-bottom-color: #dfdfdf; +} + +.widefat th { + text-shadow: rgba(255,255,255,0.8) 0 1px 0; +} + +.widefat td { + color: #555; +} +.widefat p, +.widefat ol, +.widefat ul { + color: #333; +} + +.widefat thead tr th, +.widefat tfoot tr th, +h3.dashboard-widget-title, +h3.dashboard-widget-title span, +h3.dashboard-widget-title small, +.find-box-head { + color: #333; +} + +th.sortable a:hover, th.sortable a:active, th.sortable a:focus { + color: #333; +} + +h3.dashboard-widget-title small a { + color: #d7d7d7; +} + +h3.dashboard-widget-title small a:hover { + color: #fff; +} + +a, +#adminmenu a, +#poststuff #edButtonPreview, +#poststuff #edButtonHTML, +#the-comment-list p.comment-author strong a, +#media-upload a.del-link, +#media-items a.delete, +.plugins a.delete, +.ui-tabs-nav a { + color: #21759b; +} + +#adminmenu .awaiting-mod, +#adminmenu .update-plugins, +#sidemenu a .update-plugins, +#rightnow .reallynow { + background-color: #464646; + color: #fff; + -moz-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + -khtml-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + box-shadow: rgba(255,255,255,0.5) 0 1px 0; +} +#plugin-information .action-button { + background-color: #d54e21; + color: #fff; +} + +#adminmenu li.current a .awaiting-mod, +#adminmenu li a.wp-has-current-submenu .update-plugins{ + background-color: #464646; + color: #fff; + -moz-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + -khtml-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + -webkit-box-shadow: rgba(255,255,255,0.5) 0 1px 0; + box-shadow: rgba(255,255,255,0.5) 0 1px 0; +} + +div#media-upload-header, +div#plugin-information-header { + background-color: #f9f9f9; + border-bottom-color: #dfdfdf; +} + +#currenttheme img { + border-color: #666; +} + +#dashboard_secondary div.dashboard-widget-content ul li a { + background-color: #f9f9f9; +} + +input.readonly, textarea.readonly { + background-color: #ddd; +} + +#ed_toolbar input, +#ed_reply_toolbar input { + background: #fff url("../images/fade-butt.png") repeat-x 0 -2px; +} + +#editable-post-name { + background-color: #fffbcc; +} + +#edit-slug-box strong, +.tablenav .displaying-num, +#submitted-on, +.submitted-on { + color: #777; +} + +.login #nav a, +.login #backtoblog a { + color: #21759b !important; +} + +.login #nav a:hover, +.login #backtoblog a:hover { + color: #d54e21 !important; +} + +#footer { + color: #777; + border-color: #dfdfdf; +} + +#media-items, +.imgedit-group { + border-color: #dfdfdf; +} + +.checkbox, +.side-info, +.plugins tr, +#your-profile #rich_editing { + background-color: #fcfcfc; +} + +.plugins .inactive, +.plugins .inactive th, +.plugins .inactive td, +tr.inactive + tr.plugin-update-tr .plugin-update { + background-color: #f4f4f4; +} + +.plugin-update-tr .update-message { + background-color: #fffbe4; + border-color: #dfdfdf; +} + +.plugins .active, +.plugins .active th, +.plugins .active td { + color: #000; +} + +.plugins .inactive a { + color: #557799; +} + +#the-comment-list tr.undo, +#the-comment-list div.undo { + background-color: #f4f4f4; +} + +#the-comment-list .unapproved { + background-color: #ffffe0; +} + +#the-comment-list .approve a { + color: #006505; +} + +#the-comment-list .unapprove a { + color: #d98500; +} + +table.widefat span.delete a, +table.widefat span.trash a, +table.widefat span.spam a, +#dashboard_recent_comments .delete a, +#dashboard_recent_comments .trash a, +#dashboard_recent_comments .spam a { + color: #bc0b0b; +} + +.widget, +#widget-list .widget-top, +.postbox, +#titlediv, +#poststuff .postarea, +.stuffbox { + border-color: #dfdfdf; + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.widget, +#widget-list .widget-top, +.postbox, +.menu-item-settings { + background-color: #f5f5f5; /* Fallback */ + background-image: -ms-linear-gradient(top, #f9f9f9, #f5f5f5); /* IE10 */ + background-image: -moz-linear-gradient(top, #f9f9f9, #f5f5f5); /* Firefox */ + background-image: -o-linear-gradient(top, #f9f9f9, #f5f5f5); /* Opera */ + background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#f5f5f5)); /* old Webkit */ + background-image: -webkit-linear-gradient(top, #f9f9f9, #f5f5f5); /* new Webkit */ + background-image: linear-gradient(top, #f9f9f9, #f5f5f5); /* proposed W3C Markup */ +} + +.postbox h3 { + color: #464646; +} + +.widget .widget-top { + color: #222; +} + +.sidebar-name:hover h3, +.postbox h3:hover { + color: #000; +} + +.curtime #timestamp { + background-image: url(../images/date-button.gif); +} + +#quicktags #ed_link { + color: #00f; +} + +#rightnow .youhave { + background-color: #f0f6fb; +} + +#rightnow a { + color: #448abd; +} + +.tagchecklist span a, +#bulk-titles div a { + background: url(../images/xit.gif) no-repeat; +} + +.tagchecklist span a:hover, +#bulk-titles div a:hover { + background: url(../images/xit.gif) no-repeat -10px 0; +} + +#update-nag, .update-nag { + background-color: #FFFBCC; + border-color: #E6DB55; + color: #555; +} + +.login #backtoblog a { + color: #464646; +} + +#wphead { + border-bottom:#dfdfdf 1px solid; +} + +#wphead h1 a { + color: #464646; +} + +#user_info { + color: #555; +} + +#user_info:hover, +#user_info.active { + color: #222; +} + +#user_info.active { + background-color: #f1f1f1; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #e9e9e9, #f9f9f9); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #e9e9e9, #f9f9f9); /* Firefox */ + background-image: -o-linear-gradient(bottom, #e9e9e9, #f9f9f9); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#e9e9e9), to(#f9f9f9)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #e9e9e9, #f9f9f9); /* new Webkit */ + background-image: linear-gradient(bottom, #e9e9e9, #f9f9f9); /* proposed W3C Markup */ + border-color: #aaa #aaa #dfdfdf; +} + +#user_info_arrow { + background: transparent url(../images/arrows.png) no-repeat 6px 5px; +} + +#user_info:hover #user_info_arrow, +#user_info.active #user_info_arrow { + background: transparent url(../images/arrows-dark.png) no-repeat 6px 5px; +} + +#user_info_links { + -moz-box-shadow: 0 3px 2px -2px rgba( 0, 0, 0, 0.2 ); + -webkit-box-shadow: 0 3px 2px -2px rgba( 0, 0, 0, 0.2 ); + box-shadow: 0 3px 2px -2px rgba( 0, 0, 0, 0.2 ); +} + +#user_info_links ul { + background: #f1f1f1; + border-color: #ccc #aaa #aaa; + -moz-box-shadow: inset 0 1px 0 #f9f9f9; + -webkit-box-shadow: inset 0 1px 0 #f9f9f9; + box-shadow: inset 0 1px 0 #f9f9f9; +} + +#user_info_links li:hover { + background-color: #dfdfdf; +} + +#user_info_links li:hover a, +#user_info_links li a:hover { + text-decoration: none; +} + +#user_info a:link, +#user_info a:visited, +#footer a:link, +#footer a:visited { + text-decoration: none; +} + +#footer a:hover { + color: #000; + text-decoration: underline; +} + +div#media-upload-error, +.file-error, +abbr.required, +.widget-control-remove:hover, +table.widefat .delete a:hover, +table.widefat .trash a:hover, +table.widefat .spam a:hover, +#dashboard_recent_comments .delete a:hover, +#dashboard_recent_comments .trash a:hover +#dashboard_recent_comments .spam a:hover { + color: #f00; +} + +#pass-strength-result { + background-color: #eee; + border-color: #ddd !important; +} + +#pass-strength-result.bad { + background-color: #ffb78c; + border-color: #ff853c !important; +} + +#pass-strength-result.good { + background-color: #ffec8b; + border-color: #fc0 !important; +} + +#pass-strength-result.short { + background-color: #ffa0a0; + border-color: #f04040 !important; +} + +#pass-strength-result.strong { + background-color: #c3ff88; + border-color: #8dff1c !important; +} + +/* editors */ +#quicktags { + border-color: #ccc; + background-color: #dfdfdf; + background-image: url("../images/ed-bg.gif"); +} + +#ed_toolbar input { + border-color: #C3C3C3; +} + +#ed_toolbar input:hover { + border-color: #aaa; + background: #ddd; +} + +#poststuff .wp_themeSkin .mceStatusbar { + border-color: #dfdfdf; +} + +#poststuff .wp_themeSkin .mceStatusbar * { + color: #555; +} + +#poststuff #edButtonPreview, +#poststuff #edButtonHTML { + background-color: #f1f1f1; + border-color: #dfdfdf #dfdfdf #ccc; + color: #999; +} + +#poststuff #editor-toolbar .active { + border-color: #ccc #ccc #e9e9e9; + background-color: #e9e9e9; + color: #333; +} + +/* TinyMCE */ +#post-status-info { + background-color: #EDEDED; +} + +.wp_themeSkin *, +.wp_themeSkin a:hover, +.wp_themeSkin a:link, +.wp_themeSkin a:visited, +.wp_themeSkin a:active { + color: #000; +} + +/* Containers */ +.wp_themeSkin table.mceLayout { + border-color: #ccc #ccc #dfdfdf; +} + +#editorcontainer #content, +#editorcontainer .wp_themeSkin .mceIframeContainer { + -moz-box-shadow: inset 1px 1px 2px rgba( 0, 0, 0, 0.1 ); + -webkit-box-shadow: inset 1px 1px 2px rgba( 0, 0, 0, 0.1 ); + box-shadow: inset 1px 1px 2px rgba( 0, 0, 0, 0.1 ); +} +.wp_themeSkin iframe { + background: transparent; +} + +/* Layout */ +.wp_themeSkin .mceStatusbar { + color: #000; + background-color: #f5f5f5; +} + +/* Button */ +.wp_themeSkin .mceButton { + border-color: #ccc; + background-color: #eee; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #ddd, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #ddd, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #ddd, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#ddd), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #ddd, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #ddd, #fff); /* proposed W3C Markup */ +} + +.wp_themeSkin a.mceButtonEnabled:hover { + border-color: #a0a0a0; + background: #ddd; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #ccc, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #ccc, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #ccc, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#ccc), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #ccc, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #ccc, #fff); /* proposed W3C Markup */ +} + +.wp_themeSkin a.mceButton:active, +.wp_themeSkin a.mceButtonEnabled:active, +.wp_themeSkin a.mceButtonSelected:active, +.wp_themeSkin a.mceButtonActive, +.wp_themeSkin a.mceButtonActive:active, +.wp_themeSkin a.mceButtonActive:hover { + background-color: #ddd; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #eee, #bbb); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #eee, #bbb); /* Firefox */ + background-image: -o-linear-gradient(bottom, #eee, #bbb); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#eee), to(#bbb)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #eee, #bbb); /* new Webkit */ + background-image: linear-gradient(bottom, #eee, #bbb); /* proposed W3C Markup */ + border-color: #909090; +} + +.wp_themeSkin .mceButtonDisabled { + border-color: #ccc !important; +} + +/* ListBox */ +.wp_themeSkin .mceListBox .mceText, +.wp_themeSkin .mceListBox .mceOpen { + border-color: #ccc; + background-color: #eee; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #ddd, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #ddd, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #ddd, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#ddd), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #ddd, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #ddd, #fff); /* proposed W3C Markup */ +} + +.wp_themeSkin .mceListBox .mceOpen { + border-left: 0 !important; +} + +.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen, +.wp_themeSkin .mceListBoxHover .mceOpen, +.wp_themeSkin .mceListBoxHover:active .mceOpen, +.wp_themeSkin .mceListBoxSelected .mceOpen, +.wp_themeSkin .mceListBoxSelected .mceText, +.wp_themeSkin table.mceListBoxEnabled:active .mceText { + background: #ccc; + border-color: #999; +} + +/* List Box Hover */ +.wp_themeSkin table.mceListBoxEnabled:hover .mceText, +.wp_themeSkin .mceListBoxHover .mceText, +.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen, +.wp_themeSkin .mceListBoxHover .mceOpen { + border-color: #909090; + background-color: #eee; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #ccc, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #ccc, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #ccc, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#ccc), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #ccc, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #ccc, #fff); /* proposed W3C Markup */ +} + +.wp_themeSkin select.mceListBox { + border-color: #B2B2B2; + background-color: #fff; +} + +/* SplitButton */ +.wp_themeSkin .mceSplitButton a.mceAction, +.wp_themeSkin .mceSplitButton a.mceOpen { + border-color: #ccc; +} + +.wp_themeSkin .mceSplitButton a.mceOpen:hover, +.wp_themeSkin .mceSplitButtonSelected a.mceOpen, +.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction, +.wp_themeSkin .mceSplitButton a.mceAction:hover { + border-color: #909090; +} + + +.wp_themeSkin table.mceSplitButton td { + background-color: #eee; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #ddd, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #ddd, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #ddd, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#ddd), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #ddd, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #ddd, #fff); /* proposed W3C Markup */ +} + +.wp_themeSkin table.mceSplitButton:hover td { + background-image: -ms-linear-gradient(bottom, #ccc, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #ccc, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #ccc, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#ccc), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #ccc, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #ccc, #fff); /* proposed W3C Markup */ +} + +.wp_themeSkin .mceSplitButtonActive { + background-color: #B2B2B2; +} + +/* ColorSplitButton */ +.wp_themeSkin div.mceColorSplitMenu table { + background-color: #ebebeb; + border-color: #B2B2B2; +} + +.wp_themeSkin .mceColorSplitMenu a { + border-color: #B2B2B2; +} + +.wp_themeSkin .mceColorSplitMenu a.mceMoreColors { + border-color: #fff; +} + +.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover { + border-color: #0A246A; + background-color: #B6BDD2; +} + +.wp_themeSkin a.mceMoreColors:hover { + border-color: #0A246A; +} + +/* Menu */ +.wp_themeSkin .mceMenu { + border-color: #ddd; +} + +.wp_themeSkin .mceMenu table { + background-color: #ebeaeb; +} + +.wp_themeSkin .mceMenu .mceText { + color: #000; +} + +.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover, +.wp_themeSkin .mceMenu .mceMenuItemActive { + background-color: #f5f5f5; +} +.wp_themeSkin td.mceMenuItemSeparator { + background-color: #aaa; +} +.wp_themeSkin .mceMenuItemTitle a { + background-color: #ccc; + border-bottom-color: #aaa; +} +.wp_themeSkin .mceMenuItemTitle span.mceText { + color: #000; +} +.wp_themeSkin .mceMenuItemDisabled .mceText { + color: #888; +} + +.wp_themeSkin tr.mceFirst td.mceToolbar { + background: #dfdfdf url("../images/ed-bg.gif") repeat-x scroll left top; + border-color: #ccc; +} + +.wp-admin #mceModalBlocker { + background: #000; +} + +.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft { + background: #444444; + border-left: 1px solid #999; + border-top: 1px solid #999; + -moz-border-radius: 3px 0 0 0; + -webkit-border-top-left-radius: 3px; + -khtml-border-top-left-radius: 3px; + border-top-left-radius: 3px; +} + +.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight { + background: #444444; + border-right: 1px solid #999; + border-top: 1px solid #999; + border-top-right-radius: 3px; + -khtml-border-top-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + -moz-border-radius: 0 3px 0 0; +} + +.wp-admin .clearlooks2 .mceMiddle .mceLeft { + background: #f1f1f1; + border-left: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceMiddle .mceRight { + background: #f1f1f1; + border-right: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceBottom { + background: #f1f1f1; + border-bottom: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceBottom .mceLeft { + background: #f1f1f1; + border-bottom: 1px solid #999; + border-left: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceBottom .mceCenter { + background: #f1f1f1; + border-bottom: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceBottom .mceRight { + background: #f1f1f1; + border-bottom: 1px solid #999; + border-right: 1px solid #999; +} + +.wp-admin .clearlooks2 .mceFocus .mceTop span { + color: #e5e5e5; +} +/* end TinyMCE */ + +#titlediv #title { + border-color: #ccc; +} + +#editorcontainer { + border-color: #ccc #ccc #dfdfdf; +} + +#post-status-info { + border-color: #dfdfdf #ccc #ccc; +} + +.editwidget .widget-inside { + border-color: #dfdfdf; +} + +#titlediv #title { + background-color: #fff; +} + +#tTips p#tTips_inside { + background-color: #ddd; + color: #333; +} + +#timestampdiv input, +#namediv input, +#poststuff .inside .the-tagcloud { + border-color: #ddd; +} + +/* menu */ +#adminmenuback, +#adminmenuwrap { + background-color: #ececec; + border-color: #ccc; +} + +#adminmenushadow, +#adminmenuback { + background-image: url(../images/menu-shadow.png); + background-position: top right; + background-repeat: repeat-y; +} + +#adminmenu li.wp-menu-separator { + background: #dfdfdf; + border-color: #cfcfcf; +} + +#adminmenu div.separator { + border-color: #e1e1e1; +} + +#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, +#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { + background: transparent url(../images/arrows-dark.png) no-repeat -1px 6px; +} + +#adminmenu .wp-has-submenu:hover .wp-menu-toggle, +#adminmenu .wp-menu-open .wp-menu-toggle { + background: transparent url(../images/arrows.png) no-repeat -2px 6px; +} + +#adminmenu a.menu-top, +.folded #adminmenu li.menu-top, +#adminmenu .wp-submenu .wp-submenu-head { + border-top-color: #f9f9f9; + border-bottom-color: #dfdfdf; +} + +#adminmenu li.wp-menu-open { + border-color: #dfdfdf; +} + +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.current a.menu-top, +.folded #adminmenu li.wp-has-current-submenu, +.folded #adminmenu li.current.menu-top, +#adminmenu .wp-menu-arrow, +#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head { + background-color: #777; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #6d6d6d, #808080); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #6d6d6d, #808080); /* Firefox */ + background-image: -o-linear-gradient(bottom, #6d6d6d, #808080); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#6d6d6d), to(#808080)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #6d6d6d, #808080); /* new Webkit */ + background-image: linear-gradient(bottom, #6d6d6d, #808080); /* proposed W3C Markup */ +} + +#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, +#adminmenu li.current a.menu-top, +#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head { + text-shadow: 0 -1px 0 #333; + color: #fff; + border-top-color: #808080; + border-bottom-color: #6d6d6d; +} + +.folded #adminmenu li.wp-has-current-submenu, +.folded #adminmenu li.current.menu-top { + border-top-color: #808080; + border-bottom-color: #6d6d6d; +} + +#adminmenu .wp-submenu a:hover { + background-color: #EAF2FA !important; + color: #333 !important; +} + +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover { + color: #333; +} + +#adminmenu .wp-submenu ul { + background-color: #fff; +} + +.folded #adminmenu .wp-submenu-wrap, +.folded #adminmenu .wp-submenu ul { + border-color: #dfdfdf; +} + +.folded #adminmenu .wp-submenu-wrap { + -moz-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + -webkit-box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); + box-shadow: 2px 2px 5px rgba( 0, 0, 0, 0.4 ); +} + +#adminmenu .wp-submenu .wp-submenu-head { + border-right-color: #dfdfdf; + background-color: #ececec; +} + +#adminmenu div.wp-submenu { + background-color: transparent; +} + +/* collapse menu button */ +#collapse-menu { + color: #aaa; +} + +#collapse-menu:hover { + color: #999; +} + +#collapse-button { + border-color: #ccc; + background-color: #f4f4f4; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #dfdfdf, #fff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #dfdfdf, #fff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #dfdfdf, #fff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#dfdfdf), to(#fff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #dfdfdf, #fff); /* new Webkit */ + background-image: linear-gradient(bottom, #dfdfdf, #fff); /* proposed W3C Markup */ +} +#collapse-menu:hover #collapse-button { + border-color: #aaa; +} +#collapse-button div { + background: transparent url(../images/arrows.png) no-repeat 0 -72px; +} +.folded #collapse-button div { + background-position: 0 -108px; +} + +/* menu and screen icons */ +#adminmenu .menu-icon-dashboard div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -60px -33px; +} + +#adminmenu .menu-icon-dashboard:hover div.wp-menu-image, +#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-dashboard.current div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -60px -1px; +} + +#adminmenu .menu-icon-post div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -271px -33px; +} + +#adminmenu .menu-icon-post:hover div.wp-menu-image, +#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -271px -1px; +} + +#adminmenu .menu-icon-media div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -120px -33px; +} + +#adminmenu .menu-icon-media:hover div.wp-menu-image, +#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -120px -1px; +} + +#adminmenu .menu-icon-links div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -90px -33px; +} + +#adminmenu .menu-icon-links:hover div.wp-menu-image, +#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -90px -1px; +} + +#adminmenu .menu-icon-page div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -150px -33px; +} + +#adminmenu .menu-icon-page:hover div.wp-menu-image, +#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -150px -1px; +} + +#adminmenu .menu-icon-comments div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -30px -33px; +} + +#adminmenu .menu-icon-comments:hover div.wp-menu-image, +#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-comments.current div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -30px -1px; +} + +#adminmenu .menu-icon-appearance div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll 0 -33px; +} + +#adminmenu .menu-icon-appearance:hover div.wp-menu-image, +#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll 0 -1px; +} + +#adminmenu .menu-icon-plugins div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -180px -33px; +} + +#adminmenu .menu-icon-plugins:hover div.wp-menu-image, +#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -180px -1px; +} + +#adminmenu .menu-icon-users div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -300px -33px; +} + +#adminmenu .menu-icon-users:hover div.wp-menu-image, +#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-users.current div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -300px -1px; +} + +#adminmenu .menu-icon-tools div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -210px -33px; +} + +#adminmenu .menu-icon-tools:hover div.wp-menu-image, +#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image, +#adminmenu .menu-icon-tools.current div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -210px -1px; +} + +#icon-options-general, +#adminmenu .menu-icon-settings div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -240px -33px; +} + +#adminmenu .menu-icon-settings:hover div.wp-menu-image, +#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -240px -1px; +} + +#adminmenu .menu-icon-site div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -360px -33px; +} + +#adminmenu .menu-icon-site:hover div.wp-menu-image, +#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image { + background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -360px -1px; +} +/* end menu and screen icons */ + +/* Screen Icons */ +#icon-edit, +#icon-post { + background: transparent url(../images/icons32.png?ver=20100531) no-repeat -552px -5px; +} + +#icon-index { + background: transparent url(../images/icons32.png?ver=20100531) no-repeat -137px -5px; +} + +#icon-upload { + background: transparent url(../images/icons32.png?ver=20100531) no-repeat -251px -5px; +} + +#icon-link-manager, +#icon-link, +#icon-link-category { + background: transparent url(../images/icons32.png?ver=20100531) no-repeat -190px -5px; +} + +#icon-edit-pages, +#icon-page { + background: transparent url(../images/icons32.png?ver=20100531) no-repeat -312px -5px; +} + +#icon-edit-comments { + background: transparent url(../images/icons32.png?ver=20100531) no-repeat -72px -5px; +} + +#icon-themes { + background: transparent url(../images/icons32.png?ver=20100531) no-repeat -11px -5px; +} + +#icon-plugins { + background: transparent url(../images/icons32.png?ver=20100531) no-repeat -370px -5px; +} + +#icon-users, +#icon-profile, +#icon-user-edit { + background: transparent url(../images/icons32.png?ver=20100531) no-repeat -600px -5px; +} + +#icon-tools, +#icon-admin { + background: transparent url(../images/icons32.png?ver=20100531) no-repeat -432px -5px; +} + +#icon-options-general { + background: transparent url(../images/icons32.png?ver=20100531) no-repeat -492px -5px; +} + +#icon-ms-admin { + background: transparent url(../images/icons32.png?ver=20100531) no-repeat -659px -5px; +} +/* end screen icons */ + + +/* Diff */ +table.diff .diff-deletedline { + background-color: #fdd; +} + +table.diff .diff-deletedline del { + background-color: #f99; +} + +table.diff .diff-addedline { + background-color: #dfd; +} + +table.diff .diff-addedline ins { + background-color: #9f9; +} + +#att-info { + background-color: #E4F2FD; +} + +/* edit image */ +#sidemenu a { + background-color: #f9f9f9; + border-color: #f9f9f9; + border-bottom-color: #dfdfdf; +} + +#sidemenu a.current { + background-color: #fff; + border-color: #dfdfdf #dfdfdf #fff; + color: #D54E21; +} + +#screen-options-wrap, +#contextual-help-wrap { + background-color: #f1f1f1; + border-color: #dfdfdf; +} + +#screen-options-link-wrap, +#contextual-help-link-wrap { + background-color: #e3e3e3; /* Fallback */ + border-right: 1px solid transparent; + border-left: 1px solid transparent; + border-bottom: 1px solid transparent; + background-image: -ms-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* Firefox */ + background-image: -o-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#dfdfdf), to(#f1f1f1)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #dfdfdf, #f1f1f1); /* new Webkit */ + background-image: linear-gradient(bottom, #dfdfdf, #f1f1f1); /* proposed W3C Markup */ +} + +#screen-meta-links a.show-settings { + color: #777; +} + +#screen-meta-links a.show-settings:hover { + color: #000; +} + +#replysubmit { + background-color: #f1f1f1; + border-top-color: #ddd; +} + +#replyerror { + border-color: #ddd; + background-color: #f9f9f9; +} + +#edithead, +#replyhead { + background-color: #f1f1f1; +} + +#ed_reply_toolbar { + background-color: #e9e9e9; +} + +/* table vim shortcuts */ +.vim-current, +.vim-current th, +.vim-current td { + background-color: #E4F2FD !important; +} + +/* Install Plugins */ +.star-average, +.star.star-rating { + background-color: #fc0; +} + +div.star.select:hover { + background-color: #d00; +} + +div.star img { + border-left: 1px solid #fff; + border-right: 1px solid #fff; +} + +.widefat div.star img { + border-left: 1px solid #f9f9f9; + border-right: 1px solid #f9f9f9; +} + +#plugin-information .fyi ul { + background-color: #eaf3fa; +} + +#plugin-information .fyi h2.mainheader { + background-color: #cee1ef; +} + +#plugin-information pre, +#plugin-information code { + background-color: #ededff; +} + +#plugin-information pre { + border: 1px solid #ccc; +} + +/* inline editor */ +.inline-edit-row fieldset input[type="text"], +.inline-edit-row fieldset textarea, +#bulk-titles, +#replyrow input { + border-color: #ddd; +} + +.inline-editor div.title { + background-color: #EAF3FA; +} + +.inline-editor ul.cat-checklist { + background-color: #fff; + border-color: #ddd; +} + +.inline-editor .categories .catshow, +.inline-editor .categories .cathide { + color: #21759b; +} + +.inline-editor .quick-edit-save { + background-color: #f1f1f1; +} + +#replyrow #ed_reply_toolbar input:hover { + border-color: #aaa; + background: #ddd; +} + +fieldset.inline-edit-col-right .inline-edit-col { + border-color: #dfdfdf; +} + +.attention { + color: #D54E21; +} + +.meta-box-sortables .postbox:hover .handlediv { + background: transparent url(../images/arrows.png) no-repeat 6px 7px; +} + +.tablenav .tablenav-pages { + color: #555; +} + +.tablenav .tablenav-pages a { + border-color: #e3e3e3; + background: #eee url('../images/menu-bits.gif?ver=20100610') repeat-x scroll left -379px; +} + +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #d54e21; +} + +.tablenav .tablenav-pages a.disabled, +.tablenav .tablenav-pages a.disabled:hover, +.tablenav .tablenav-pages a.disabled:focus { + color: #aaa; +} + +.tablenav .tablenav-pages .current { + background: #dfdfdf; + border-color: #d3d3d3; +} + +#availablethemes, +#availablethemes td { + border-color: #ddd; +} + +#current-theme img { + border-color: #999; +} + +#TB_window #TB_title a.tb-theme-preview-link, +#TB_window #TB_title a.tb-theme-preview-link:visited { + color: #999; +} + +#TB_window #TB_title a.tb-theme-preview-link:hover, +#TB_window #TB_title a.tb-theme-preview-link:focus { + color: #ccc; +} + +.misc-pub-section { + border-top-color: #fff; + border-bottom-color: #dfdfdf; +} + +#minor-publishing { + border-bottom-color: #dfdfdf; +} + +#post-body .misc-pub-section { + border-right-color: #eee; +} + +.post-com-count span { + background-color: #bbb; +} + +.form-table .color-palette td { + border-color: #fff; +} + +.sortable-placeholder { + border-color: #bbb; + background-color: #f5f5f5; +} + +#post-body ul.category-tabs li.tabs a, +#post-body ul.add-menu-item-tabs li.tabs a, +body.press-this ul.category-tabs li.tabs a { + color: #333; +} + +#wp_editimgbtn, +#wp_delimgbtn, +#wp_editgallery, +#wp_delgallery { + border-color: #999; + background-color: #eee; +} + +#wp_editimgbtn:hover, +#wp_delimgbtn:hover, +#wp_editgallery:hover, +#wp_delgallery:hover { + border-color: #555; + background-color: #ccc; +} + +#favorite-first { + border-color: #c0c0c0; + background: #f1f1f1; /* fallback color */ + background:-moz-linear-gradient(bottom, #e7e7e7, #fff); + background:-webkit-gradient(linear, left bottom, left top, from(#e7e7e7), to(#fff)); +} + +#favorite-inside { + border-color: #c0c0c0; + background-color: #fff; +} + +#favorite-toggle { + background: transparent url(../images/arrows.png) no-repeat 4px 2px; + border-color: #dfdfdf; + -moz-box-shadow: inset 1px 0 0 #fff; + -webkit-box-shadow: inset 1px 0 0 #fff; + box-shadow: inset 1px 0 0 #fff; +} + +#favorite-actions a { + color: #464646; +} + +#favorite-actions a:hover { + color: #000; +} + +#favorite-inside a:hover { + text-decoration: underline; +} + +#screen-meta a.show-settings, +.toggle-arrow { + background: transparent url(../images/arrows.png) no-repeat right 3px; +} + +#screen-meta .screen-meta-active a.show-settings { + background: transparent url(../images/arrows.png) no-repeat right -33px; +} + +.view-switch #view-switch-list { + background: transparent url(../images/list.png) no-repeat 0 0; +} + +.view-switch .current #view-switch-list { + background: transparent url(../images/list.png) no-repeat -40px 0; +} + +.view-switch #view-switch-excerpt { + background: transparent url(../images/list.png) no-repeat -20px 0; +} + +.view-switch .current #view-switch-excerpt { + background: transparent url(../images/list.png) no-repeat -60px 0; +} + +#header-logo { + background: transparent url(../images/wp-logo.png?ver=20110504) no-repeat scroll center center; +} + +.popular-tags, +.feature-filter { + background-color: #fff; + border-color: #DFDFDF; +} + +#theme-information .action-button { + border-top-color: #DFDFDF; +} + +.theme-listing br.line { + border-bottom-color: #ccc; +} + +div.widgets-sortables, +#widgets-left .inactive { + background-color: #fcfcfc; + border-color: #dfdfdf; +} + +#available-widgets .widget-holder { + background-color: #fcfcfc; + border-color: #dfdfdf; +} + +#available-widgets .widget-description { + color: #555; +} + +.sidebar-name { + color: #464646; + text-shadow: #fff 0 1px 0; + border-color: #dfdfdf; + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; +} + +.sidebar-name:hover, +#removing-widget { + color: #d54e21; +} + +#removing-widget span { + color: black; +} + +.sidebar-name-arrow { + background: transparent url(../images/arrows.png) no-repeat 5px 9px; +} + +.sidebar-name:hover .sidebar-name-arrow { + background: transparent url(../images/arrows-dark.png) no-repeat 5px 9px; +} + +.in-widget-title { + color: #606060; +} + +.deleting .widget-title * { + color: #aaa; +} + +.imgedit-menu div { + border-color: #d5d5d5; + background-color: #f1f1f1; +} + +.imgedit-menu div:hover { + border-color: #c1c1c1; + background-color: #eaeaea; +} + +.imgedit-menu div.disabled { + border-color: #ccc; + background-color: #ddd; + filter: alpha(opacity=50); + opacity: 0.5; +} + +#dashboard_recent_comments div.undo { + border-top-color: #dfdfdf; +} + +.comment-ays, +.comment-ays th { + border-color: #ddd; +} + +.comment-ays th { + background-color: #f1f1f1; +} + +/* added from nav-menu.css */ +#menu-management .menu-edit { + border-color: #dfdfdf; +} + +#post-body { + background: #fff; + border-top-color: #fff; + border-bottom-color: #dfdfdf; +} + +#nav-menu-header { + border-bottom-color: #dfdfdf; +} + +#nav-menu-footer { + border-top-color: #fff; +} + +#menu-management .nav-tabs-arrow a { + color: #C1C1C1; +} + +#menu-management .nav-tabs-arrow a:hover { + color: #D54E21; +} + +#menu-management .nav-tabs-arrow a:active { + color: #464646; +} + +#menu-management .nav-tab-active { + border-color: #dfdfdf; +} + +#menu-management .nav-tab { + background: #fbfbfb; + border-color: #dfdfdf; +} + +.js .input-with-default-title { + color: #aaa; +} + +#cancel-save { + color: #ff0000; +} + +#cancel-save:hover { + background-color: #FF0000; + color: #fff; +} + +.list-container { + border-color: #DFDFDF; +} + +.menu-item-handle { + border-color: #dfdfdf; +} + +.menu li.deleting .menu-item-handle { + background-color: #f66; + text-shadow: #ccc; +} + +.item-type { /* Menu item controls */ + color: #999999; +} + +.item-controls .menu-item-delete:hover { + color: #ff0000; +} + +.item-edit { + background: transparent url(../images/arrows.png) no-repeat 8px 10px; + border-bottom-color: #eee; +} + +.item-edit:hover { + background: transparent url(../images/arrows-dark.png) no-repeat 8px 10px; +} + +.menu-item-settings { /* Menu editing */ + border-color: #dfdfdf; +} + +.link-to-original { + color: #777; + border-color: #dfdfdf; +} + +#cancel-save:hover { + color: #fff !important; +} + +#update-menu-item { + color: #fff !important; +} + +#update-menu-item:hover, +#update-menu-item:active, +#update-menu-item:focus { + color: #eaf2fa !important; + border-color: #13455b !important; +} + +.submitbox .submitcancel { + color: #21759B; + border-bottom-color: #21759B; +} + +.submitbox .submitcancel:hover { + background: #21759B; + color: #fff; +} +/* end added from nav-menu.css */ + +#menu-management .nav-tab-active, +.menu-item-handle, +.menu-item-settings { + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #fff; + box-shadow: inset 0 1px 0 #fff; +} + +#menu-management .nav-tab-active { + background: #f9f9f9; + border-bottom-color: #f9f9f9; +} + +/* custom header & background pages */ +#upload-form label { + color: #777; +} +/* custom header & background pages */ + +/* full screen */ +.fullscreen-overlay { + background: #fff; +} + +.wp-fullscreen-focus #wp-fullscreen-title, +.wp-fullscreen-focus #wp-fullscreen-container { + border-color: #ccc; +} + +#fullscreen-topbar { + border-bottom-color: #DFDFDF; +} diff --git a/src/wp-admin/css/dashboard-rtl.css b/src/wp-admin/css/dashboard-rtl.css new file mode 100644 index 0000000..14d25ae --- /dev/null +++ b/src/wp-admin/css/dashboard-rtl.css @@ -0,0 +1 @@ +#dashboard-widgets-wrap .has-sidebar{margin-right:0;margin-left:-51%;}#dashboard-widgets-wrap .has-sidebar .has-sidebar-content{margin-right:0;margin-left:51%;}.view-all{right:auto;left:0;}#dashboard_right_now p.sub,#dashboard-widgets h4,#dashboard_quick_press h4,a.rsswidget,#dashboard_plugins h4,#dashboard_plugins h5,#dashboard_recent_comments .comment-meta .approve{font-family:Tahoma,Arial;}#dashboard_right_now p.sub{left:auto;right:15px;}#dashboard_right_now td.b{padding-right:0;padding-left:6px;text-align:left;font-family:Tahoma,Arial;}#dashboard_right_now .t{padding-right:0;padding-left:12px;}#dashboard_right_now .table_content{float:right;}#dashboard_right_now .table_discussion{float:left;}#dashboard_right_now .versions a{font-family:Tahoma,Arial;}#dashboard_right_now a.button{float:left;clear:left;}#dashboard_plugins .inside span{padding-left:0;padding-right:5px;}#dashboard-widgets h3 .postbox-title-action{right:auto;left:30px;}#the-comment-list .pingback{padding-left:0!important;padding-right:9px!important;}#the-comment-list .comment-item{padding:1em 70px 1em 10px;}#the-comment-list .comment-item .avatar{float:right;margin-left:0;margin-right:-60px;}.rss-widget cite{text-align:left;}.rss-widget span.rss-date{font-family:Tahoma,Arial;margin-left:0;margin-right:3px;}#dashboard_quick_press h4{float:right;text-align:left;}#dashboard_quick_press h4 label{margin-right:0;margin-left:10px;}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 5em 1em 0;}#dashboard_quick_press #media-buttons{margin:0 5em .5em 0;padding:0 10px 0 0;}#dashboard-widgets #dashboard_quick_press form p.submit{margin-left:0;margin-right:4.6em;}#dashboard-widgets #dashboard_quick_press form p.submit input{float:right;}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 10px 0 1em;}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:left;}#dashboard-widgets #dashboard_quick_press form p.submit img.waiting{margin:4px 0 0 6px;}#dashboard_recent_drafts h4 abbr{font-family:Tahoma,Arial;margin-left:0;margin-right:3px;} \ No newline at end of file diff --git a/src/wp-admin/css/dashboard-rtl.dev.css b/src/wp-admin/css/dashboard-rtl.dev.css new file mode 100644 index 0000000..8617bfa --- /dev/null +++ b/src/wp-admin/css/dashboard-rtl.dev.css @@ -0,0 +1,110 @@ +#dashboard-widgets-wrap .has-sidebar { + margin-right: 0; + margin-left: -51%; +} +#dashboard-widgets-wrap .has-sidebar .has-sidebar-content { + margin-right: 0; + margin-left: 51%; +} +.view-all { + right: auto; + left: 0; +} +#dashboard_right_now p.sub, #dashboard-widgets h4, #dashboard_quick_press h4, a.rsswidget, #dashboard_plugins h4, #dashboard_plugins h5, #dashboard_recent_comments .comment-meta .approve { + font-family: Tahoma, Arial; +} +#dashboard_right_now p.sub { + left:auto; + right:15px; +} +#dashboard_right_now td.b { + padding-right: 0; + padding-left: 6px; + text-align: left; + font-family: Tahoma, Arial; +} +#dashboard_right_now .t { + padding-right: 0; + padding-left: 12px; +} +#dashboard_right_now .table_content { + float:right; +} +#dashboard_right_now .table_discussion { + float:left; +} +#dashboard_right_now .versions a { + font-family: Tahoma, Arial; +} +#dashboard_right_now a.button { + float: left; + clear: left; +} +#dashboard_plugins .inside span { + padding-left: 0; + padding-right: 5px; +} +#dashboard-widgets h3 .postbox-title-action { + right: auto; + left: 30px; +} +#the-comment-list .pingback { + padding-left: 0 !important; + padding-right: 9px !important; +} +/* Recent Comments */ +#the-comment-list .comment-item { + padding: 1em 70px 1em 10px; +} +#the-comment-list .comment-item .avatar { + float: right; + margin-left: 0; + margin-right: -60px; +} +/* Feeds */ +.rss-widget cite { + text-align: left; +} +.rss-widget span.rss-date { + font-family: Tahoma, Arial; + margin-left: 0; + margin-right: 3px; +} +/* QuickPress */ +#dashboard_quick_press h4 { + float: right; + text-align: left; +} +#dashboard_quick_press h4 label { + margin-right: 0; + margin-left: 10px; +} +#dashboard_quick_press .input-text-wrap, #dashboard_quick_press .textarea-wrap { + margin: 0 5em 1em 0; +} +#dashboard_quick_press #media-buttons { + margin: 0 5em .5em 0; + padding: 0 10px 0 0; +} +#dashboard-widgets #dashboard_quick_press form p.submit { + margin-left: 0; + margin-right: 4.6em; +} +#dashboard-widgets #dashboard_quick_press form p.submit input { + float: right; +} +#dashboard-widgets #dashboard_quick_press form p.submit #save-post { + margin: 0 10px 0 1em; +} +#dashboard-widgets #dashboard_quick_press form p.submit #publish { + float: left; +} +#dashboard-widgets #dashboard_quick_press form p.submit img.waiting { + margin: 4px 0 0 6px; +} +/* Recent Drafts */ +#dashboard_recent_drafts h4 abbr { + font-family: Tahoma, Arial; + margin-left:0; + margin-right: 3px; +} \ No newline at end of file diff --git a/src/wp-admin/css/dashboard.css b/src/wp-admin/css/dashboard.css new file mode 100644 index 0000000..e30d686 --- /dev/null +++ b/src/wp-admin/css/dashboard.css @@ -0,0 +1 @@ +.postbox p,.postbox ul,.postbox ol,.postbox blockquote,#wp-version-message{font-size:12px;}.edit-box{display:none;}h3:hover .edit-box{display:inline;}form .input-text-wrap{background:#fff;border-style:solid;border-width:1px;padding:2px 3px;border-color:#ccc;}#dashboard-widgets form .input-text-wrap input{border:0 none;outline:none;margin:0;padding:0;width:99%;color:#333;}form .textarea-wrap{background:#fff;border-style:solid;border-width:1px;padding:2px;border-color:#ccc;}#dashboard-widgets form .textarea-wrap textarea{border:0 none;padding:0;outline:none;width:99%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none;}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit input{margin:0;}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0;}div.postbox div.inside{margin:10px 0;position:relative;}#dashboard-widgets a{text-decoration:none;}#dashboard-widgets h3 a{text-decoration:underline;}#dashboard-widgets h3 .postbox-title-action{position:absolute;right:30px;padding:0;top:8px;}#dashboard-widgets h4{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:normal;font-size:13px;margin:0 0 .2em;padding:0;}#dashboard_right_now p.sub,#dashboard_right_now .table,#dashboard_right_now .versions{margin:-12px;}#dashboard_right_now .inside{font-size:12px;padding-top:20px;}#dashboard_right_now p.sub{padding:5px 0 15px;color:#8f8f8f;font-size:14px;position:absolute;top:-17px;left:15px;}#dashboard_right_now .table{margin:0;padding:0;position:relative;}#dashboard_right_now .table_content{float:left;border-top:#ececec 1px solid;width:45%;}#dashboard_right_now .table_discussion{float:right;border-top:#ececec 1px solid;width:45%;}#dashboard_right_now table td{padding:3px 0;white-space:nowrap;}#dashboard_right_now table tr.first td{border-top:none;}#dashboard_right_now td.b{padding-right:6px;text-align:right;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:14px;width:1%;}#dashboard_right_now td.b a{font-size:18px;}#dashboard_right_now td.b a:hover{color:#d54e21;}#dashboard_right_now .t{font-size:12px;padding-right:12px;padding-top:6px;color:#777;}#dashboard_right_now .t a{white-space:nowrap;}#dashboard_right_now .spam{color:red;}#dashboard_right_now .waiting{color:#e66f00;}#dashboard_right_now .approved{color:green;}#dashboard_right_now .versions{padding:6px 10px 12px;clear:both;}#dashboard_right_now .versions .b{font-weight:bold;}#dashboard_right_now a.button{float:right;clear:right;position:relative;top:-5px;}#dashboard_recent_comments h3{margin-bottom:0;}#dashboard_recent_comments .inside{margin-top:0;}#dashboard_recent_comments .comment-meta .approve{font-style:italic;font-family:sans-serif;font-size:10px;}#dashboard_recent_comments .subsubsub{float:none;}#the-comment-list{position:relative;}#the-comment-list .comment-item{padding:1em 10px;border-top:1px solid;}#the-comment-list .pingback{padding-left:9px!important;}#the-comment-list .comment-item,#the-comment-list #replyrow{margin:0 -10px;}#the-comment-list .comment-item:first-child{border-top:none;}#the-comment-list .comment-item .avatar{float:left;margin:0 10px 5px 0;}#the-comment-list .comment-item h4{line-height:1.7em;margin-top:-0.4em;color:#777;}#the-comment-list .comment-item h4 cite{font-style:normal;font-weight:normal;}#the-comment-list .comment-item blockquote,#the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline;}#dashboard_recent_comments #the-comment-list .trackback blockquote,#dashboard_recent_comments #the-comment-list .pingback blockquote{display:block;}#the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:12px;}#dashboard_quick_press h4{font-family:sans-serif;float:left;width:5.5em;clear:both;font-weight:normal;text-align:right;padding-top:5px;font-size:12px;}#dashboard_quick_press h4 label{margin-right:10px;}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 0 1em 5em;}#dashboard_quick_press #media-buttons{margin:0 0 .5em 5em;padding:0 0 0 10px;font-size:12px;line-height:17px;color:#777;}#dashboard_quick_press #media-buttons a{vertical-align:bottom;}#dashboard-widgets #dashboard_quick_press form p.submit{margin-left:4.6em;}#dashboard-widgets #dashboard_quick_press form p.submit input{float:left;}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 1em 0 10px;}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:right;}#dashboard-widgets #dashboard_quick_press form p.submit img.waiting{vertical-align:middle;visibility:hidden;margin:4px 6px 0 0;}#dashboard_recent_drafts ul{margin:0;padding:0;list-style:none;}#dashboard_recent_drafts ul li{margin-bottom:1em;}#dashboard_recent_drafts h4{line-height:1.7em;}#dashboard_recent_drafts h4 abbr{font-weight:normal;font-family:sans-serif;font-size:12px;color:#999;margin-left:3px;}#dashboard_recent_drafts p{margin:0;padding:0;}.rss-widget ul{margin:0;padding:0;list-style:none;}a.rsswidget{font-size:13px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;line-height:1.7em;}.rss-widget ul li{line-height:1.5em;margin-bottom:12px;}.rss-widget span.rss-date{color:#999;font-size:12px;margin-left:3px;}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0;}.rss-widget cite:before{content:'\2014';}#dashboard_plugins h4{line-height:1.7em;}#dashboard_plugins h5{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:normal;font-size:13px;margin:0;display:inline;line-height:1.4em;}#dashboard_plugins h5 a{line-height:1.4em;}#dashboard_plugins .inside span{font-size:12px;padding-left:5px;}#dashboard_plugins p{margin:.3em 0 1.4em;line-height:1.4em;}.dashboard-comment-wrap{overflow:hidden;word-wrap:break-word;}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:bold;}#dashboard_browser_nag a{text-decoration:underline;}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:125px;}#dashboard_browser_nag .browser-icon{margin-top:-35px;}#dashboard_browser_nag.postbox.browser-insecure{background-color:#ac1b1b;border-color:#ac1b1b;}#dashboard_browser_nag.postbox{background-color:#e29808;background-image:none;border-color:#edc048;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;color:#fff;}#dashboard_browser_nag.postbox.browser-insecure h3{border-bottom-color:#cd5a5a;color:#fff;}#dashboard_browser_nag.postbox h3{border-bottom-color:#f6e2ac;text-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;background:transparent none;color:#fff;}#dashboard_browser_nag a{color:#fff;}#dashboard_browser_nag.browser-insecure a.browse-happy-link,#dashboard_browser_nag.browser-insecure a.update-browser-link{text-shadow:#871b15 0 1px 0;}#dashboard_browser_nag a.browse-happy-link,#dashboard_browser_nag a.update-browser-link{text-shadow:#d29a04 0 1px 0;} \ No newline at end of file diff --git a/src/wp-admin/css/dashboard.dev.css b/src/wp-admin/css/dashboard.dev.css new file mode 100644 index 0000000..8371941 --- /dev/null +++ b/src/wp-admin/css/dashboard.dev.css @@ -0,0 +1,486 @@ +.postbox p, +.postbox ul, +.postbox ol, +.postbox blockquote, +#wp-version-message { + font-size: 12px; +} + +.edit-box { + display: none; +} + +h3:hover .edit-box { + display: inline; +} + +form .input-text-wrap { + background: #fff; + border-style: solid; + border-width: 1px; + padding: 2px 3px; + border-color: #ccc; +} + +#dashboard-widgets form .input-text-wrap input { + border: 0 none; + outline: none; + margin: 0; + padding: 0; + width: 99%; + color: #333; +} + +form .textarea-wrap { + background: #fff; + border-style: solid; + border-width: 1px; + padding: 2px; + border-color: #ccc; +} + +#dashboard-widgets form .textarea-wrap textarea { + border: 0 none; + padding: 0; + outline: none; + width: 99%; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +#dashboard-widgets .postbox form .submit { + float: none; + margin: .5em 0 0; + padding: 0; + border: none; +} + +#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit input { + margin: 0; +} + +#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish { + min-width: 0; +} + +div.postbox div.inside { + margin: 10px 0; + position: relative; +} + +#dashboard-widgets a { + text-decoration: none; +} + +#dashboard-widgets h3 a { + text-decoration: underline; +} + +#dashboard-widgets h3 .postbox-title-action { + position: absolute; + right: 30px; + padding: 0; + top: 8px; +} + +#dashboard-widgets h4 { + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-weight: normal; + font-size: 13px; + margin: 0 0 .2em; + padding: 0; +} + +/* Right Now */ + +#dashboard_right_now p.sub, +#dashboard_right_now .table, #dashboard_right_now .versions { + margin: -12px; +} + +#dashboard_right_now .inside { + font-size: 12px; + padding-top: 20px; +} + +#dashboard_right_now p.sub { + padding: 5px 0 15px; + color: #8f8f8f; + font-size: 14px; + position: absolute; + top: -17px; + left: 15px; +} + +#dashboard_right_now .table { + margin: 0; + padding: 0; + position: relative; +} + +#dashboard_right_now .table_content { + float: left; + border-top: #ececec 1px solid; + width: 45%; +} + +#dashboard_right_now .table_discussion { + float: right; + border-top: #ececec 1px solid; + width: 45%; +} + +#dashboard_right_now table td { + padding: 3px 0; + white-space: nowrap; +} + +#dashboard_right_now table tr.first td { + border-top: none; +} + +#dashboard_right_now td.b { + padding-right: 6px; + text-align: right; + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-size: 14px; + width: 1%; +} + +#dashboard_right_now td.b a { + font-size: 18px; +} + +#dashboard_right_now td.b a:hover { + color: #d54e21; +} + +#dashboard_right_now .t { + font-size: 12px; + padding-right: 12px; + padding-top: 6px; + color: #777; +} + +#dashboard_right_now .t a { + white-space: nowrap; +} + +#dashboard_right_now .spam { + color: red; +} + +#dashboard_right_now .waiting { + color: #e66f00; +} + +#dashboard_right_now .approved { + color: green; +} + +#dashboard_right_now .versions { + padding: 6px 10px 12px; + clear: both; +} + +#dashboard_right_now .versions .b { + font-weight: bold; +} + +#dashboard_right_now a.button { + float: right; + clear: right; + position: relative; + top: -5px; +} + +/* Recent Comments */ + +#dashboard_recent_comments h3 { + margin-bottom: 0; +} + +#dashboard_recent_comments .inside { + margin-top: 0; +} + +#dashboard_recent_comments .comment-meta .approve { + font-style: italic; + font-family: sans-serif; + font-size: 10px; +} + +#dashboard_recent_comments .subsubsub { + float: none; +} + +#the-comment-list { + position: relative; +} + +#the-comment-list .comment-item { + padding: 1em 10px; + border-top: 1px solid; +} + +#the-comment-list .pingback { + padding-left: 9px !important; +} + +#the-comment-list .comment-item, +#the-comment-list #replyrow { + margin: 0 -10px; +} + +#the-comment-list .comment-item:first-child { + border-top: none; +} + +#the-comment-list .comment-item .avatar { + float: left; + margin: 0 10px 5px 0; +} + +#the-comment-list .comment-item h4 { + line-height: 1.7em; + margin-top: -0.4em; + color: #777; +} + +#the-comment-list .comment-item h4 cite { + font-style: normal; + font-weight: normal; +} + +#the-comment-list .comment-item blockquote, +#the-comment-list .comment-item blockquote p { + margin: 0; + padding: 0; + display: inline; +} + +#dashboard_recent_comments #the-comment-list .trackback blockquote, +#dashboard_recent_comments #the-comment-list .pingback blockquote { + display: block; +} + +#the-comment-list .comment-item p.row-actions { + margin: 3px 0 0; + padding: 0; + font-size: 12px; +} + +/* QuickPress */ + +#dashboard_quick_press h4 { + font-family: sans-serif; + float: left; + width: 5.5em; + clear: both; + font-weight: normal; + text-align: right; + padding-top: 5px; + font-size: 12px; +} + +#dashboard_quick_press h4 label { + margin-right: 10px; +} + +#dashboard_quick_press .input-text-wrap, +#dashboard_quick_press .textarea-wrap { + margin: 0 0 1em 5em; +} + +#dashboard_quick_press #media-buttons { + margin: 0 0 .5em 5em; + padding: 0 0 0 10px; + font-size: 12px; + line-height: 17px; + color: #777; +} + +#dashboard_quick_press #media-buttons a { + vertical-align: bottom; +} + +#dashboard-widgets #dashboard_quick_press form p.submit { + margin-left: 4.6em; +} + +#dashboard-widgets #dashboard_quick_press form p.submit input { + float: left; +} + +#dashboard-widgets #dashboard_quick_press form p.submit #save-post { + margin: 0 1em 0 10px; +} + +#dashboard-widgets #dashboard_quick_press form p.submit #publish { + float: right; +} + +#dashboard-widgets #dashboard_quick_press form p.submit img.waiting { + vertical-align: middle; + visibility: hidden; + margin: 4px 6px 0 0; +} + +/* Recent Drafts */ +#dashboard_recent_drafts ul { + margin: 0; + padding: 0; + list-style: none; +} + +#dashboard_recent_drafts ul li { + margin-bottom: 1em; +} + +#dashboard_recent_drafts h4 { + line-height: 1.7em; +} + +#dashboard_recent_drafts h4 abbr { + font-weight: normal; + font-family: sans-serif; + font-size: 12px; + color: #999; + margin-left: 3px; +} + +#dashboard_recent_drafts p { + margin: 0; + padding: 0; +} + +/* Feeds */ + +.rss-widget ul { + margin: 0; + padding: 0; + list-style: none; +} + +a.rsswidget { + font-size: 13px; + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + line-height: 1.7em; +} + +.rss-widget ul li { + line-height: 1.5em; + margin-bottom: 12px; +} + +.rss-widget span.rss-date { + color: #999; + font-size: 12px; + margin-left: 3px; +} + +.rss-widget cite { + display: block; + text-align: right; + margin: 0 0 1em; + padding: 0; +} + +.rss-widget cite:before { + content: '\2014'; +} + +/* Plugins */ +#dashboard_plugins h4 { + line-height: 1.7em; +} +#dashboard_plugins h5 { + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-weight: normal; + font-size: 13px; + margin: 0; + display: inline; + line-height: 1.4em; +} + +#dashboard_plugins h5 a { + line-height: 1.4em; +} + +#dashboard_plugins .inside span { + font-size: 12px; + padding-left: 5px; +} + +#dashboard_plugins p { + margin: 0.3em 0 1.4em; + line-height: 1.4em; +} + +.dashboard-comment-wrap { + overflow: hidden; + word-wrap: break-word; +} + +/* Browser Nag */ +#dashboard_browser_nag a.update-browser-link { + font-size: 1.2em; + font-weight: bold; +} + +#dashboard_browser_nag a { + text-decoration: underline; +} + +#dashboard_browser_nag p.browser-update-nag.has-browser-icon { + padding-right: 125px; +} + +#dashboard_browser_nag .browser-icon { + margin-top: -35px; +} + +#dashboard_browser_nag.postbox.browser-insecure { + background-color: #ac1b1b; + border-color: #ac1b1b; +} + +#dashboard_browser_nag.postbox { + background-color: #e29808; + background-image: none; + border-color: #edc048; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + color: #fff; +} + +#dashboard_browser_nag.postbox.browser-insecure h3 { + border-bottom-color: #cd5a5a; + color: #fff; +} + +#dashboard_browser_nag.postbox h3 { + border-bottom-color: #f6e2ac; + text-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent none; + color: #fff; +} + +#dashboard_browser_nag a { + color: #fff; +} + +#dashboard_browser_nag.browser-insecure a.browse-happy-link, +#dashboard_browser_nag.browser-insecure a.update-browser-link { + text-shadow: #871b15 0 1px 0; +} + +#dashboard_browser_nag a.browse-happy-link, +#dashboard_browser_nag a.update-browser-link { + text-shadow: #d29a04 0 1px 0; +} diff --git a/src/wp-admin/css/farbtastic-rtl.css b/src/wp-admin/css/farbtastic-rtl.css new file mode 100644 index 0000000..7a8badb --- /dev/null +++ b/src/wp-admin/css/farbtastic-rtl.css @@ -0,0 +1,7 @@ +.farbtastic .color, .farbtastic .overlay { + left: 0; + right: 47px; +} +.farbtastic .marker { + margin: -8px -8px 0 0; +} diff --git a/src/wp-admin/css/farbtastic.css b/src/wp-admin/css/farbtastic.css new file mode 100644 index 0000000..71ad3c1 --- /dev/null +++ b/src/wp-admin/css/farbtastic.css @@ -0,0 +1,32 @@ +.farbtastic { + position: relative; +} +.farbtastic * { + position: absolute; + cursor: crosshair; +} +.farbtastic, .farbtastic .wheel { + width: 195px; + height: 195px; +} +.farbtastic .color, .farbtastic .overlay { + top: 47px; + left: 47px; + width: 101px; + height: 101px; +} +.farbtastic .wheel { + background: url(../images/wheel.png) no-repeat; + width: 195px; + height: 195px; +} +.farbtastic .overlay { + background: url(../images/mask.png) no-repeat; +} +.farbtastic .marker { + width: 17px; + height: 17px; + margin: -8px 0 0 -8px; + overflow: hidden; + background: url(../images/marker.png) no-repeat; +} \ No newline at end of file diff --git a/src/wp-admin/css/global-rtl.css b/src/wp-admin/css/global-rtl.css new file mode 100644 index 0000000..0a5a8b7 --- /dev/null +++ b/src/wp-admin/css/global-rtl.css @@ -0,0 +1 @@ +#wpcontent{margin-left:0;margin-right:165px;}.wp-admin #footer{margin-left:15px;margin-right:165px;}.js.folded #wpcontent{margin-left:0;margin-right:52px;}.js.folded.wp-admin #footer{margin-left:15px;margin-right:52px;}#wpbody-content{float:right;}#adminmenuwrap{float:right;}#adminmenu{clear:right;}.inner-sidebar{float:left;clear:left;}.has-right-sidebar #post-body{float:right;clear:right;margin-right:0;margin-left:-340px;}.has-right-sidebar #post-body-content{margin-right:0;margin-left:300px;}#col-right{float:left;clear:left;}.alignleft{float:right;}.alignright{float:left;}.textleft{text-align:right;}.textright{text-align:left;}.screen-reader-text,.screen-reader-text span{left:auto;right:-1000em;}body,td,textarea,input,select{font-family:Tahoma,Arial,sans-serif;}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:0;margin-right:1.8em;}.subsubsub{float:right;}.widefat thead th:first-of-type{-moz-border-radius-topleft:0;-moz-border-radius-topright:3px;-khtml-border-top-left-radius:0;-khtml-border-top-right-radius:3px;-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;}.widefat thead th:last-of-type{-moz-border-radius-topright:0;-moz-border-radius-topleft:3px;-khtml-border-top-right-radius:0;-khtml-border-top-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px;}.widefat tfoot th:first-of-type{-moz-border-radius-bottomleft:0;-moz-border-radius-bottomright:3px;-khtml-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px;}.widefat tfoot th:last-of-type{-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:3px;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;}.widefat th{text-align:right;}.widefat th input{margin:0 8px 0 0;}.wrap{margin:0 0 0 15px;}.wrap h2,.subtitle{font-family:Tahoma,Arial,sans-serif;}.wrap h2{padding:9px 0 4px 15px;}.subtitle{padding-left:0;padding-right:25px;}.wrap .add-new-h2{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:4px;}.wrap h2.long-header{padding-left:0;} \ No newline at end of file diff --git a/src/wp-admin/css/global-rtl.dev.css b/src/wp-admin/css/global-rtl.dev.css new file mode 100644 index 0000000..7907b6b --- /dev/null +++ b/src/wp-admin/css/global-rtl.dev.css @@ -0,0 +1,181 @@ + +/* 2 column liquid layout */ + +#wpcontent { + margin-left: 0; + margin-right: 165px; +} + +.wp-admin #footer { + margin-left: 15px; + margin-right: 165px; +} + +.js.folded #wpcontent { + margin-left: 0; + margin-right: 52px; +} + +.js.folded.wp-admin #footer { + margin-left: 15px; + margin-right: 52px; +} + +#wpbody-content { + float: right; +} + +#adminmenuwrap { + float: right; +} + +#adminmenu { + clear: right; +} + +/* inner 2 column liquid layout */ +.inner-sidebar { + float: left; + clear: left; +} + +.has-right-sidebar #post-body { + float: right; + clear: right; + margin-right: 0; + margin-left: -340px; +} + +.has-right-sidebar #post-body-content { + margin-right: 0; + margin-left: 300px; +} + +/* 2 columns main area */ + +#col-right { + float: left; + clear: left; +} + +/* utility classes*/ +.alignleft { + float: right; +} + +.alignright { + float: left; +} + +.textleft { + text-align: right; +} + +.textright { + text-align: left; +} + +/* Hide visually but not from screen readers */ +.screen-reader-text, .screen-reader-text span { + left: auto; + right: -1000em; +} + +/* styles for use by people extending the WordPress interface */ + +body, +td, +textarea, +input, +select { + font-family: Tahoma, Arial, sans-serif; +} + +ul.ul-disc, +ul.ul-square, +ol.ol-decimal { + margin-left: 0; + margin-right: 1.8em; +} + +.subsubsub { + float: right; +} + +.widefat thead th:first-of-type { + -moz-border-radius-topleft: 0; + -moz-border-radius-topright: 3px; + -khtml-border-top-left-radius: 0; + -khtml-border-top-right-radius: 3px; + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 3px; + border-top-left-radius: 0; + border-top-right-radius: 3px; +} + +.widefat thead th:last-of-type { + -moz-border-radius-topright: 0; + -moz-border-radius-topleft: 3px; + -khtml-border-top-right-radius: 0; + -khtml-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 0; + -webkit-border-top-left-radius: 3px; + border-top-right-radius: 0; + border-top-left-radius: 3px; +} +.widefat tfoot th:first-of-type { + -moz-border-radius-bottomleft: 0; + -moz-border-radius-bottomright: 3px; + -khtml-border-bottom-left-radius: 0; + -khtml-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 3px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 3px; +} +.widefat tfoot th:last-of-type { + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 3px; + -khtml-border-bottom-right-radius: 0; + -khtml-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 3px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 3px; +} + +.widefat th { + text-align: right; +} + +.widefat th input { + margin: 0 8px 0 0; +} + +.wrap { + margin: 0 0 0 15px; +} + + +.wrap h2, +.subtitle { + font-family: Tahoma, Arial, sans-serif; +} +.wrap h2 { + padding: 9px 0 4px 15px; +} + +.subtitle { + padding-left: 0; + padding-right: 25px; +} + +.wrap .add-new-h2 { + font-family: Tahoma, Arial, sans-serif; + margin-left: 0; + margin-right: 4px; +} + +.wrap h2.long-header { + padding-left: 0; +} diff --git a/src/wp-admin/css/global.css b/src/wp-admin/css/global.css new file mode 100644 index 0000000..739d365 --- /dev/null +++ b/src/wp-admin/css/global.css @@ -0,0 +1 @@ +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;background:transparent;}body{line-height:1;}ol,ul{list-style:none;}blockquote,q{quotes:none;}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}ins{text-decoration:none;}del{text-decoration:line-through;}#wpwrap{height:auto;min-height:100%;width:100%;position:relative;}#wpcontent{height:100%;}#wpcontent,#footer{margin-left:165px;}#wpbody-content{padding-bottom:65px;}.js.folded #wpcontent,.js.folded #footer{margin-left:52px;}#wpbody-content{float:left;width:100%;}#adminmenuback,#adminmenuwrap,#adminmenu,.js.folded #adminmenu .wp-submenu.sub-open,.js.folded #adminmenu .wp-submenu-wrap{width:145px;}#adminmenuback{position:absolute;top:0;bottom:0;z-index:-1;}#adminmenuwrap{float:left;}#adminmenu{clear:left;padding:0;list-style:none;}.js.folded #adminmenuback,.js.folded #adminmenuwrap,.js.folded #adminmenu,.js.folded #adminmenu li.menu-top{width:32px;}#footer{position:relative;}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative;}.inner-sidebar #side-sortables{width:280px;min-height:300px;}.has-right-sidebar .inner-sidebar{display:block;}.has-right-sidebar #post-body{float:left;clear:left;width:100%;margin-right:-340px;}.has-right-sidebar #post-body-content{margin-right:300px;}#col-container{overflow:hidden;padding:0;margin:0;}#col-left{padding:0;margin:0;overflow:hidden;width:39%;}#col-right{float:right;clear:right;overflow:hidden;padding:0;margin:0;width:59%;}.alignleft{float:left;}.alignright{float:right;}.textleft{text-align:left;}.textright{text-align:right;}.clear{clear:both;}.screen-reader-text,.screen-reader-text span{position:absolute;left:-1000em;height:1px;width:1px;overflow:hidden;}.hidden,.js .closed .inside,.js .hide-if-js,.no-js .hide-if-no-js{display:none;}input[type="text"],input[type="password"],textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}input[type="checkbox"],input[type="radio"]{vertical-align:middle;}html,body{height:100%;}body,td,textarea,input,select{font-family:sans-serif;font-size:13px;}body,textarea{line-height:1.4em;}input,select{line-height:15px;}p{margin:1em 0;}blockquote{margin:1em;}label{cursor:pointer;}li,dd{margin-bottom:6px;}p,li,dl,dd,dt{line-height:140%;}textarea,input,select{margin:1px;padding:3px;}h1{display:block;font-size:2em;font-weight:bold;margin:.67em 0;}h2{display:block;font-size:1.5em;font-weight:bold;margin:.83em 0;}h3{display:block;font-size:1.17em;font-weight:bold;margin:1em 0;}h4{display:block;font-size:1em;font-weight:bold;margin:1.33em 0;}h5{display:block;font-size:.83em;font-weight:bold;margin:1.67em 0;}h6{display:block;font-size:.67em;font-weight:bold;margin:2.33em 0;}ul.ul-disc{list-style:disc outside;}ul.ul-square{list-style:square outside;}ol.ol-decimal{list-style:decimal outside;}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:1.8em;}ul.ul-disc>li,ul.ul-square>li,ol.ol-decimal>li{margin:0 0 .5em;}.subsubsub{list-style:none;margin:8px 0 5px;padding:0;white-space:nowrap;font-size:12px;float:left;}.subsubsub a{line-height:2;padding:.2em;text-decoration:none;}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:normal;}.subsubsub a.current{font-weight:bold;background:none;border:none;}.subsubsub li{display:inline;margin:0;padding:0;}.widefat{border-width:1px;border-style:solid;border-spacing:0;width:100%;clear:both;margin:0;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.widefat *{word-wrap:break-word;}.widefat a{text-decoration:none;}.widefat thead th:first-of-type{-moz-border-radius-topleft:3px;-khtml-border-top-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;}.widefat thead th:last-of-type{-moz-border-radius-topright:3px;-khtml-border-top-right-radius:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;}.widefat tfoot th:first-of-type{-moz-border-radius-bottomleft:3px;-khtml-border-bottom-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.widefat tfoot th:last-of-type{-moz-border-radius-bottomright:3px;-khtml-border-bottom-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.widefat td,.widefat th{border-width:1px 0;border-style:solid;}.widefat tfoot th{border-bottom:none;}.widefat .no-items td{border-bottom-width:0;}.widefat td{font-size:12px;padding:4px 7px 2px;vertical-align:top;}.widefat td p,.widefat td ol,.widefat td ul{font-size:12px;}.widefat th{padding:7px 7px 8px;text-align:left;line-height:1.3em;font-size:14px;}.widefat th input{margin:0 0 0 8px;padding:0;vertical-align:text-top;}.widefat .check-column{width:2.2em;padding:11px 0 0;vertical-align:top;}.widefat tbody th.check-column{padding:9px 0 22px;}.widefat .num,.column-comments,.column-links,.column-posts{text-align:center;}.widefat th#comments{vertical-align:middle;}.wrap{margin:0 15px 0 0;}div.updated,div.error{border-width:1px;border-style:solid;padding:0 .6em;margin:5px 15px 2px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}div.updated p,div.error p{margin:.5em 0;padding:2px;}.wrap div.updated,.wrap div.error{margin:5px 0 15px;}.wrap h2,.subtitle{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:normal;margin:0;text-shadow:rgba(255,255,255,1) 0 1px 0;}.wrap h2{font-size:23px;padding:9px 15px 4px 0;line-height:29px;}.subtitle{font-size:14px;padding-left:25px;}.wrap .add-new-h2{font-family:sans-serif;margin-left:4px;padding:3px 8px;position:relative;top:-3px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none;font-size:12px;}.wrap h2.long-header{padding-right:0;}.fade-1000{opacity:0;-moz-transition-property:opacity;-moz-transition-duration:1s;-webkit-transition-property:opacity;-webkit-transition-duration:1s;-o-transition-property:opacity;-o-transition-duration:1s;transition-property:opacity;transition-duration:1s;}.fade-600{opacity:0;-moz-transition-property:opacity;-moz-transition-duration:.6s;-webkit-transition-property:opacity;-webkit-transition-duration:.6s;-o-transition-property:opacity;-o-transition-duration:.6s;transition-property:opacity;transition-duration:.6s;}.fade-400{opacity:0;-moz-transition-property:opacity;-moz-transition-duration:.4s;-webkit-transition-property:opacity;-webkit-transition-duration:.4s;-o-transition-property:opacity;-o-transition-duration:.4s;transition-property:opacity;transition-duration:.4s;}.fade-300{opacity:0;-moz-transition-property:opacity;-moz-transition-duration:.3s;-webkit-transition-property:opacity;-webkit-transition-duration:.3s;-o-transition-property:opacity;-o-transition-duration:.3s;transition-property:opacity;transition-duration:.3s;}.fade-trigger{opacity:1;} \ No newline at end of file diff --git a/src/wp-admin/css/global.dev.css b/src/wp-admin/css/global.dev.css new file mode 100644 index 0000000..1a74f12 --- /dev/null +++ b/src/wp-admin/css/global.dev.css @@ -0,0 +1,607 @@ +/* http://meyerweb.com/eric/tools/css/reset/ */ +/* v1.0 | 20080212 */ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + outline: 0; +/* font-size: 100%; + vertical-align: baseline; */ + background: transparent; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} + +/* remember to define focus styles! */ +/* +:focus { + outline: 0; +} +*/ +/* remember to highlight inserts somehow! */ +ins { + text-decoration: none; +} +del { + text-decoration: line-through; +} + +/* tables still need 'cellspacing="0"' in the markup */ +/* +table { + border-collapse: collapse; + border-spacing: 0; +} +*/ +/* end reset css */ + + +/* 2 column liquid layout */ +#wpwrap { + height: auto; + min-height: 100%; + width: 100%; + position: relative; +} + +#wpcontent { + height: 100%; +} + +#wpcontent, +#footer { + margin-left: 165px; +} + +#wpbody-content { + padding-bottom: 65px; +} + +.js.folded #wpcontent, +.js.folded #footer { + margin-left: 52px; +} + +#wpbody-content { + float: left; + width: 100%; +} + +#adminmenuback, +#adminmenuwrap, +#adminmenu, +.js.folded #adminmenu .wp-submenu.sub-open, +.js.folded #adminmenu .wp-submenu-wrap { + width: 145px; +} + +#adminmenuback { + position: absolute; + top: 0; + bottom: 0; + z-index: -1; +} + +#adminmenuwrap { + float: left; +} + +#adminmenu { + clear: left; + padding: 0; + list-style: none; +} + +.js.folded #adminmenuback, +.js.folded #adminmenuwrap, +.js.folded #adminmenu, +.js.folded #adminmenu li.menu-top { + width: 32px; +} + +#footer { + position: relative; +} + +/* inner 2 column liquid layout */ +.inner-sidebar { + float: right; + clear: right; + display: none; + width: 281px; + position: relative; +} + +.inner-sidebar #side-sortables { + width: 280px; + min-height: 300px; +} + +.has-right-sidebar .inner-sidebar { + display: block; +} + +.has-right-sidebar #post-body { + float: left; + clear: left; + width: 100%; + margin-right: -340px; +} + +.has-right-sidebar #post-body-content { + margin-right: 300px; +} + +/* 2 columns main area */ + +#col-container { + overflow: hidden; + padding: 0; + margin: 0; +} + +#col-left { + padding: 0; + margin: 0; + overflow: hidden; + width: 39%; +} + +#col-right { + float: right; + clear: right; + overflow: hidden; + padding: 0; + margin: 0; + width: 59%; +} + +/* utility classes */ +.alignleft { + float: left; +} + +.alignright { + float: right; +} + +.textleft { + text-align: left; +} + +.textright { + text-align: right; +} + +.clear { + clear: both; +} + +/* Hide visually but not from screen readers */ +.screen-reader-text, +.screen-reader-text span { + position: absolute; + left: -1000em; + height: 1px; + width: 1px; + overflow: hidden; +} + +.hidden, +.js .closed .inside, +.js .hide-if-js, +.no-js .hide-if-no-js { + display: none; +} + +/* include margin and padding in the width calculation of input and textarea */ +input[type="text"], +input[type="password"], +textarea { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + -ms-box-sizing: border-box; /* ie8 only */ + box-sizing: border-box; +} + +input[type="checkbox"], +input[type="radio"] { + vertical-align: middle; +} + +/* styles for use by people extending the WordPress interface */ +html, +body { + height: 100%; +} + +body, +td, +textarea, +input, +select { + font-family: sans-serif; + font-size: 13px; +} + +body, +textarea { + line-height: 1.4em; +} + +input, +select { + line-height: 15px; +} + +p { + margin: 1em 0; +} + +blockquote { + margin: 1em; +} + +label { + cursor: pointer; +} + +li, +dd { + margin-bottom: 6px; +} + +p, +li, +dl, +dd, +dt { + line-height: 140%; +} + +textarea, +input, +select { + margin: 1px; + padding: 3px; +} + +h1 { + display: block; + font-size: 2em; + font-weight: bold; + margin: .67em 0; +} + +h2 { + display: block; + font-size: 1.5em; + font-weight: bold; + margin: .83em 0; +} + +h3 { + display: block; + font-size: 1.17em; + font-weight: bold; + margin: 1em 0; +} + +h4 { + display: block; + font-size: 1em; + font-weight: bold; + margin: 1.33em 0; +} + +h5 { + display: block; + font-size: 0.83em; + font-weight: bold; + margin: 1.67em 0; +} + +h6 { + display: block; + font-size: 0.67em; + font-weight: bold; + margin: 2.33em 0; +} + +ul.ul-disc { + list-style: disc outside; +} + +ul.ul-square { + list-style: square outside; +} + +ol.ol-decimal { + list-style: decimal outside; +} + +ul.ul-disc, +ul.ul-square, +ol.ol-decimal { + margin-left: 1.8em; +} + +ul.ul-disc > li, +ul.ul-square > li, +ol.ol-decimal > li { + margin: 0 0 0.5em; +} + +.subsubsub { + list-style: none; + margin: 8px 0 5px; + padding: 0; + white-space: nowrap; + font-size: 12px; + float: left; +} + +.subsubsub a { + line-height: 2; + padding: .2em; + text-decoration: none; +} + +.subsubsub a .count, .subsubsub a.current .count { + color: #999; + font-weight: normal; +} + +.subsubsub a.current { + font-weight: bold; + background: none; + border: none; +} + +.subsubsub li { + display: inline; + margin: 0; + padding: 0; +} + +.widefat { + border-width: 1px; + border-style: solid; + border-spacing: 0; + width: 100%; + clear: both; + margin: 0; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.widefat * { + word-wrap: break-word; +} + +.widefat a { + text-decoration: none; +} + +.widefat thead th:first-of-type { + -moz-border-radius-topleft: 3px; + -khtml-border-top-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; +} +.widefat thead th:last-of-type { + -moz-border-radius-topright: 3px; + -khtml-border-top-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; +} +.widefat tfoot th:first-of-type { + -moz-border-radius-bottomleft: 3px; + -khtml-border-bottom-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.widefat tfoot th:last-of-type { + -moz-border-radius-bottomright: 3px; + -khtml-border-bottom-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.widefat td, +.widefat th { + border-width: 1px 0; + border-style: solid; +} +.widefat tfoot th { + border-bottom: none; +} + +.widefat .no-items td { + border-bottom-width: 0; +} + +.widefat td { + font-size: 12px; + padding: 4px 7px 2px; + vertical-align: top; +} + +.widefat td p, +.widefat td ol, +.widefat td ul { + font-size: 12px; +} + +.widefat th { + padding: 7px 7px 8px; + text-align: left; + line-height: 1.3em; + font-size: 14px; +} + +.widefat th input { + margin: 0 0 0 8px; + padding: 0; + vertical-align: text-top; +} + +.widefat .check-column { + width: 2.2em; + padding: 11px 0 0; + vertical-align: top; +} + +.widefat tbody th.check-column { + padding: 9px 0 22px; +} + +.widefat .num, +.column-comments, +.column-links, +.column-posts { + text-align: center; +} + +.widefat th#comments { + vertical-align: middle; +} + +.wrap { + margin: 0 15px 0 0; +} + +div.updated, +div.error { + border-width: 1px; + border-style: solid; + padding: 0 0.6em; + margin: 5px 15px 2px; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +div.updated p, +div.error p { + margin: 0.5em 0; + padding: 2px; +} + +.wrap div.updated, +.wrap div.error { + margin: 5px 0 15px; +} + +.wrap h2, +.subtitle { + font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif; + font-weight: normal; + margin: 0; + text-shadow: rgba(255,255,255,1) 0 1px 0; +} +.wrap h2 { + font-size: 23px; + padding: 9px 15px 4px 0; + line-height: 29px; +} +.subtitle { + font-size: 14px; + padding-left: 25px; +} +.wrap .add-new-h2 { + font-family: sans-serif; + margin-left: 4px; + padding: 3px 8px; + position: relative; + top: -3px; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + text-decoration: none; + font-size: 12px; +} + +.wrap h2.long-header { + padding-right: 0; +} + + +/* =CSS 3 transitions +-------------------------------------------------------------- */ +.fade-1000 { + opacity: 0; + -moz-transition-property: opacity; + -moz-transition-duration: 1s; + -webkit-transition-property: opacity; + -webkit-transition-duration: 1s; + -o-transition-property: opacity; + -o-transition-duration: 1s; + transition-property: opacity; + transition-duration: 1s; +} + +.fade-600 { + opacity: 0; + -moz-transition-property: opacity; + -moz-transition-duration: 0.6s; + -webkit-transition-property: opacity; + -webkit-transition-duration: 0.6s; + -o-transition-property: opacity; + -o-transition-duration: 0.6s; + transition-property: opacity; + transition-duration: 0.6s; +} + +.fade-400 { + opacity: 0; + -moz-transition-property: opacity; + -moz-transition-duration: 0.4s; + -webkit-transition-property: opacity; + -webkit-transition-duration: 0.4s; + -o-transition-property: opacity; + -o-transition-duration: 0.4s; + transition-property: opacity; + transition-duration: 0.4s; +} + +.fade-300 { + opacity: 0; + -moz-transition-property: opacity; + -moz-transition-duration: 0.3s; + -webkit-transition-property: opacity; + -webkit-transition-duration: 0.3s; + -o-transition-property: opacity; + -o-transition-duration: 0.3s; + transition-property: opacity; + transition-duration: 0.3s; +} + +.fade-trigger { + opacity: 1; +} diff --git a/src/wp-admin/css/ie-rtl.css b/src/wp-admin/css/ie-rtl.css new file mode 100644 index 0000000..40f5b76 --- /dev/null +++ b/src/wp-admin/css/ie-rtl.css @@ -0,0 +1 @@ +html{direction:ltr;}body{direction:rtl;}* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle{background:url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -109px;}* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle{background:url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -206px;}* html #adminmenu{margin-left:0;margin-right:-80px;}* html div.folded #adminmenu{margin-left:0;margin-right:-22px;}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 10px 4px 4px;}.inline-edit-row fieldset label span.title{float:right;}.inline-edit-row fieldset label span.input-text-wrap{margin-right:0;}p.search-box{float:left;}* html #poststuff h2{margin-right:0;}#bh{margin:7px 10px 0 0;float:left;}#user_info+div#favorite-actions{right:auto;left:15px;}#wphead-info{float:left;}div#dashboard-widgets{padding-right:0;padding-left:1px;}.tagchecklist span a{margin:4px -9px 0 0;}.widefat th input{margin:0 5px 0 0;}#TB_window{width:670px;position:absolute;top:50%;left:50%;margin-right:335px!important;}#dashboard_plugins{direction:ltr;}#dashboard_plugins h3.hndle{direction:rtl;}#dashboard_incoming_links ul li,#dashboard_secondary ul li,#dashboard_primary ul li,p.row-actions{width:100%;}#favorite-inside{position:absolute;right:0;}#post-status-info{height:25px;}#screen-meta{position:static;}p.submit{height:22px;}.inner-sidebar{position:static;}form#widgets-filter{position:static;}* html .meta-box-sortables .postbox .handlediv{background:transparent url(../images/menu-bits-rtl-vs.gif) no-repeat scroll right -111px;}.menu-max-depth-0 #menu-management{width:460px;}.menu-max-depth-1 #menu-management{width:490px;}.menu-max-depth-2 #menu-management{width:520px;}.menu-max-depth-3 #menu-management{width:550px;}.menu-max-depth-4 #menu-management{width:580px;}.menu-max-depth-5 #menu-management{width:610px;}.menu-max-depth-6 #menu-management{width:640px;}.menu-max-depth-7 #menu-management{width:670px;}.menu-max-depth-8 #menu-management{width:700px;}.menu-max-depth-9 #menu-management{width:730px;}.menu-max-depth-10 #menu-management{width:760px;}.menu-max-depth-11 #menu-management{width:790px;}.menu-item-depth-0{margin-left:0;}.menu-item-depth-1{margin-left:-30px;}.menu-item-depth-2{margin-left:-60px;}.menu-item-depth-3{margin-left:-90px;}.menu-item-depth-4{margin-left:-120px;}.menu-item-depth-5{margin-left:-150px;}.menu-item-depth-6{margin-left:-180px;}.menu-item-depth-7{margin-left:-210px;}.menu-item-depth-8{margin-left:-240px;}.menu-item-depth-9{margin-left:-270px;}.menu-item-depth-10{margin-left:-300px;}.menu-item-depth-11{margin-left:-330px;}#menu-to-edit li dl{padding:0!important;margin:0!important;}.ui-sortable-helper .menu-item-transport{margin-top:13px;}.ui-sortable-helper .menu-item-transport .menu-item-transport{margin-top:0;}.sortable-placeholder{margin-top:0!important;margin-left:0!important;margin-bottom:13px!important;padding:0!important;}.auto-add-pages{clear:both;float:none;}#nav-menus-frame .open-label span{float:none;display:inline-block;}#nav-menus-frame .delete-action{float:none;} \ No newline at end of file diff --git a/src/wp-admin/css/ie-rtl.dev.css b/src/wp-admin/css/ie-rtl.dev.css new file mode 100644 index 0000000..c35fc89 --- /dev/null +++ b/src/wp-admin/css/ie-rtl.dev.css @@ -0,0 +1,156 @@ +html { + direction: ltr; +} +body { + direction: rtl; +} +* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle { + background: url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -109px; +} + +* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle { + background: url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -206px; +} +* html #adminmenu { + margin-left:0; + margin-right: -80px; +} +* html div.folded #adminmenu { + margin-left: 0; + margin-right: -22px; +} +#wpcontent #adminmenu .wp-submenu li.wp-submenu-head { + padding: 3px 10px 4px 4px; +} +.inline-edit-row fieldset label span.title { + float: right; +} +.inline-edit-row fieldset label span.input-text-wrap { + margin-right: 0; +} +p.search-box { + float: left; +} +* html #poststuff h2 { + margin-right: 0; +} +#bh { + margin: 7px 10px 0 0; + float: left; +} +#user_info + div#favorite-actions { + right: auto; + left: 15px; +} +#wphead-info { + float: left; +} +/* without this dashboard widgets appear in one column for some screen widths */ +div#dashboard-widgets { + padding-right: 0; + padding-left: 1px; +} +.tagchecklist span a { + margin: 4px -9px 0 0; +} +.widefat th input { + margin: 0 5px 0 0; +} +/* ---------- add by navid */ +#TB_window { + width: 670px; + position: absolute; + top: 50%; + left: 50%; + margin-right: 335px !important; +} +#dashboard_plugins { + direction: ltr; +} +#dashboard_plugins h3.hndle { + direction: rtl; +} +#dashboard_incoming_links ul li, +#dashboard_secondary ul li, +#dashboard_primary ul li, +p.row-actions { + width: 100%; +} +#favorite-inside { + position: absolute; + right:0; +} +#post-status-info { + height: 25px; +} +#screen-meta { + position: static; +} +p.submit { /* quick edit and reply in edit-comments.php */ + height:22px; +} +.inner-sidebar { /* fix edit single comment */ + position: static; +} +form#widgets-filter { /* fix widget page */ + position: static; +} + +* html .meta-box-sortables .postbox .handlediv { + background: transparent url(../images/menu-bits-rtl-vs.gif) no-repeat scroll right -111px; +} + +/* nav menus */ +.menu-max-depth-0 #menu-management { width: 460px; } +.menu-max-depth-1 #menu-management { width: 490px; } +.menu-max-depth-2 #menu-management { width: 520px; } +.menu-max-depth-3 #menu-management { width: 550px; } +.menu-max-depth-4 #menu-management { width: 580px; } +.menu-max-depth-5 #menu-management { width: 610px; } +.menu-max-depth-6 #menu-management { width: 640px; } +.menu-max-depth-7 #menu-management { width: 670px; } +.menu-max-depth-8 #menu-management { width: 700px; } +.menu-max-depth-9 #menu-management { width: 730px; } +.menu-max-depth-10 #menu-management { width: 760px; } +.menu-max-depth-11 #menu-management { width: 790px; } + +.menu-item-depth-0 { margin-left: 0px; } +.menu-item-depth-1 { margin-left: -30px; } +.menu-item-depth-2 { margin-left: -60px; } +.menu-item-depth-3 { margin-left: -90px; } +.menu-item-depth-4 { margin-left: -120px; } +.menu-item-depth-5 { margin-left: -150px; } +.menu-item-depth-6 { margin-left: -180px; } +.menu-item-depth-7 { margin-left: -210px; } +.menu-item-depth-8 { margin-left: -240px; } +.menu-item-depth-9 { margin-left: -270px; } +.menu-item-depth-10 { margin-left: -300px; } +.menu-item-depth-11 { margin-left: -330px; } + +#menu-to-edit li dl { + padding: 0 !important; + margin: 0 !important; +} +.ui-sortable-helper .menu-item-transport { + margin-top: 13px; +} + .ui-sortable-helper .menu-item-transport .menu-item-transport { + margin-top: 0; + } +.sortable-placeholder { + margin-top: 0 !important; + margin-left: 0 !important; + margin-bottom: 13px !important; + padding: 0 !important; +} +.auto-add-pages { + clear: both; + float: none; +} +#nav-menus-frame .open-label span { + float: none; + display: inline-block; +} +#nav-menus-frame .delete-action { + float: none; +} diff --git a/src/wp-admin/css/ie.css b/src/wp-admin/css/ie.css new file mode 100644 index 0000000..00e1af7 --- /dev/null +++ b/src/wp-admin/css/ie.css @@ -0,0 +1 @@ +#wp-fullscreen-title{width:97%;}#wp_mce_fullscreen_ifr{background-color:#f9f9f9;}#wp-fullscreen-tagline{color:#888;font-size:14px;}#adminmenuback{left:0;}#adminmenu li.wp-menu-separator,#adminmenu li.wp-menu-separator-last{font-size:1px;line-height:1;}#adminmenu a.menu-top{border-bottom:0 none;border-top:1px solid #ddd;}#adminmenu .separator{font-size:1px;line-height:1px;}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary,#wpbody-content input.button-highlighted{overflow:visible;}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:none;}#dashboard-widgets h3 a{height:14px;line-height:14px;}.tablenav-pages .current-page{vertical-align:middle;}#wpbody-content .postbox{border:1px solid #dfdfdf;}#wpbody-content .postbox h3{margin-bottom:-1px;}* html .meta-box-sortables .postbox .handlediv{background:transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -111px;}* html .edit-box{display:inline;}* html .inner-sidebar #side-sortables,* html .postbox-container .meta-box-sortables{height:300px;}* html #wpbody-content #screen-options-link-wrap{display:inline-block;width:150px;text-align:center;}* html #wpbody-content #contextual-help-link-wrap{display:inline-block;width:100px;text-align:center;}* html #adminmenu{margin-left:-80px;}* html .folded #adminmenu{margin-left:-22px;}* html #wpcontent #adminmenu li.menu-top{display:inline;padding:0;margin:0;}* html #footer{margin:0;}.js.folded #adminmenu li.menu-top{display:block;zoom:100%;}ul#adminmenu{z-index:99;}#adminmenu li.menu-top a.menu-top{min-width:auto;width:auto;}#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu{font-style:normal;}* html #wpcontent #adminmenu .wp-menu-open .wp-menu-toggle{background:none;}* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle{background:url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px;}* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle{background:url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -206px;}* html #adminmenu div.wp-menu-image{height:29px;}#wpcontent #adminmenu .wp-submenu li{padding:0;}#adminmenu,.major-publishing-actions,.wp-submenu,.wp-submenu li,.wp-menu-toggle,#template,#template div,#editcat,#addcat,* html .stuffbox h3{zoom:100%;}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 4px 4px 10px;zoom:100%;}.js.folded #adminmenu .menu-top{height:30px;}.js.folded #adminmenu .wp-submenu{margin:-1px 0 0 0;}.wp-menu-arrow{height:28px;}.submitbox{margin-top:10px;}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:39%;}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:19%;}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:49%;}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:29%;}.inline-edit-row p.submit{zoom:100%;}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em;}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;zoom:100%;}#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input{line-height:130%;}#wpbody-content .inline-edit-row .input-text-wrap input{width:95%;}#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input{width:8em;}* html .row-actions{visibility:visible;}#wphead-info{float:right;}#titlediv #title{width:98%;}a.button{line-height:1.4em;margin:1px;padding:2px 6px;}* html div.widget-liquid-left,* html div.widget-liquid-right{display:block;position:relative;}#screen-options-wrap{overflow:hidden;}#favorite-actions{z-index:12;}#favorite-inside,#favorite-inside a,.favorite-action{zoom:100%;}#the-comment-list .comment-item,#post-status-info,#wpwrap,#wpcontent,#wrap,#postdivrich,#postdiv,#poststuff,.metabox-holder,#titlediv,#post-body,#editorcontainer,.tablenav,.widget-liquid-left,.widget-liquid-right,#widgets-left,.widgets-sortables,#dragHelper,.widget .widget-top,.widget,.widget-control-actions,.tagchecklist,#col-container,#col-left,#col-right,.fileedit-sub{display:block;zoom:100%;}p.search-box{position:static;float:right;margin:-3px 0 4px;}* html #editorcontainer{padding:0;}#editorcontainer #content{overflow:auto;margin:auto;width:98%;}form#template div{width:100%;}#ed_toolbar input,#ed_reply_toolbar input{overflow:visible;padding:0 4px;}#poststuff h2{font-size:1.6em;}* html #poststuff h2{margin-left:0;}#bh{margin:7px 10px 0 0;float:right;}div#dashboard-widgets{padding-right:1px;}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block;}.tagchecklist span a{margin:4px 0 0 -9px;}.tablenav .button-secondary,.nav .button-secondary{padding-top:2px;padding-bottom:2px;}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px;}.tablenav .actions select{width:155px;}table.ie-fixed{table-layout:fixed;}.widefat tr,.widefat th{margin-bottom:0;border-spacing:0;}.widefat th input{margin:0 0 0 5px;}.widefat .check-column{padding:6px 0 2px;}.widefat tbody th.check-column{padding:4px 0 22px;}.widefat{empty-cells:show;border-collapse:collapse;}.tablenav a.button-secondary{display:inline-block;padding:2px 5px;}* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea{border:1px solid #DFDFDF;}* html .feature-filter .feature-group li{width:145px;}* html .widget-top .widget-title-action a{background:url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -110px;}* html div.widget-liquid-left{width:99%;}#wp_inactive_widgets{padding-bottom:8px;}* html .widgets-sortables{height:50px;}* html a#content_resize{right:-2px;}* html .widget-title h4{width:205px;}* html #removing-widget .in-widget-title{display:none;}#available-widgets .widget-holder{padding-bottom:65px;}#widgets-left .inactive{padding-bottom:10px;}.widget-liquid-right .widget,#wp_inactive_widgets .widget{position:relative;}* html .media-item .pinkynail{height:32px;width:40px;}#wpcontent .button-primary-disabled{color:#9FD0D5;background:#298CBA;}#wpcontent #ajax-loading,#wpcontent .ajax-loading{vertical-align:baseline;}* html .describe .field input.text,* html .describe .field textarea{width:440px;}#the-comment-list .unapproved tr,#the-comment-list .unapproved td{background-color:#ffffe0;}.imgedit-submit{width:300px;}* html input{border:1px solid #dfdfdf;}#nav-menu-header,#nav-menus-frame,#wpbody,.menu li{zoom:100%;}#update-nav-menu #post-body{overflow:hidden;}.menu li{min-width:100%;}.menu li.sortable-placeholder{min-width:400px;} \ No newline at end of file diff --git a/src/wp-admin/css/ie.dev.css b/src/wp-admin/css/ie.dev.css new file mode 100644 index 0000000..a41d08f --- /dev/null +++ b/src/wp-admin/css/ie.dev.css @@ -0,0 +1,494 @@ +/* Fixes for IE bugs */ + +#wp-fullscreen-title { + width: 97%; +} + +#wp_mce_fullscreen_ifr { + background-color: #f9f9f9; +} + +#wp-fullscreen-tagline { + color: #888; + font-size: 14px; +} + +#adminmenuback { + left: 0; +} + +#adminmenu li.wp-menu-separator, +#adminmenu li.wp-menu-separator-last { + font-size: 1px; + line-height: 1; +} + +#adminmenu a.menu-top { + border-bottom: 0 none; + border-top: 1px solid #ddd; +} + +#adminmenu .separator { + font-size: 1px; + line-height: 1px; +} + +#wpbody-content input.button, +#wpbody-content input.button-primary, +#wpbody-content input.button-secondary, +#wpbody-content input.button-highlighted { + overflow: visible; +} + +#dashboard-widgets #dashboard_quick_press form p.submit #publish { + float: none; +} + +#dashboard-widgets h3 a { + height: 14px; + line-height: 14px; +} + +.tablenav-pages .current-page { + vertical-align: middle; +} + +#wpbody-content .postbox { + border: 1px solid #dfdfdf; +} + +#wpbody-content .postbox h3 { + margin-bottom: -1px; +} + +* html .meta-box-sortables .postbox .handlediv { + background: transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -111px; +} + +* html .edit-box { + display: inline; +} + +* html .inner-sidebar #side-sortables, +* html .postbox-container .meta-box-sortables { + height: 300px; +} + +* html #wpbody-content #screen-options-link-wrap { + display: inline-block; + width: 150px; + text-align: center; +} + +* html #wpbody-content #contextual-help-link-wrap { + display: inline-block; + width: 100px; + text-align: center; +} + +* html #adminmenu { + margin-left: -80px; +} + +* html .folded #adminmenu { + margin-left: -22px; +} + +* html #wpcontent #adminmenu li.menu-top { + display: inline; + padding: 0; + margin: 0; +} + +* html #footer { + margin: 0; +} + +.js.folded #adminmenu li.menu-top { + display: block; + zoom: 100%; +} + +ul#adminmenu { + z-index: 99; +} + +#adminmenu li.menu-top a.menu-top { + min-width: auto; + width: auto; +} + +#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu { + font-style: normal; +} + +* html #wpcontent #adminmenu .wp-menu-open .wp-menu-toggle { + background: none; +} + +* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle { + background: url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px; +} + +* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle { + background: url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -206px; +} + +* html #adminmenu div.wp-menu-image { + height: 29px; +} + +#wpcontent #adminmenu .wp-submenu li { + padding: 0; +} + +#adminmenu, +.major-publishing-actions, +.wp-submenu, +.wp-submenu li, +.wp-menu-toggle, +#template, +#template div, +#editcat, +#addcat, +* html .stuffbox h3 { + zoom: 100%; +} + +#wpcontent #adminmenu .wp-submenu li.wp-submenu-head { + padding: 3px 4px 4px 10px; + zoom: 100%; +} + +.js.folded #adminmenu .menu-top { + height: 30px; +} + +.js.folded #adminmenu .wp-submenu { + margin: -1px 0 0 0; +} + +.wp-menu-arrow { + height: 28px; +} + +.submitbox { + margin-top: 10px; +} + +/* Inline Editor */ +#wpbody-content .quick-edit-row-post .inline-edit-col-left { + width: 39%; +} + +#wpbody-content .inline-edit-row-post .inline-edit-col-center { + width: 19%; +} + +#wpbody-content .quick-edit-row-page .inline-edit-col-left { + width: 49%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-left { + width: 29%; +} + +.inline-edit-row p.submit { + zoom: 100%; +} + +.inline-edit-row fieldset label span.title { + display: block; + float: left; + width: 5em; +} + +.inline-edit-row fieldset label span.input-text-wrap { + margin-left: 0; + zoom: 100%; +} + +#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input { + line-height: 130%; +} + +#wpbody-content .inline-edit-row .input-text-wrap input { + width: 95%; +} + +#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input { + width: 8em; +} +/* end Inline Editor */ + +* html .row-actions { + visibility: visible; +} + +#wphead-info { + float: right; +} + +#titlediv #title { + width: 98%; +} + +a.button { + line-height: 1.4em; + margin: 1px; + padding: 2px 6px; +} + +* html div.widget-liquid-left, +* html div.widget-liquid-right { + display: block; + position: relative; +} + +#screen-options-wrap { + overflow: hidden; +} + +#favorite-actions { + z-index: 12; +} + +#favorite-inside, +#favorite-inside a, +.favorite-action { + zoom: 100%; +} + +#the-comment-list .comment-item, +#post-status-info, +#wpwrap, +#wpcontent, +#wrap, +#postdivrich, +#postdiv, +#poststuff, +.metabox-holder, +#titlediv, +#post-body, +#editorcontainer, +.tablenav, +.widget-liquid-left, +.widget-liquid-right, +#widgets-left, +.widgets-sortables, +#dragHelper, +.widget .widget-top, +.widget, +.widget-control-actions, +.tagchecklist, +#col-container, +#col-left, +#col-right, +.fileedit-sub { + display: block; + zoom: 100%; +} + +p.search-box { + position: static; + float: right; + margin: -3px 0 4px; +} + +* html #editorcontainer { + padding: 0; +} + +#editorcontainer #content { + overflow: auto; + margin: auto; + width: 98%; +} + +form#template div { + width: 100%; +} + +#ed_toolbar input, +#ed_reply_toolbar input { + overflow: visible; + padding: 0 4px; +} + +#poststuff h2 { + font-size: 1.6em; +} + +* html #poststuff h2 { + margin-left: 0; +} + +#bh { + margin: 7px 10px 0 0; + float: right; +} + +/* without this dashboard widgets appear in one column for some screen widths */ +div#dashboard-widgets { + padding-right: 1px; +} + +.tagchecklist span, .tagchecklist span a { + display: inline-block; + display: block; +} + +.tagchecklist span a { + margin: 4px 0 0 -9px; +} + +.tablenav .button-secondary, +.nav .button-secondary { + padding-top: 2px; + padding-bottom: 2px; +} + +.tablenav select { + font-size: 13px; + display: inline-block; + vertical-align: top; + margin-top: 2px; +} + +.tablenav .actions select { + width: 155px; +} + +table.ie-fixed { + table-layout: fixed; +} + +.widefat tr, .widefat th { + margin-bottom: 0; + border-spacing: 0; +} + +.widefat th input { + margin: 0 0 0 5px; +} + +.widefat .check-column { + padding: 6px 0 2px; +} + +.widefat tbody th.check-column { + padding: 4px 0 22px; +} + +.widefat { + empty-cells: show; + border-collapse: collapse; +} + +.tablenav a.button-secondary { + display: inline-block; + padding: 2px 5px; +} + +* html .stuffbox, +* html .stuffbox input, +* html .stuffbox textarea { + border: 1px solid #DFDFDF; +} + +* html .feature-filter .feature-group li { + width: 145px; +} + +* html .widget-top .widget-title-action a { + background: url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -110px; +} + +* html div.widget-liquid-left { + width: 99%; +} + +#wp_inactive_widgets { + padding-bottom: 8px; +} + +* html .widgets-sortables { + height: 50px; +} + +* html a#content_resize { + right: -2px; +} + +* html .widget-title h4 { + width: 205px; +} + +* html #removing-widget .in-widget-title { + display: none; +} + +#available-widgets .widget-holder { + padding-bottom: 65px; +} + +#widgets-left .inactive { + padding-bottom: 10px; +} + +.widget-liquid-right .widget, +#wp_inactive_widgets .widget { + position: relative; +} + +* html .media-item .pinkynail { + height: 32px; + width: 40px; +} + +#wpcontent .button-primary-disabled { + color: #9FD0D5; + background: #298CBA; +} + +#wpcontent #ajax-loading, +#wpcontent .ajax-loading { + vertical-align: baseline; +} + +* html .describe .field input.text, +* html .describe .field textarea { + width: 440px; +} + +#the-comment-list .unapproved tr, +#the-comment-list .unapproved td { + background-color: #ffffe0; +} + +.imgedit-submit { + width: 300px; +} + +* html input { + border: 1px solid #dfdfdf; +} + +#nav-menu-header, +#nav-menus-frame, +#wpbody, +.menu li { + zoom:100%; +} + +#update-nav-menu #post-body { + overflow:hidden; +} + +.menu li { + min-width:100%; +} + +.menu li.sortable-placeholder { + min-width:400px; +} diff --git a/src/wp-admin/css/install-rtl.css b/src/wp-admin/css/install-rtl.css new file mode 100644 index 0000000..e422ece --- /dev/null +++ b/src/wp-admin/css/install-rtl.css @@ -0,0 +1 @@ +body{font-family:Tahoma,arial;}h1{font-family:arial;margin:5px -4px 0 0;}ul,ol{padding:5px 22px 5px 5px;}.step,th{text-align:right;}.submit input,.button,.button-secondary{font-family:Tahoma,arial;margin-right:0;}.form-table th{text-align:right;}#user_login,#admin_email,#pass1,#pass2{direction:ltr;} \ No newline at end of file diff --git a/src/wp-admin/css/install-rtl.dev.css b/src/wp-admin/css/install-rtl.dev.css new file mode 100644 index 0000000..9e0be99 --- /dev/null +++ b/src/wp-admin/css/install-rtl.dev.css @@ -0,0 +1,23 @@ +body { + font-family: Tahoma, arial; +} +h1 { + font-family: arial; + margin: 5px -4px 0 0; +} +ul, ol { + padding: 5px 22px 5px 5px; +} +.step, th { + text-align: right; +} +.submit input, .button, .button-secondary { + font-family: Tahoma, arial; + margin-right: 0; +} +.form-table th { + text-align: right; +} +#user_login, #admin_email, #pass1, #pass2 { + direction: ltr; +} \ No newline at end of file diff --git a/src/wp-admin/css/install.css b/src/wp-admin/css/install.css new file mode 100644 index 0000000..fa76872 --- /dev/null +++ b/src/wp-admin/css/install.css @@ -0,0 +1 @@ +html{background:#f9f9f9;}body{background:#fff;color:#333;font-family:sans-serif;margin:2em auto;width:700px;padding:1em 2em;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;border:1px solid #dfdfdf;}a{color:#2583ad;text-decoration:none;}a:hover{color:#d54e21;}h1{border-bottom:1px solid #dadada;clear:both;color:#666;font:24px Georgia,"Times New Roman",Times,serif;margin:5px 0 0 -4px;padding:0;padding-bottom:7px;}h2{font-size:16px;}p,li,dd,dt{padding-bottom:2px;font-size:12px;line-height:18px;}code,.code{font-size:13px;}ul,ol,dl{padding:5px 5px 5px 22px;}a img{border:0;}abbr{border:0;font-variant:normal;}#logo{margin:6px 0 14px 0;border-bottom:none;text-align:center;}.step{margin:20px 0 15px;}.step,th{text-align:left;padding:0;}.submit input,.button,.button-secondary{font-family:sans-serif;text-decoration:none;font-size:14px!important;line-height:16px;padding:6px 12px;cursor:pointer;border:1px solid #bbb;color:#464646;-moz-border-radius:15px;-khtml-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;-khtml-box-sizing:content-box;box-sizing:content-box;}.button:hover,.button-secondary:hover,.submit input:hover{color:#000;border-color:#666;}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top;}textarea{border:1px solid #bbb;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.form-table{border-collapse:collapse;margin-top:1em;width:100%;}.form-table td{margin-bottom:9px;padding:10px;border-bottom:8px solid #fff;font-size:12px;}.form-table th{font-size:13px;text-align:left;padding:16px 10px 10px 10px;border-bottom:8px solid #fff;width:130px;vertical-align:top;}.form-table tr{background:#f3f3f3;}.form-table code{line-height:18px;font-size:18px;}.form-table p{margin:4px 0 0 0;font-size:11px;}.form-table input{line-height:20px;font-size:15px;padding:2px;}.form-table th p{font-weight:normal;}#error-page{margin-top:50px;}#error-page p{font-size:12px;line-height:18px;margin:25px 0 20px;}#error-page code,.code{font-family:Consolas,Monaco,monospace;}#pass-strength-result{background-color:#eee;border-color:#ddd!important;border-style:solid;border-width:1px;margin:5px 5px 5px 1px;padding:5px;text-align:center;width:200px;display:none;}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important;}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;}.message{border:1px solid #e6db55;padding:.3em .6em;margin:5px 0 15px;background-color:#ffffe0;} \ No newline at end of file diff --git a/src/wp-admin/css/install.dev.css b/src/wp-admin/css/install.dev.css new file mode 100644 index 0000000..d1a389f --- /dev/null +++ b/src/wp-admin/css/install.dev.css @@ -0,0 +1,213 @@ +html { + background: #f9f9f9; +} + +body { + background: #fff; + color: #333; + font-family: sans-serif; + margin: 2em auto; + width: 700px; + padding: 1em 2em; + -moz-border-radius: 11px; + -khtml-border-radius: 11px; + -webkit-border-radius: 11px; + border-radius: 11px; + border: 1px solid #dfdfdf; +} + +a { + color: #2583ad; + text-decoration: none; +} + +a:hover { + color: #d54e21; +} + +h1 { + border-bottom: 1px solid #dadada; + clear: both; + color: #666; + font: 24px Georgia, "Times New Roman", Times, serif; + margin: 5px 0 0 -4px; + padding: 0; + padding-bottom: 7px; +} + +h2 { + font-size: 16px; +} + +p, li, dd, dt { + padding-bottom: 2px; + font-size: 12px; + line-height: 18px; +} + +code, .code { + font-size: 13px; +} + +ul, ol, dl { + padding: 5px 5px 5px 22px; +} + +a img { + border:0 +} +abbr { + border: 0; + font-variant: normal; +} +#logo { + margin: 6px 0 14px 0; + border-bottom: none; + text-align:center +} +.step { + margin: 20px 0 15px; +} +.step, th { + text-align: left; + padding: 0; +} + +.submit input, .button, .button-secondary { + font-family: sans-serif; + text-decoration: none; + font-size: 14px !important; + line-height: 16px; + padding: 6px 12px; + cursor: pointer; + border: 1px solid #bbb; + color: #464646; + -moz-border-radius: 15px; + -khtml-border-radius: 15px; + -webkit-border-radius: 15px; + border-radius: 15px; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + -khtml-box-sizing: content-box; + box-sizing: content-box; +} + +.button:hover, .button-secondary:hover, .submit input:hover { + color: #000; + border-color: #666; +} + +.button, .submit input, .button-secondary { + background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top; +} + +.button:active, .submit input:active, .button-secondary:active { + background: #eee url(../images/white-grad-active.png) repeat-x scroll left top; +} + +textarea { + border: 1px solid #bbb; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.form-table { + border-collapse: collapse; + margin-top: 1em; + width: 100%; +} + +.form-table td { + margin-bottom: 9px; + padding: 10px; + border-bottom: 8px solid #fff; + font-size: 12px; +} + +.form-table th { + font-size: 13px; + text-align: left; + padding: 16px 10px 10px 10px; + border-bottom: 8px solid #fff; + width: 130px; + vertical-align: top; +} + +.form-table tr { + background: #f3f3f3; +} + +.form-table code { + line-height: 18px; + font-size: 18px; +} + +.form-table p { + margin: 4px 0 0 0; + font-size: 11px; +} + +.form-table input { + line-height: 20px; + font-size: 15px; + padding: 2px; +} + +.form-table th p { + font-weight: normal; +} + +#error-page { + margin-top: 50px; +} + +#error-page p { + font-size: 12px; + line-height: 18px; + margin: 25px 0 20px; +} + +#error-page code, .code { + font-family: Consolas, Monaco, monospace; +} + +#pass-strength-result { + background-color: #eee; + border-color: #ddd !important; + border-style: solid; + border-width: 1px; + margin: 5px 5px 5px 1px; + padding: 5px; + text-align: center; + width: 200px; + display: none; +} + +#pass-strength-result.bad { + background-color: #ffb78c; + border-color: #ff853c !important; +} + +#pass-strength-result.good { + background-color: #ffec8b; + border-color: #ffcc00 !important; +} + +#pass-strength-result.short { + background-color: #ffa0a0; + border-color: #f04040 !important; +} + +#pass-strength-result.strong { + background-color: #c3ff88; + border-color: #8dff1c !important; +} + +.message { + border: 1px solid #e6db55; + padding: 0.3em 0.6em; + margin: 5px 0 15px; + background-color: #ffffe0; +} diff --git a/src/wp-admin/css/login-rtl.css b/src/wp-admin/css/login-rtl.css new file mode 100644 index 0000000..11040fa --- /dev/null +++ b/src/wp-admin/css/login-rtl.css @@ -0,0 +1 @@ +body{font-family:Tahoma,arial;}form{margin-right:8px;margin-left:0;}form .forgetmenot{float:right;}#login form .submit input{font-family:Tahoma,arial;}form .submit{float:left;}#backtoblog a{padding:8px 15px 0 0;}#login_error,.message{margin:0 8px 16px 0;}#nav{margin:0 8px 0 0;}#user_pass,#user_login,#user_email{margin-left:6px;margin-right:0;direction:ltr;}h1 a{text-decoration:none;} \ No newline at end of file diff --git a/src/wp-admin/css/login-rtl.dev.css b/src/wp-admin/css/login-rtl.dev.css new file mode 100644 index 0000000..954b320 --- /dev/null +++ b/src/wp-admin/css/login-rtl.dev.css @@ -0,0 +1,29 @@ +body { + font-family: Tahoma, arial; +} +form { + margin-right: 8px; + margin-left: 0; +} +form .forgetmenot { + float: right; +} +#login form .submit input { + font-family: Tahoma, arial; +} +form .submit { float: left; } +#backtoblog a { + padding: 8px 15px 0 0; +} +#login_error, .message { + margin: 0 8px 16px 0; +} +#nav { margin: 0 8px 0 0; } +#user_pass, #user_login, #user_email { + margin-left: 6px; + margin-right: 0; + direction:ltr; +} +h1 a { + text-decoration: none; +} diff --git a/src/wp-admin/css/login.css b/src/wp-admin/css/login.css new file mode 100644 index 0000000..d0e6f3d --- /dev/null +++ b/src/wp-admin/css/login.css @@ -0,0 +1 @@ +*{margin:0;padding:0;}html{background:#fbfbfb!important;}body{padding-top:30px;font-family:sans-serif;font-size:12px;}form{margin-left:8px;padding:26px 24px 46px;font-weight:normal;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background:#fff;border:1px solid #e5e5e5;-moz-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;-webkit-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;-khtml-box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;box-shadow:rgba(200,200,200,0.7) 0 4px 10px -1px;}form .forgetmenot{font-weight:normal;float:left;margin-bottom:0;}.button-primary{font-family:sans-serif;padding:3px 10px;border:none;font-size:13px;border-width:1px;border-style:solid;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;cursor:pointer;text-decoration:none;margin-top:-3px;}#login form p{margin-bottom:0;}label{color:#777;font-size:14px;}form .forgetmenot label{font-size:12px;line-height:19px;}form .submit,.alignright{float:right;}form p{margin-bottom:24px;}h1 a{background:url(../images/logo-login.png) no-repeat top center;width:326px;height:67px;text-indent:-9999px;overflow:hidden;padding-bottom:15px;display:block;}#login{width:320px;margin:7em auto;}#login_error,.message{margin:0 0 16px 8px;border-width:1px;border-style:solid;padding:12px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}#nav,#backtoblog{text-shadow:rgba(255,255,255,1) 0 1px 0;margin:0 0 0 16px;padding:16px 16px 0;}#backtoblog{padding:12px 16px 0;}body form .input{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:200;font-size:24px;width:97%;padding:3px;margin-top:2px;margin-right:6px;margin-bottom:16px;border:1px solid #e5e5e5;background:#fbfbfb;outline:none;-moz-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);-webkit-box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);box-shadow:inset 1px 1px 2px rgba(200,200,200,0.2);}input{color:#555;}.clear{clear:both;}#pass-strength-result{font-weight:bold;border-style:solid;border-width:1px;margin:12px 0 6px;padding:6px 5px;text-align:center;} \ No newline at end of file diff --git a/src/wp-admin/css/login.dev.css b/src/wp-admin/css/login.dev.css new file mode 100644 index 0000000..3dc5b79 --- /dev/null +++ b/src/wp-admin/css/login.dev.css @@ -0,0 +1,144 @@ +* { margin: 0; padding: 0; } + +html { + background: #fbfbfb !important; +} + +body { + padding-top: 30px; + font-family: sans-serif; + font-size: 12px; +} + +form { + margin-left: 8px; + padding: 26px 24px 46px; + font-weight: normal; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: #fff; + border: 1px solid #e5e5e5; + -moz-box-shadow: rgba(200, 200, 200, 0.7) 0px 4px 10px -1px; + -webkit-box-shadow: rgba(200, 200, 200, 0.7) 0px 4px 10px -1px; + -khtml-box-shadow: rgba(200, 200, 200, 0.7) 0px 4px 10px -1px; + box-shadow: rgba(200, 200, 200, 0.7) 0px 4px 10px -1px; +} + +form .forgetmenot { + font-weight: normal; + float: left; + margin-bottom: 0; +} + +.button-primary { + font-family: sans-serif; + padding: 3px 10px; + border: none; + font-size: 13px; + border-width: 1px; + border-style: solid; + -moz-border-radius: 11px; + -khtml-border-radius: 11px; + -webkit-border-radius: 11px; + border-radius: 11px; + cursor: pointer; + text-decoration: none; + margin-top: -3px; +} + +#login form p { + margin-bottom: 0; +} + +label { + color: #777; + font-size: 14px; +} + +form .forgetmenot label { + font-size: 12px; + line-height: 19px; +} + +form .submit, +.alignright { + float: right; +} + +form p { + margin-bottom: 24px; +} + +h1 a { + background: url(../images/logo-login.png) no-repeat top center; + width: 326px; + height: 67px; + text-indent: -9999px; + overflow: hidden; + padding-bottom: 15px; + display: block; +} + +#login { + width: 320px; + margin: 7em auto; +} + +#login_error, +.message { + margin: 0 0 16px 8px; + border-width: 1px; + border-style: solid; + padding: 12px; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +#nav, +#backtoblog { + text-shadow: rgba(255,255,255,1) 0 1px 0; + margin: 0 0 0 16px; + padding: 16px 16px 0; +} +#backtoblog { + padding: 12px 16px 0; +} + +body form .input { + font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif; + font-weight: 200; + font-size: 24px; + width: 97%; + padding: 3px; + margin-top: 2px; + margin-right: 6px; + margin-bottom: 16px; + border: 1px solid #e5e5e5; + background: #fbfbfb; + outline: none; + -moz-box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2); + -webkit-box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2); + box-shadow: inset 1px 1px 2px rgba(200, 200, 200, 0.2); +} + +input { + color: #555; +} + +.clear { + clear: both; +} + +#pass-strength-result { + font-weight: bold; + border-style: solid; + border-width: 1px; + margin: 12px 0 6px; + padding: 6px 5px; + text-align: center; +} + diff --git a/src/wp-admin/css/media-rtl.css b/src/wp-admin/css/media-rtl.css new file mode 100644 index 0000000..19d7366 --- /dev/null +++ b/src/wp-admin/css/media-rtl.css @@ -0,0 +1 @@ +body#media-upload ul#sidemenu{left:auto;right:0;}#search-filter{text-align:left;}.align .field label{padding:0 28px 0 0;margin:0 0 0 1em;}.image-align-none-label,.image-align-left-label,.image-align-center-label,.image-align-right-label{background-position:center right;}tr.image-size div.image-size-item{float:right;}tr.image-size label{margin:0 1em 0 0;}.crunching{text-align:left;margin-right:0;margin-left:5px;}button.dismiss{right:auto;left:5px;}.file-error{margin:0 50px 5px 0;}.progress{left:auto;right:0;}.describe td{padding:0 0 0 5px;}.bar{border-right-width:0;border-left-width:3px;border-right-style:none;border-left-style:solid;}#media-upload .media-upload-form p{margin:0 0 1em 1em;}#media-upload .describe th.label{text-align:right;}.menu_order{float:left;}.media-upload-form label.form-help,td.help,#media-upload p.help,#media-upload label.help{font-family:Tahoma,Arial;}#gallery-settings #basic th.label{padding:5px 0 5px 5px;}#gallery-settings .title,h3.media-title{font-family:Tahoma,Arial;}#gallery-settings .describe th.label{text-align:right;}#gallery-settings label,#gallery-settings legend{margin-right:0;margin-left:15px;}#gallery-settings .align .field label{margin:0 0 0 1.5em;}#sort-buttons{margin:3px 0 -8px 25px;text-align:left;}#sort-buttons #asc,#sort-buttons #showall{padding-left:0;padding-right:5px;}#sort-buttons span{margin-right:0;margin-left:25px;} \ No newline at end of file diff --git a/src/wp-admin/css/media-rtl.dev.css b/src/wp-admin/css/media-rtl.dev.css new file mode 100644 index 0000000..efa1e2e --- /dev/null +++ b/src/wp-admin/css/media-rtl.dev.css @@ -0,0 +1,92 @@ +body#media-upload ul#sidemenu { + left: auto; + right: 0; +} +#search-filter { + text-align: left; +} +/* specific to the image upload form */ +.align .field label { + padding: 0 28px 0 0; + margin: 0 0 0 1em; +} +.image-align-none-label, .image-align-left-label, .image-align-center-label, .image-align-right-label { + background-position: center right; +} +tr.image-size div.image-size-item { + float: right; +} +tr.image-size label { + margin: 0 1em 0 0; +} +.crunching { + text-align: left; + margin-right: 0; + margin-left: 5px; +} +button.dismiss { + right: auto; + left: 5px; +} +.file-error { + margin: 0 50px 5px 0; +} +.progress { + left: auto; + right: 0; +} +.describe td { + padding: 0 0 0 5px; +} +.bar { + border-right-width: 0; + border-left-width: 3px; + border-right-style: none; + border-left-style: solid; +} + +/* Specific to Uploader */ +#media-upload .media-upload-form p { + margin: 0 0 1em 1em; +} +#media-upload .describe th.label { + text-align: right; +} +.menu_order { + float: left; +} +.media-upload-form label.form-help, td.help, #media-upload p.help, #media-upload label.help { + font-family: Tahoma, Arial; +} +#gallery-settings #basic th.label { + padding: 5px 0 5px 5px; +} +#gallery-settings .title, h3.media-title { + font-family: Tahoma, Arial; +} +#gallery-settings .describe th.label { + text-align: right; +} +#gallery-settings label, +#gallery-settings legend { + margin-right: 0; + margin-left: 15px; +} +#gallery-settings .align .field label { + margin: 0 0 0 1.5em; +} +#sort-buttons { + margin: 3px 0 -8px 25px; + text-align: left; +} + +#sort-buttons #asc, +#sort-buttons #showall { + padding-left: 0; + padding-right: 5px; +} + +#sort-buttons span { + margin-right: 0; + margin-left: 25px; +} diff --git a/src/wp-admin/css/media.css b/src/wp-admin/css/media.css new file mode 100644 index 0000000..157ecdf --- /dev/null +++ b/src/wp-admin/css/media.css @@ -0,0 +1 @@ +div#media-upload-header{margin:0;padding:0 5px;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid;}body#media-upload ul#sidemenu{font-weight:normal;margin:0 5px;left:0;bottom:-1px;float:none;overflow:hidden;}div#media-upload-error{margin:1em;font-weight:bold;}form{margin:1em;}#search-filter{text-align:right;}th{position:relative;}.media-upload-form label.form-help,td.help{font-family:sans-serif;font-style:italic;font-weight:normal;}.media-upload-form p.help{margin:0;padding:0;}.media-upload-form fieldset{width:100%;border:none;text-align:justify;margin:0 0 1em 0;padding:0;}.image-align-none-label{background:url(../images/align-none.png) no-repeat center left;}.image-align-left-label{background:url(../images/align-left.png) no-repeat center left;}.image-align-center-label{background:url(../images/align-center.png) no-repeat center left;}.image-align-right-label{background:url(../images/align-right.png) no-repeat center left;}tr.image-size td{width:460px;}tr.image-size div.image-size-item{float:left;width:25%;margin:0;}#library-form .progress,#gallery-form .progress,.insert-gallery,.describe.startopen,.describe.startclosed{display:none;}.media-item .thumbnail{max-width:128px;max-height:128px;}thead.media-item-info tr{background-color:transparent;}thead.media-item-info th,thead.media-item-info td{border:none;margin:0;}.form-table thead.media-item-info{border:8px solid #fff;}abbr.required{text-decoration:none;border:none;}.describe label{display:inline;}.describe td{vertical-align:middle;padding:0 5px 8px 0;}.describe td.error{padding:2px 8px;}.describe td.A1{width:132px;}.describe input[type="text"],.describe textarea{width:460px;border-width:1px;border-style:solid;}.hidden{height:0;width:0;overflow:hidden;border:none;}#media-upload p.ml-submit{padding:1em 0;}#media-upload p.help,#media-upload label.help{font-family:sans-serif;font-style:italic;font-weight:normal;}#media-upload tr.image-size td.field{text-align:center;}#media-upload #media-items{border-width:1px;border-style:solid;border-bottom:none;width:623px;}#media-upload .media-item{border-bottom-width:1px;border-bottom-style:solid;min-height:36px;width:100%;}#media-upload .ui-sortable .media-item{cursor:move;}.filename{line-height:36px;padding:0 10px;overflow:hidden;}#media-upload .describe{width:100%;clear:both;cursor:default;}#media-upload .slidetoggle{border-top-width:1px;border-top-style:solid;}#media-upload .describe th.label{padding-top:.2em;text-align:left;min-width:120px;}#media-upload tr.align td.field{text-align:center;}#media-upload tr.image-size{margin-bottom:1em;height:3em;}#media-upload #filter{width:623px;}#media-upload #filter .subsubsub{margin:8px 0;}#filter .tablenav select{border-style:solid;border-width:1px;padding:2px;vertical-align:top;width:auto;}#media-upload .del-attachment{display:none;margin:5px 0;}.menu_order{float:right;font-size:11px;margin:10px 10px 0;}.menu_order_input{border:1px solid #ddd;font-size:10px;padding:1px;width:23px;}.ui-sortable-helper{background-color:#fff;border:1px solid #aaa;opacity:.6;filter:alpha(opacity=60);}#media-upload th.order-head{width:20%;text-align:center;}#media-upload th.actions-head{width:25%;text-align:center;}#media-upload a.wp-post-thumbnail{margin:0 20px;}#media-items a.delete{display:block;float:right;}#media-upload .widefat{width:626px;border-style:solid solid none;}.sorthelper{height:37px;width:623px;display:block;}#gallery-settings th.label{width:160px;}#gallery-settings #basic th.label{padding:5px 5px 5px 0;}#gallery-settings .title{clear:both;padding:0 0 3px;font-size:1.6em;border-bottom:1px solid #DADADA;}h3.media-title{font-size:1.6em;}h4.media-sub-title{border-bottom:1px solid #DADADA;font-size:1.3em;margin:12px;padding:0 0 3px;}#gallery-settings .title,h3.media-title,h4.media-sub-title{font-family:Georgia,"Times New Roman",Times,serif;font-weight:normal;color:#5A5A5A;}#gallery-settings .describe td{vertical-align:middle;height:3em;}#gallery-settings .describe th.label{padding-top:.5em;text-align:left;}#gallery-settings .describe{padding:5px;width:615px;clear:both;cursor:default;}#gallery-settings .describe select{width:15em;}#gallery-settings .describe select option,#gallery-settings .describe td{padding:0;}#gallery-settings label,#gallery-settings legend{font-size:13px;color:#464646;margin-right:15px;}#gallery-settings .align .field label{margin:0 1.5em 0 0;}#gallery-settings p.ml-submit{border-top:1px solid #dfdfdf;}#gallery-settings select#columns{width:6em;}#sort-buttons{font-size:.8em;margin:3px 25px -8px 0;text-align:right;max-width:625px;}#sort-buttons a{text-decoration:none;}#sort-buttons #asc,#sort-buttons #showall{padding-left:5px;}#sort-buttons span{margin-right:25px;} \ No newline at end of file diff --git a/src/wp-admin/css/media.dev.css b/src/wp-admin/css/media.dev.css new file mode 100644 index 0000000..f439f49 --- /dev/null +++ b/src/wp-admin/css/media.dev.css @@ -0,0 +1,382 @@ +div#media-upload-header { + margin: 0; + padding: 0 5px; + font-weight: bold; + position: relative; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +body#media-upload ul#sidemenu { + font-weight: normal; + margin: 0 5px; + left: 0; + bottom: -1px; + float: none; + overflow: hidden; +} + +div#media-upload-error { + margin: 1em; + font-weight: bold; +} + +form { + margin: 1em; +} + +#search-filter { + text-align: right; +} + +th { + position: relative; +} + +.media-upload-form label.form-help, td.help { + font-family: sans-serif; + font-style: italic; + font-weight: normal; +} + +.media-upload-form p.help { + margin: 0; + padding: 0; +} + +.media-upload-form fieldset { + width: 100%; + border: none; + text-align: justify; + margin: 0 0 1em 0; + padding: 0; +} + +/* specific to the image upload form */ + + +.image-align-none-label { + background: url(../images/align-none.png) no-repeat center left; +} + +.image-align-left-label { + background: url(../images/align-left.png) no-repeat center left; +} + +.image-align-center-label { + background: url(../images/align-center.png) no-repeat center left; +} + +.image-align-right-label { + background: url(../images/align-right.png) no-repeat center left; +} + +tr.image-size td { + width: 460px; +} + +tr.image-size div.image-size-item { + float: left; + width: 25%; + margin: 0; +} + +#library-form .progress, +#gallery-form .progress, +.insert-gallery, +.describe.startopen, +.describe.startclosed { + display: none; +} + +.media-item .thumbnail { + max-width: 128px; + max-height: 128px; +} + +thead.media-item-info tr { + background-color: transparent; +} + +thead.media-item-info th, +thead.media-item-info td { + border: none; + margin: 0; +} + +.form-table thead.media-item-info { + border: 8px solid #fff; +} + +abbr.required { + text-decoration: none; + border: none; +} + +.describe label { + display: inline; +} + +.describe td { + vertical-align: middle; + padding: 0 5px 8px 0; +} + +.describe td.error { + padding: 2px 8px; +} + +.describe td.A1 { + width: 132px; +} + +.describe input[type="text"], +.describe textarea { + width: 460px; + border-width: 1px; + border-style: solid; +} + +.hidden { + height: 0; + width: 0; + overflow: hidden; + border: none; +} + +/* Specific to Uploader */ + +#media-upload p.ml-submit { + padding: 1em 0; +} + +#media-upload p.help, +#media-upload label.help { + font-family: sans-serif; + font-style: italic; + font-weight: normal; +} + +#media-upload tr.image-size td.field { + text-align: center; +} + +#media-upload #media-items { + border-width: 1px; + border-style: solid; + border-bottom: none; + width: 623px; +} + +#media-upload .media-item { + border-bottom-width: 1px; + border-bottom-style: solid; + min-height: 36px; + width: 100%; +} + +#media-upload .ui-sortable .media-item { + cursor: move; +} + +.filename { + line-height: 36px; + padding: 0 10px; + overflow: hidden; +} + +#media-upload .describe { + width: 100%; + clear: both; + cursor: default; +} + +#media-upload .slidetoggle { + border-top-width: 1px; + border-top-style: solid; +} + +#media-upload .describe th.label { + padding-top: .2em; + text-align: left; + min-width: 120px; +} + +#media-upload tr.align td.field { + text-align: center; +} + +#media-upload tr.image-size { + margin-bottom: 1em; + height: 3em; +} + +#media-upload #filter { + width: 623px; +} + +#media-upload #filter .subsubsub { + margin: 8px 0; +} + +#filter .tablenav select { + border-style: solid; + border-width: 1px; + padding: 2px; + vertical-align: top; + width: auto; +} + +#media-upload .del-attachment { + display: none; + margin: 5px 0; +} + +.menu_order { + float: right; + font-size: 11px; + margin: 10px 10px 0; +} + +.menu_order_input { + border: 1px solid #ddd; + font-size: 10px; + padding: 1px; + width: 23px; +} + +.ui-sortable-helper { + background-color: #fff; + border: 1px solid #aaa; + opacity: 0.6; + filter: alpha(opacity=60); +} + +#media-upload th.order-head { + width: 20%; + text-align: center; +} + +#media-upload th.actions-head { + width: 25%; + text-align: center; +} + +#media-upload a.wp-post-thumbnail { + margin: 0 20px; +} + +#media-items a.delete { + display: block; + float: right; +} + +#media-upload .widefat { + width: 626px; + border-style: solid solid none; +} + +.sorthelper { + height: 37px; + width: 623px; + display: block; +} + +#gallery-settings th.label { + width: 160px; +} + +#gallery-settings #basic th.label { + padding: 5px 5px 5px 0; +} + +#gallery-settings .title { + clear: both; + padding: 0 0 3px; + font-size: 1.6em; + border-bottom: 1px solid #DADADA; +} + +h3.media-title { + font-size: 1.6em; +} + +h4.media-sub-title { + border-bottom: 1px solid #DADADA; + font-size: 1.3em; + margin: 12px; + padding: 0 0 3px; +} + +#gallery-settings .title, +h3.media-title, +h4.media-sub-title { + font-family: Georgia,"Times New Roman",Times,serif; + font-weight: normal; + color: #5A5A5A; +} + +#gallery-settings .describe td { + vertical-align: middle; + height: 3em; +} + +#gallery-settings .describe th.label { + padding-top: .5em; + text-align: left; +} + +#gallery-settings .describe { + padding: 5px; + width: 615px; + clear: both; + cursor: default; +} + +#gallery-settings .describe select { + width: 15em; +} + +#gallery-settings .describe select option, +#gallery-settings .describe td { + padding: 0; +} + +#gallery-settings label, +#gallery-settings legend { + font-size: 13px; + color: #464646; + margin-right: 15px; +} + +#gallery-settings .align .field label { + margin: 0 1.5em 0 0; +} + +#gallery-settings p.ml-submit { + border-top: 1px solid #dfdfdf; +} + +#gallery-settings select#columns { + width: 6em; +} + +#sort-buttons { + font-size: 0.8em; + margin: 3px 25px -8px 0; + text-align: right; + max-width: 625px; +} + +#sort-buttons a { + text-decoration: none; +} + +#sort-buttons #asc, +#sort-buttons #showall { + padding-left: 5px; +} + +#sort-buttons span { + margin-right: 25px; +} diff --git a/src/wp-admin/css/ms.css b/src/wp-admin/css/ms.css new file mode 100644 index 0000000..29d9d54 --- /dev/null +++ b/src/wp-admin/css/ms.css @@ -0,0 +1 @@ +#dashboard_right_now p.musub{margin-top:12px;border-top:1px solid #ececec;padding-left:16px;position:static;}.rtl #dashboard_right_now p.musub{padding-left:0;padding-right:16px;}#dashboard_right_now td.b a.musublink{font-size:16px;}#dashboard_right_now div.musubtable{border-top:none;}#dashboard_right_now div.musubtable .t{white-space:normal;}.wp-list-table .site-deleted{background:#ff8573;}.wp-list-table .site-spammed{background:#faafaa;}.wp-list-table .site-archived{background:#ffebe8;}.wp-list-table .site-mature{background:#fecac2;} \ No newline at end of file diff --git a/src/wp-admin/css/ms.dev.css b/src/wp-admin/css/ms.dev.css new file mode 100644 index 0000000..5a5e749 --- /dev/null +++ b/src/wp-admin/css/ms.dev.css @@ -0,0 +1,38 @@ +/* Dashboard: MS Specific Data */ +#dashboard_right_now p.musub { + margin-top: 12px; + border-top: 1px solid #ececec; + padding-left: 16px; + position: static; +} + +.rtl #dashboard_right_now p.musub { + padding-left: 0; + padding-right: 16px; +} + +#dashboard_right_now td.b a.musublink { + font-size: 16px; +} + +#dashboard_right_now div.musubtable { + border-top: none; +} + +#dashboard_right_now div.musubtable .t { + white-space: normal; +} + +/* Background Color for Site Status */ +.wp-list-table .site-deleted { + background: #ff8573; +} +.wp-list-table .site-spammed { + background: #faafaa; +} +.wp-list-table .site-archived { + background: #ffebe8; +} +.wp-list-table .site-mature { + background: #fecac2; +} diff --git a/src/wp-admin/css/nav-menu-rtl.css b/src/wp-admin/css/nav-menu-rtl.css new file mode 100644 index 0000000..639f5e9 --- /dev/null +++ b/src/wp-admin/css/nav-menu-rtl.css @@ -0,0 +1 @@ +#nav-menus-frame{margin-right:300px;margin-left:0;}#wpbody-content #menu-settings-column{margin-right:-300px;margin-left:0;float:right;}#menu-management-liquid{float:right;}#menu-management{margin-left:20px;margin-right:0;}#post-body{padding:0 10px 10px 0;}.post-body-plain{padding:10px 0 0 10px;}#menu-management .nav-tabs-arrow-left{right:0;left:auto;}#menu-management .nav-tabs-arrow-right{left:0;right:auto;text-align:left;font-family:Tahoma,Arial,sans-serif;}#menu-management .nav-tabs{padding-right:20px;padding-left:10px;}.js #menu-management .nav-tabs{float:right;margin-right:0;margin-left:-400px;}#select-nav-menu-container{text-align:left;}#wpbody .open-label{float:right;}#wpbody .open-label span{padding-left:10px;padding-right:0;}.js .input-with-default-title{font-style:normal;font-weight:bold;}.postbox .howto input{float:left;}#nav-menu-theme-locations .button-controls{text-align:left;}.meta-sep,.submitdelete,.submitcancel{float:right;}#cancel-save{margin-left:0;margin-right:20px;}.list-controls{float:right;}.add-to-menu{float:left;}#add-custom-link label span{float:right;padding-left:5px;padding-right:0;}.howto span{float:right;}.list li .menu-item-title input{margin-left:3px;margin-right:0;}.menu-item-handle{padding-right:10px;padding-left:0;}.menu-item-edit-active .menu-item-handle{-moz-border-radius:3px 3px 0 0;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;}.menu-item-handle .item-title{margin-left:13em;margin-right:0;}.menu-item-depth-0{margin-right:0;margin-left:0;}.menu-item-depth-1{margin-right:30px;margin-left:0;}.menu-item-depth-2{margin-right:60px;margin-left:0;}.menu-item-depth-3{margin-right:90px;margin-left:0;}.menu-item-depth-4{margin-right:120px;margin-left:0;}.menu-item-depth-5{margin-right:150px;margin-left:0;}.menu-item-depth-6{margin-right:180px;margin-left:0;}.menu-item-depth-7{margin-right:210px;margin-left:0;}.menu-item-depth-8{margin-right:240px;margin-left:0;}.menu-item-depth-9{margin-right:270px;margin-left:0;}.menu-item-depth-10{margin-right:300px;margin-left:0;}.menu-item-depth-11{margin-right:330px;margin-left:0;}.menu-item-depth-0 .menu-item-transport{margin-right:0;margin-left:0;}.menu-item-depth-1 .menu-item-transport{margin-right:-30px;margin-left:0;}.menu-item-depth-2 .menu-item-transport{margin-right:-60px;margin-left:0;}.menu-item-depth-3 .menu-item-transport{margin-right:-90px;margin-left:0;}.menu-item-depth-4 .menu-item-transport{margin-right:-120px;margin-left:0;}.menu-item-depth-5 .menu-item-transport{margin-right:-150px;margin-left:0;}.menu-item-depth-6 .menu-item-transport{margin-right:-180px;margin-left:0;}.menu-item-depth-7 .menu-item-transport{margin-right:-210px;margin-left:0;}.menu-item-depth-8 .menu-item-transport{margin-right:-240px;margin-left:0;}.menu-item-depth-9 .menu-item-transport{margin-right:-270px;margin-left:0;}.menu-item-depth-10 .menu-item-transport{margin-right:-300px;margin-left:0;}.menu-item-depth-11 .menu-item-transport{margin-right:-330px;margin-left:0;}.item-type{padding-left:10px;padding-right:0;}.item-controls{left:20px;right:auto;}.item-controls .item-order{padding-left:10px;padding-right:0;}.item-edit{left:-20px;right:auto;-moz-border-radius-bottomright:3px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:3px;-khtml-border-bottom-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0;}.menu-item-settings{padding:10px 10px 10px 0;border-width:0 1px 1px 1px;}.link-to-original{font-style:normal;font-weight:bold;}.link-to-original a{padding-right:4px;padding-left:0;}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;margin-right:0;float:right;}.major-publishing-actions .publishing-action{text-align:left;float:left;}.major-publishing-actions .delete-action{text-align:right;float:right;padding-left:15px;padding-right:0;}.menu-name-label{margin-left:15px;margin-right:0;}.auto-add-pages{float:right;} \ No newline at end of file diff --git a/src/wp-admin/css/nav-menu-rtl.dev.css b/src/wp-admin/css/nav-menu-rtl.dev.css new file mode 100644 index 0000000..69d8797 --- /dev/null +++ b/src/wp-admin/css/nav-menu-rtl.dev.css @@ -0,0 +1,210 @@ +#nav-menus-frame { + margin-right: 300px; + margin-left: 0; +} + +#wpbody-content #menu-settings-column { + margin-right: -300px; + margin-left: 0; + float: right; +} + +/* Menu Container */ +#menu-management-liquid { + float: right; +} +#menu-management { + margin-left: 20px; + margin-right: 0; +} + + + #post-body { + padding:0 10px 10px 0; + } + + .post-body-plain { + padding: 10px 0 0 10px; + } + +/* Menu Tabs */ + + #menu-management .nav-tabs-arrow-left { + right: 0; + left:auto; + } + #menu-management .nav-tabs-arrow-right { + left: 0; + right:auto; + text-align: left; + font-family: Tahoma, Arial, sans-serif; + } + +#menu-management .nav-tabs { + padding-right: 20px; + padding-left: 10px; +} +.js #menu-management .nav-tabs { + float: right; + margin-right: 0px; + margin-left: -400px; +} + +#select-nav-menu-container { + text-align: left; +} + +#wpbody .open-label { + float:right; +} + +#wpbody .open-label span { + padding-left: 10px; + padding-right:0; +} + + .js .input-with-default-title { + font-style: normal; + font-weight:bold; + } + +/* Add Menu Item Boxes */ +.postbox .howto input { + float: left; +} +#nav-menu-theme-locations .button-controls { + text-align: left; +} + +/* Button Primary Actions */ + +.meta-sep, +.submitdelete, +.submitcancel { + float:right; +} + +#cancel-save { + margin-left: 0; + margin-right: 20px; +} + +/* Button Secondary Actions */ +.list-controls { + float: right; +} +.add-to-menu { + float: left; +} + +/* Custom Links */ +#add-custom-link label span { float: right; padding-left: 5px; padding-right:0;} +.howto span { float: right; } + +.list li .menu-item-title input { margin-left: 3px; margin-right: 0 } + +/* Nav Menu */ +.menu-item-handle { + padding-right: 10px; + padding-left: 0; +} +.menu-item-edit-active .menu-item-handle { + -moz-border-radius: 3px 3px 0 0; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 0; + -khtml-border-bottom-left-radius: 0; + -khtml-border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} +.menu-item-handle .item-title { + margin-left:13em; + margin-right:0; +} + + +/* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */ +.menu-item-depth-0 { margin-right: 0px; margin-left:0;} +.menu-item-depth-1 { margin-right: 30px; margin-left:0;} +.menu-item-depth-2 { margin-right: 60px; margin-left:0;} +.menu-item-depth-3 { margin-right: 90px; margin-left:0;} +.menu-item-depth-4 { margin-right: 120px; margin-left:0;} +.menu-item-depth-5 { margin-right: 150px; margin-left:0;} +.menu-item-depth-6 { margin-right: 180px; margin-left:0;} +.menu-item-depth-7 { margin-right: 210px; margin-left:0;} +.menu-item-depth-8 { margin-right: 240px; margin-left:0;} +.menu-item-depth-9 { margin-right: 270px; margin-left:0;} +.menu-item-depth-10 { margin-right: 300px; margin-left:0;} +.menu-item-depth-11 { margin-right: 330px; margin-left:0;} + +.menu-item-depth-0 .menu-item-transport { margin-right: 0px; margin-left:0;} +.menu-item-depth-1 .menu-item-transport { margin-right: -30px; margin-left:0;} +.menu-item-depth-2 .menu-item-transport { margin-right: -60px; margin-left:0;} +.menu-item-depth-3 .menu-item-transport { margin-right: -90px; margin-left:0;} +.menu-item-depth-4 .menu-item-transport { margin-right: -120px; margin-left:0;} +.menu-item-depth-5 .menu-item-transport { margin-right: -150px; margin-left:0;} +.menu-item-depth-6 .menu-item-transport { margin-right: -180px; margin-left:0;} +.menu-item-depth-7 .menu-item-transport { margin-right: -210px; margin-left:0;} +.menu-item-depth-8 .menu-item-transport { margin-right: -240px; margin-left:0;} +.menu-item-depth-9 .menu-item-transport { margin-right: -270px; margin-left:0;} +.menu-item-depth-10 .menu-item-transport { margin-right: -300px; margin-left:0;} +.menu-item-depth-11 .menu-item-transport { margin-right: -330px; margin-left:0;} + +/* Menu item controls */ +.item-type { padding-left: 10px; padding-right:0;} +.item-controls { left: 20px; right: auto;} +.item-controls .item-order { padding-left: 10px; padding-right: 0;} + +.item-edit { + left: -20px; + right:auto; + -moz-border-radius-bottomright: 3px; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 0; + -khtml-border-bottom-right-radius: 3px; + -khtml-border-bottom-left-radius: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 0; +} + +/* Menu editing */ +.menu-item-settings { + padding: 10px 10px 10px 0; + border-width: 0 1px 1px 1px; +} + +.link-to-original { + font-style: normal; + font-weight: bold; +} + .link-to-original a { + padding-right: 4px; + padding-left:0; + } + +.menu-item-settings .description-thin, +.menu-item-settings .description-wide { + margin-left: 10px; + margin-right:0; + float: right; +} + +/* Major/minor publishing actions (classes) */ +.major-publishing-actions .publishing-action { + text-align: left; + float: left; +} +.major-publishing-actions .delete-action { + text-align: right; + float: right; + padding-left: 15px; + padding-right:0; +} +.menu-name-label { + margin-left: 15px; + margin-right:0; +} +.auto-add-pages { + float: right; +} \ No newline at end of file diff --git a/src/wp-admin/css/nav-menu.css b/src/wp-admin/css/nav-menu.css new file mode 100644 index 0000000..a1f5677 --- /dev/null +++ b/src/wp-admin/css/nav-menu.css @@ -0,0 +1 @@ +html,body{min-width:950px;}#nav-menus-frame{margin-left:300px;}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:24px;}.no-js #wpbody-content #menu-settings-column{padding-top:31px;}#menu-settings-column .inside{clear:both;}.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50);}.metabox-holder-disabled .button-controls .select-all{display:none;}#wpbody{position:relative;}#menu-management-liquid{float:left;min-width:100%;}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%;}#menu-management .menu-edit{border:1px solid;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;margin-bottom:20px;}#post-body{padding:10px;border-width:1px 0;border-style:solid;}#nav-menu-header,#nav-menu-footer{padding:0 10px;}#nav-menu-header{border-bottom:1px solid;}#nav-menu-footer{border-top:1px solid;}#post-body div.updated,#post-body div.error{margin:0;}#post-body-content{position:relative;}#menu-management .menu-add-new abbr{font-weight:bold;}#menu-management .nav-tabs-nav{margin:0 20px;}#menu-management .nav-tabs-arrow{width:10px;padding:0 5px 4px;cursor:pointer;position:absolute;top:0;line-height:22px;font-size:18px;text-shadow:0 1px 0 #fff;}#menu-management .nav-tabs-arrow-left{left:0;}#menu-management .nav-tabs-arrow-right{right:0;text-align:right;}#menu-management .nav-tabs-wrapper{width:100%;height:28px;margin-bottom:-1px;overflow:hidden;}#menu-management .nav-tabs{padding-left:20px;padding-right:10px;}.js #menu-management .nav-tabs{float:left;margin-left:0;margin-right:-400px;}#menu-management .nav-tab{margin-bottom:0;font-size:14px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;}#select-nav-menu-container{text-align:right;padding:0 10px 3px 10px;margin-bottom:5px;}#select-nav-menu{width:100px;display:inline;}#menu-name-label{margin-top:-2px;}#wpbody .open-label{display:block;float:left;}#wpbody .open-label span{padding-right:10px;}.js .input-with-default-title{font-style:italic;}#menu-management .inside{padding:0 10px;}.postbox .howto input{width:180px;float:right;}.customlinkdiv .howto input{width:200px;}#nav-menu-theme-locations .howto select{width:100%;}#nav-menu-theme-locations .button-controls{text-align:right;}.add-menu-item-view-all{height:400px;}#menu-container .submit{margin:0 0 10px;padding:0;}.meta-sep,.submitdelete,.submitcancel{display:block;float:left;font-size:12px;margin:4px 0;line-height:15px;}.meta-sep{padding:0 2px;}#cancel-save{text-decoration:underline;font-size:12px;margin-left:20px;margin-top:5px;}.list-controls{float:left;margin-top:5px;}.add-to-menu{float:right;}.postbox img.waiting{display:none;vertical-align:middle;}.button-controls{clear:both;margin:10px 0;}.show-all,.hide-all{cursor:pointer;}.hide-all{display:none;}#menu-name{width:270px;}#manage-menu .inside{padding:0;}#available-links dt{display:block;}#add-custom-link .howto{font-size:12px;}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px;}.menu-item-textbox{width:180px;}.howto span{margin-top:4px;display:block;float:left;}.quick-search{width:190px;}.list-wrap{display:none;clear:both;margin-bottom:10px;}.list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px;border:1px solid;-moz-border-radius:3px;}.postbox p.submit{margin-bottom:0;}.list li{display:none;margin:0;margin-bottom:5px;}.list li .menu-item-title{cursor:pointer;display:block;}.list li .menu-item-title input{margin-right:3px;margin-top:-3px;}#menu-container .inside{padding-bottom:10px;}.menu{padding-top:1em;}#menu-to-edit{padding:1em 0;}.menu ul{width:100%;}.menu li{margin-bottom:0;position:relative;}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin-top:13px;}.menu-item-handle{border:1px solid #dfdfdf;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #FFF;overflow:hidden;word-wrap:break-word;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;-khtml-border-radius:3px;}#menu-to-edit .menu-item-invalid .menu-item-handle{background-color:#f6c9cc;background-image:-ms-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-moz-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-o-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:-webkit-gradient(linear,left bottom,left top,from(#f6c9cc),to(#fdf8ff));background-image:-webkit-linear-gradient(bottom,#f6c9cc,#fdf8ff);background-image:linear-gradient(bottom,#f6c9cc,#fdf8ff);}.menu-item-edit-active .menu-item-handle{-moz-border-radius:3px 3px 0 0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;}.no-js .menu-item-edit-active .item-edit{display:none;}.js .menu-item-handle{cursor:move;}.menu li.deleting .menu-item-handle{background-image:none;text-shadow:0;}.menu-item-handle .item-title{font-size:12px;font-weight:bold;padding:7px 0;line-height:20px;display:block;margin-right:13em;}li.menu-item.ui-sortable-helper dl{margin-top:0;}li.menu-item.ui-sortable-helper .menu-item-transport dl{margin-top:13px;}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px;}.menu-item-depth-0{margin-left:0;}.menu-item-depth-1{margin-left:30px;}.menu-item-depth-2{margin-left:60px;}.menu-item-depth-3{margin-left:90px;}.menu-item-depth-4{margin-left:120px;}.menu-item-depth-5{margin-left:150px;}.menu-item-depth-6{margin-left:180px;}.menu-item-depth-7{margin-left:210px;}.menu-item-depth-8{margin-left:240px;}.menu-item-depth-9{margin-left:270px;}.menu-item-depth-10{margin-left:300px;}.menu-item-depth-11{margin-left:330px;}.menu-item-depth-0 .menu-item-transport{margin-left:0;}.menu-item-depth-1 .menu-item-transport{margin-left:-30px;}.menu-item-depth-2 .menu-item-transport{margin-left:-60px;}.menu-item-depth-3 .menu-item-transport{margin-left:-90px;}.menu-item-depth-4 .menu-item-transport{margin-left:-120px;}.menu-item-depth-5 .menu-item-transport{margin-left:-150px;}.menu-item-depth-6 .menu-item-transport{margin-left:-180px;}.menu-item-depth-7 .menu-item-transport{margin-left:-210px;}.menu-item-depth-8 .menu-item-transport{margin-left:-240px;}.menu-item-depth-9 .menu-item-transport{margin-left:-270px;}.menu-item-depth-10 .menu-item-transport{margin-left:-300px;}.menu-item-depth-11 .menu-item-transport{margin-left:-330px;}body.menu-max-depth-0{min-width:950px!important;}body.menu-max-depth-1{min-width:980px!important;}body.menu-max-depth-2{min-width:1010px!important;}body.menu-max-depth-3{min-width:1040px!important;}body.menu-max-depth-4{min-width:1070px!important;}body.menu-max-depth-5{min-width:1100px!important;}body.menu-max-depth-6{min-width:1130px!important;}body.menu-max-depth-7{min-width:1160px!important;}body.menu-max-depth-8{min-width:1190px!important;}body.menu-max-depth-9{min-width:1220px!important;}body.menu-max-depth-10{min-width:1250px!important;}body.menu-max-depth-11{min-width:1280px!important;}.item-type{font-size:12px;padding-right:10px;}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px;}.item-controls a{text-decoration:none;}.item-controls a:hover{cursor:pointer;}.item-controls .item-order{padding-right:10px;}.item-controls .item-order a{font-weight:bold;}body.js .item-order{display:none;}.item-edit{position:absolute;right:-20px;top:0;display:block;width:30px;height:36px;overflow:hidden;text-indent:-999em;border-bottom:1px solid;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.menu-instructions-inactive{display:none;}.menu-item-settings{display:block;width:400px;padding:10px 0 10px 10px;border:solid;border-width:0 1px 1px 1px;-moz-border-radius:0 0 3px 3px;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-right-radius:3px;-khtml-border-bottom-left-radius:3px;}.menu-item-edit-active .menu-item-settings{display:block;}.menu-item-edit-inactive .menu-item-settings{display:none;}.add-menu-item-pagelinks{margin:.5em auto;text-align:center;}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;font-size:12px;font-style:italic;border:1px solid;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;-khtml-border-radius:3px;}.link-to-original a{padding-left:4px;font-style:normal;}.hidden-field{display:none;}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left;}.description-thin{width:190px;height:40px;}.description-wide{width:390px;}.menu-item-actions{padding-top:15px;}#cancel-save{cursor:pointer;}.major-publishing-actions{clear:both;padding:3px 0 5px;}.major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;margin:5px 0 1px;}.major-publishing-actions .delete-action{vertical-align:middle;text-align:left;float:left;padding-right:15px;margin-top:5px;}.menu-name-label span,.auto-add-pages label{font-size:12px;font-style:normal;}.menu-name-label{margin-right:15px;}.auto-add-pages input{margin-top:0;}.auto-add-pages{margin-top:4px;float:left;}.submitbox .submitcancel{border-bottom:1px solid;padding:1px 2px;text-decoration:none;}.major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;-khtml-border-radius:3px;}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,#post-body-content:after,.button-controls:after,.major-publishing-actions:after,.menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden;}#nav-menus-frame,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block;} \ No newline at end of file diff --git a/src/wp-admin/css/nav-menu.dev.css b/src/wp-admin/css/nav-menu.dev.css new file mode 100644 index 0000000..7224ee3 --- /dev/null +++ b/src/wp-admin/css/nav-menu.dev.css @@ -0,0 +1,705 @@ +/** + * WordPress Administration Custom Navigation + * Interface CSS + * + * @version 2.0.0 + * + * @package WordPress + * @subpackage Administration + */ + +html, +body { + min-width: 950px; +} + +#nav-menus-frame { + margin-left: 300px; +} + +#wpbody-content #menu-settings-column { + display:inline; + width:281px; + margin-left: -300px; + clear: both; + float: left; + padding-top: 24px; +} + .no-js #wpbody-content #menu-settings-column { + padding-top: 31px; + } + +#menu-settings-column .inside { + clear: both; +} + +.metabox-holder-disabled .postbox { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.metabox-holder-disabled .button-controls .select-all { + display: none; +} +#wpbody { + position: relative; +} + +/* Menu Container */ +#menu-management-liquid { + float: left; + min-width: 100%; +} + +#menu-management { + position: relative; + margin-right: 20px; + margin-top: -3px; + width: 100%; +} + +#menu-management .menu-edit { + border: 1px solid; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + -khtml-border-radius: 3px; + border-radius: 3px; + margin-bottom: 20px; +} + +#post-body { + padding: 10px; + border-width: 1px 0; + border-style: solid; +} + +#nav-menu-header, +#nav-menu-footer { + padding: 0 10px; +} + +#nav-menu-header { + border-bottom: 1px solid; +} + +#nav-menu-footer { + border-top: 1px solid; +} + +#post-body div.updated, #post-body div.error { + margin: 0; +} + +#post-body-content { + position: relative; +} + +#menu-management .menu-add-new abbr { + font-weight:bold; +} + +/* Menu Tabs */ + +#menu-management .nav-tabs-nav { + margin: 0 20px; +} + +#menu-management .nav-tabs-arrow { + width: 10px; + padding: 0 5px 4px; + cursor: pointer; + position: absolute; + top: 0; + line-height: 22px; + font-size: 18px; + text-shadow: 0 1px 0 #fff; +} + +#menu-management .nav-tabs-arrow a:hover{ +} + +#menu-management .nav-tabs-arrow a:active { +} + +#menu-management .nav-tabs-arrow-left { + left: 0; +} + +#menu-management .nav-tabs-arrow-right { + right: 0; + text-align: right; +} + +#menu-management .nav-tabs-wrapper { + width: 100%; + height: 28px; + margin-bottom: -1px; + overflow: hidden; +} + +#menu-management .nav-tabs { + padding-left: 20px; + padding-right: 10px; +} + +.js #menu-management .nav-tabs { + float: left; + margin-left: 0px; + margin-right: -400px; +} + +#menu-management .nav-tab { + margin-bottom: 0; + font-size: 14px; + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; +} + + +#select-nav-menu-container { + text-align: right; + padding: 0 10px 3px 10px; + margin-bottom: 5px; +} + +#select-nav-menu { + width: 100px; + display: inline; +} + +#menu-name-label { + margin-top: -2px; +} + +#wpbody .open-label { + display: block; + float:left; +} + +#wpbody .open-label span { + padding-right: 10px; +} + +.js .input-with-default-title { + font-style: italic; +} + +#menu-management .inside { + padding: 0 10px; +} + +/* Add Menu Item Boxes */ +.postbox .howto input { + width: 180px; + float: right; +} + +.customlinkdiv .howto input { + width: 200px; +} + +#nav-menu-theme-locations .howto select { + width: 100%; +} + +#nav-menu-theme-locations .button-controls { + text-align: right; +} + +.add-menu-item-view-all { + height: 400px; +} + +/* Button Primary Actions */ +#menu-container .submit { + margin: 0px 0px 10px; + padding: 0px; +} + +.meta-sep, +.submitdelete, +.submitcancel { + display:block; + float:left; + font-size: 12px; + margin: 4px 0; + line-height: 15px; +} + +.meta-sep { + padding: 0 2px; +} + +#cancel-save { + text-decoration: underline; + font-size: 12px; + margin-left: 20px; + margin-top: 5px; +} + +/* Button Secondary Actions */ +.list-controls { + float: left; + margin-top: 5px; +} + +.add-to-menu { + float: right; +} + +.postbox img.waiting { + display: none; + vertical-align: middle; +} + +.button-controls { + clear:both; + margin: 10px 0; +} + +.show-all, .hide-all { + cursor: pointer; +} + +.hide-all { + display: none; +} + +/* Create Menu */ +#menu-name { + width: 270px; +} + +#manage-menu .inside { + padding: 0px 0px; +} + +/* Custom Links */ +#available-links dt { + display: block; +} + +#add-custom-link .howto { + font-size: 12px; +} + +#add-custom-link label span { + display: block; + float: left; + margin-top: 5px; + padding-right: 5px; +} + +.menu-item-textbox { + width: 180px; +} + +.howto span { + margin-top: 4px; + display: block; + float: left; +} + +/* Menu item types */ +.quick-search { + width: 190px; +} + +.list-wrap { + display: none; + clear: both; + margin-bottom: 10px; +} + +.list-container { + max-height: 200px; + overflow-y: auto; + padding: 10px 10px 5px; + border: 1px solid; + -moz-border-radius: 3px; +} + +.postbox p.submit { + margin-bottom: 0; +} + +/* Listings */ +.list li { + display: none; + margin: 0; + margin-bottom: 5px; +} + +.list li .menu-item-title { + cursor: pointer; + display: block; +} + +.list li .menu-item-title input { + margin-right: 3px; + margin-top: -3px; +} + +/* Nav Menu */ +#menu-container .inside { + padding-bottom: 10px; +} + +.menu { + padding-top:1em; +} + +#menu-to-edit { + padding: 1em 0; +} + +.menu ul { + width: 100%; +} + +.menu ul.sub-menu { +} + +.menu li { + margin-bottom: 0; + position:relative; +} + +.menu-item-bar { + clear:both; + line-height:1.5em; + position:relative; + margin-top: 13px; +} + +.menu-item-handle { + border: 1px solid #dfdfdf; + position: relative; + padding-left: 10px; + height: auto; + width: 400px; + line-height: 35px; + text-shadow: 0 1px 0 #FFFFFF; + overflow: hidden; + word-wrap: break-word; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; +} + +#menu-to-edit .menu-item-invalid .menu-item-handle { + background-color: #f6c9cc; /* Fallback */ + background-image: -ms-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* IE10 */ + background-image: -moz-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* Firefox */ + background-image: -o-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* Opera */ + background-image: -webkit-gradient(linear, left bottom, left top, from(#f6c9cc), to(#fdf8ff)); /* old Webkit */ + background-image: -webkit-linear-gradient(bottom, #f6c9cc, #fdf8ff); /* new Webkit */ + background-image: linear-gradient(bottom, #f6c9cc, #fdf8ff); /* proposed W3C Markup */ +} + +.menu-item-edit-active .menu-item-handle { + -moz-border-radius: 3px 3px 0 0; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -khtml-border-bottom-right-radius: 0; + -khtml-border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.no-js .menu-item-edit-active .item-edit { + display: none; +} + +.js .menu-item-handle { + cursor: move; +} + +.menu li.deleting .menu-item-handle { + background-image: none; + text-shadow: 0 0 0; +} + +.menu-item-handle .item-title { + font-size: 12px; + font-weight: bold; + padding: 7px 0; + line-height: 20px; + display:block; + margin-right:13em; +} + +/* Sortables */ +li.menu-item.ui-sortable-helper dl { + margin-top: 0; +} + +li.menu-item.ui-sortable-helper .menu-item-transport dl { + margin-top: 13px; +} + +.menu .sortable-placeholder { + height: 35px; + width: 410px; + margin-top: 13px; +} + +/* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */ +.menu-item-depth-0 { margin-left: 0px; } +.menu-item-depth-1 { margin-left: 30px; } +.menu-item-depth-2 { margin-left: 60px; } +.menu-item-depth-3 { margin-left: 90px; } +.menu-item-depth-4 { margin-left: 120px; } +.menu-item-depth-5 { margin-left: 150px; } +.menu-item-depth-6 { margin-left: 180px; } +.menu-item-depth-7 { margin-left: 210px; } +.menu-item-depth-8 { margin-left: 240px; } +.menu-item-depth-9 { margin-left: 270px; } +.menu-item-depth-10 { margin-left: 300px; } +.menu-item-depth-11 { margin-left: 330px; } + +.menu-item-depth-0 .menu-item-transport { margin-left: 0px; } +.menu-item-depth-1 .menu-item-transport { margin-left: -30px; } +.menu-item-depth-2 .menu-item-transport { margin-left: -60px; } +.menu-item-depth-3 .menu-item-transport { margin-left: -90px; } +.menu-item-depth-4 .menu-item-transport { margin-left: -120px; } +.menu-item-depth-5 .menu-item-transport { margin-left: -150px; } +.menu-item-depth-6 .menu-item-transport { margin-left: -180px; } +.menu-item-depth-7 .menu-item-transport { margin-left: -210px; } +.menu-item-depth-8 .menu-item-transport { margin-left: -240px; } +.menu-item-depth-9 .menu-item-transport { margin-left: -270px; } +.menu-item-depth-10 .menu-item-transport { margin-left: -300px; } +.menu-item-depth-11 .menu-item-transport { margin-left: -330px; } + +body.menu-max-depth-0 { min-width: 950px !important; } +body.menu-max-depth-1 { min-width: 980px !important; } +body.menu-max-depth-2 { min-width: 1010px !important; } +body.menu-max-depth-3 { min-width: 1040px !important; } +body.menu-max-depth-4 { min-width: 1070px !important; } +body.menu-max-depth-5 { min-width: 1100px !important; } +body.menu-max-depth-6 { min-width: 1130px !important; } +body.menu-max-depth-7 { min-width: 1160px !important; } +body.menu-max-depth-8 { min-width: 1190px !important; } +body.menu-max-depth-9 { min-width: 1220px !important; } +body.menu-max-depth-10 { min-width: 1250px !important; } +body.menu-max-depth-11 { min-width: 1280px !important; } + +/* Menu item controls */ +.item-type { + font-size: 12px; + padding-right: 10px; +} + +.item-controls { + font-size: 12px; + position: absolute; + right: 20px; + top: -1px; +} + +.item-controls a { + text-decoration: none; +} + +.item-controls a:hover { + cursor: pointer; +} + +.item-controls .item-order { + padding-right: 10px; +} + +.item-controls .item-order a { + font-weight:bold; +} + +body.js .item-order { + display:none; +} + +.item-controls .menu-item-delete:hover { +} + +.item-edit { + position: absolute; + right: -20px; + top: 0; + display: block; + width:30px; + height: 36px; + overflow: hidden; + text-indent:-999em; + border-bottom: 1px solid; + -moz-border-radius-bottomleft: 3px; + -webkit-border-bottom-left-radius: 3px; + -khtml-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +.item-edit:hover { +} + +/* Menu editing */ +.menu-instructions-inactive { + display: none; +} + +.menu-item-settings { + display:block; + width: 400px; + padding: 10px 0 10px 10px; + border: solid; + border-width: 0 1px 1px 1px; + -moz-border-radius: 0 0 3px 3px; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -khtml-border-bottom-right-radius: 3px; + -khtml-border-bottom-left-radius: 3px; +} + +.menu-item-edit-active .menu-item-settings { + display:block; +} + +.menu-item-edit-inactive .menu-item-settings { + display:none; +} + +.add-menu-item-pagelinks { + margin:.5em auto; + text-align:center; +} + +.link-to-original { + display: block; + margin: 0 0 10px; + padding: 3px 5px 5px; + font-size: 12px; + font-style: italic; + border: 1px solid; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; +} + +.link-to-original a { + padding-left: 4px; + font-style: normal; +} + +.hidden-field { + display: none; +} + +.menu-item-settings .description-thin, +.menu-item-settings .description-wide { + margin-right: 10px; + float: left; +} + +.description-thin { + width: 190px; + height: 40px; +} + +.description-wide { + width: 390px; +} + +.menu-item-actions { + padding-top: 15px; +} + +#cancel-save { + cursor: pointer; +} + +#cancel-save:hover { +} + +#update-menu-item { +} + +#update-menu-item:hover, +#update-menu-item:active, +#update-menu-item:focus { +} + +/* Major/minor publishing actions (classes) */ +.major-publishing-actions { + clear:both; + padding: 3px 0 5px; +} + +.major-publishing-actions .publishing-action { + text-align: right; + float: right; + line-height: 23px; + margin: 5px 0 1px; +} + +.major-publishing-actions .delete-action { + vertical-align: middle; + text-align: left; + float: left; + padding-right: 15px; + margin-top: 5px; +} + +.menu-name-label span, .auto-add-pages label { + font-size: 12px; + font-style: normal; +} + +.menu-name-label { + margin-right: 15px; +} + +.auto-add-pages input { + margin-top: 0; +} + +.auto-add-pages { + margin-top: 4px; + float: left; +} + +.submitbox .submitcancel { + border-bottom: 1px solid; + padding: 1px 2px; + text-decoration: none; +} + +.submitbox .submitcancel:hover { +} + +.major-publishing-actions .form-invalid { + padding-left: 4px; + margin-left: -4px; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; +} + +/* Clearfix */ +#menu-item-name-wrap:after, +#menu-item-url-wrap:after, +#menu-name-label:after, +#menu-settings-column .inside:after, +#nav-menus-frame:after, +#post-body-content:after, +.button-controls:after, +.major-publishing-actions:after, +.menu-item-settings:after { + clear: both; + content: "."; + display: block; + height: 0; + visibility: hidden; +} + +#nav-menus-frame, .button-controls, #menu-item-url-wrap, #menu-item-name-wrap { + display: block; +} diff --git a/src/wp-admin/css/plugin-install-rtl.css b/src/wp-admin/css/plugin-install-rtl.css new file mode 100644 index 0000000..f1ade77 --- /dev/null +++ b/src/wp-admin/css/plugin-install-rtl.css @@ -0,0 +1 @@ +div.star{left:auto;right:0;letter-spacing:0;}.star img,div.star a,div.star a:hover,div.star a:visited{right:auto;left:0;}#plugin-information ul#sidemenu{left:auto;right:0;}#plugin-information h2{margin-right:0;margin-left:200px;}#plugin-information .fyi{margin-left:5px;margin-right:20px;}#plugin-information .fyi h2{margin-left:0;}#plugin-information .fyi ul{padding:10px 7px 10px 5px;}#plugin-information #section-screenshots li p{padding-left:0;padding-right:20px;}#plugin-information .updated,#plugin-information pre{margin-right:0;margin-left:215px;}#plugin-information .updated,#plugin-information .error{clear:none;direction:rtl;}#section-description{direction:ltr;} \ No newline at end of file diff --git a/src/wp-admin/css/plugin-install-rtl.dev.css b/src/wp-admin/css/plugin-install-rtl.dev.css new file mode 100644 index 0000000..9a6dd11 --- /dev/null +++ b/src/wp-admin/css/plugin-install-rtl.dev.css @@ -0,0 +1,43 @@ +div.star { + left: auto; + right: 0; + letter-spacing: 0; +} +.star img, div.star a, div.star a:hover, div.star a:visited { + right: auto; + left: 0; +} +#plugin-information ul#sidemenu { + left: auto; + right: 0; +} +#plugin-information h2 { + margin-right: 0; + margin-left: 200px; +} +#plugin-information .fyi { + margin-left: 5px; + margin-right: 20px; +} +#plugin-information .fyi h2 { + margin-left: 0; +} +#plugin-information .fyi ul { + padding: 10px 7px 10px 5px; +} +#plugin-information #section-screenshots li p { + padding-left: 0; + padding-right: 20px; +} +#plugin-information .updated, +#plugin-information pre { + margin-right: 0; + margin-left: 215px; +} +#plugin-information .updated, #plugin-information .error { + clear: none; + direction: rtl; +} +#section-description { + direction: ltr; +} diff --git a/src/wp-admin/css/plugin-install.css b/src/wp-admin/css/plugin-install.css new file mode 100644 index 0000000..939408f --- /dev/null +++ b/src/wp-admin/css/plugin-install.css @@ -0,0 +1 @@ +div.star-holder{position:relative;height:19px;width:100px;font-size:19px;}div.action-links{font-weight:normal;margin:6px 0 0;}div.star{height:100%;position:absolute;top:0;left:0;background-color:transparent;letter-spacing:1ex;border:none;}.star1{width:20%;}.star2{width:40%;}.star3{width:60%;}.star4{width:80%;}.star5{width:100%;}.star img,div.star a,div.star a:hover,div.star a:visited{display:block;position:absolute;right:0;border:none;text-decoration:none;}div.star img{width:19px;height:19px;}#plugin-information-header{margin:0;padding:0 5px;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid;height:2.5em;}#plugin-information ul#sidemenu{font-weight:normal;margin:0 5px;position:absolute;left:0;bottom:-1px;}#plugin-information p.action-button{width:100%;padding-bottom:0;margin-bottom:0;margin-top:10px;-moz-border-radius:3px 0 0 3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}#plugin-information .action-button a{text-align:center;font-weight:bold;text-decoration:none;display:block;line-height:2em;}#plugin-information h2{clear:none!important;margin-right:200px;}#plugin-information .fyi{margin:0 10px 50px;width:210px;}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0;}#plugin-information .fyi h2.mainheader{padding:5px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;}#plugin-information .fyi ul{padding:10px 5px 10px 7px;margin:0;list-style:none;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}#plugin-information .fyi li{margin-right:0;}#plugin-information #section-holder{padding:10px;}#plugin-information .section ul,#plugin-information .section ol{margin-left:16px;list-style-type:square;list-style-image:none;}#plugin-information #section-screenshots li img{vertical-align:text-top;}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px;padding-bottom:2em;}#plugin-information .updated,#plugin-information pre{margin-right:215px;}#plugin-information pre{padding:7px;} \ No newline at end of file diff --git a/src/wp-admin/css/plugin-install.dev.css b/src/wp-admin/css/plugin-install.dev.css new file mode 100644 index 0000000..2204257 --- /dev/null +++ b/src/wp-admin/css/plugin-install.dev.css @@ -0,0 +1,150 @@ +/* NOTE: the following CSS rules(.star*) are taken more or less straight from the bbPress rating plugin. */ +div.star-holder { + position: relative; + height: 19px; + width: 100px; + font-size: 19px; +} + +div.action-links { + font-weight: normal; + margin: 6px 0 0; +} + +div.star { + height: 100%; + position: absolute; + top: 0; + left: 0; + background-color: transparent; + letter-spacing: 1ex; + border: none; +} + +.star1 { width: 20%; } +.star2 { width: 40%; } +.star3 { width: 60%; } +.star4 { width: 80%; } +.star5 { width: 100%; } + +.star img, div.star a, div.star a:hover, div.star a:visited { + display: block; + position: absolute; + right: 0; + border: none; + text-decoration: none; +} + +div.star img { + width: 19px; + height: 19px; +} + +/* Header on thickbox */ +#plugin-information-header { + margin: 0; + padding: 0 5px; + font-weight: bold; + position: relative; + border-bottom-width: 1px; + border-bottom-style: solid; + height: 2.5em; +} +#plugin-information ul#sidemenu { + font-weight: normal; + margin: 0 5px; + position: absolute; + left: 0; + bottom: -1px; +} + +/* Install sidemenu */ +#plugin-information p.action-button { + width: 100%; + padding-bottom: 0; + margin-bottom: 0; + margin-top: 10px; + -moz-border-radius: 3px 0 0 3px; + -webkit-border-top-left-radius: 3px; + -khtml-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -khtml-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +#plugin-information .action-button a { + text-align: center; + font-weight: bold; + text-decoration: none; + display: block; + line-height: 2em; +} + +#plugin-information h2 { + clear: none !important; + margin-right: 200px; +} + +#plugin-information .fyi { + margin: 0 10px 50px; + width: 210px; +} + +#plugin-information .fyi h2 { + font-size: 0.9em; + margin-bottom: 0; + margin-right: 0; +} + +#plugin-information .fyi h2.mainheader { + padding: 5px; + -moz-border-radius-topleft: 3px; + -webkit-border-top-left-radius: 3px; + -khtml-border-top-left-radius: 3px; + border-top-left-radius: 3px; +} + +#plugin-information .fyi ul { + padding: 10px 5px 10px 7px; + margin: 0; + list-style: none; + -moz-border-radius-bottomleft: 3px; + -webkit-border-bottom-left-radius: 3px; + -khtml-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +#plugin-information .fyi li { + margin-right: 0; +} + +#plugin-information #section-holder { + padding: 10px; +} + +#plugin-information .section ul, +#plugin-information .section ol { + margin-left: 16px; + list-style-type: square; + list-style-image: none; +} + +#plugin-information #section-screenshots li img { + vertical-align: text-top; +} + +#plugin-information #section-screenshots li p { + font-style: italic; + padding-left: 20px; + padding-bottom: 2em; +} + +#plugin-information .updated, +#plugin-information pre { + margin-right: 215px; +} + +#plugin-information pre { + padding: 7px; +} diff --git a/src/wp-admin/css/press-this-rtl.css b/src/wp-admin/css/press-this-rtl.css new file mode 100644 index 0000000..a19d20c --- /dev/null +++ b/src/wp-admin/css/press-this-rtl.css @@ -0,0 +1 @@ +body{font-family:Tahoma,Arial;}#poststuff #edButtonPreview,#poststuff #edButtonHTML{float:left;}#poststuff #edButtonHTML{margin-left:15px;margin-right:5px;}#header-logo,#wphead h1{float:right;}div#poststuff{padding-left:0;padding-right:10px;}.posting{margin-left:212px;margin-right:0;position:relative;}#side-info-column{float:left;right:auto;left:0;}h3.tb{margin-left:0;margin-right:5px;}#publish{float:left;}.postbox .handlediv{float:left;}.actions{float:left;}.actions li{float:right;margin-right:0;margin-left:10px;}#extra-fields .actions{margin:-23px 0 0 -7px;}#img_container a{float:right;}#category-add input,#category-add select{font-family:Tahoma,Arial;}.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,#linkcategorydiv ul.categorychecklist ul{margin-left:0;margin-right:18px;}.category-tabs li{padding-left:0;padding-right:8px;}#tagsdiv #newtag{margin-right:0;margin-left:5px;}#tagadd{margin-left:0;margin-right:3px;}#tagchecklist span{margin-left:.5em;margin-right:10px;float:right;}#tagchecklist span a{margin:6px -9px 0 0;float:right;}#content{margin-left:0;margin-right:1%;}.submit input,.button,.button-primary,.button-secondary,.button-highlighted,#postcustomstuff .submit input{font-family:Tahoma,Arial,sans-serif;}.ac_results li{text-align:right;}#TB_ajaxContent #options{right:auto;left:25px;}#post_status{margin-left:0;margin-right:10px;}#footer{padding:10px 60px 0 0;} \ No newline at end of file diff --git a/src/wp-admin/css/press-this-rtl.dev.css b/src/wp-admin/css/press-this-rtl.dev.css new file mode 100644 index 0000000..fbb1456 --- /dev/null +++ b/src/wp-admin/css/press-this-rtl.dev.css @@ -0,0 +1,140 @@ +body { + font-family: Tahoma, Arial; +} + +#poststuff #edButtonPreview, +#poststuff #edButtonHTML { + float: left; +} + +#poststuff #edButtonHTML { + margin-left: 15px; + margin-right: 5px; +} + +#header-logo, +#wphead h1 { + float: right; +} + +/* Editor/Main Column */ +div#poststuff { + padding-left: 0; + padding-right: 10px; +} + +.posting { + margin-left: 212px; + margin-right: 0; + position: relative; +} + +#side-info-column { + float: left; + right: auto; + left: 0; +} + +h3.tb { + margin-left: 0; + margin-right: 5px; +} + +#publish { + float: left; +} + +.postbox .handlediv { + float: left; +} + +.actions { + float: left; +} + +.actions li { + float: right; + margin-right: 0; + margin-left: 10px; +} + +#extra-fields .actions { + margin: -23px 0 0 -7px; +} + +/* Photo Styles */ +#img_container a { + float: right; +} + +#category-add input, +#category-add select { + font-family: Tahoma, Arial; +} + +.inline-editor ul.cat-checklist ul, +.categorydiv ul.categorychecklist ul, +#linkcategorydiv ul.categorychecklist ul { + margin-left: 0; + margin-right: 18px; +} + +/* Categories */ +.category-tabs li { + padding-left: 0; + padding-right: 8px; +} + +/* Tags */ +#tagsdiv #newtag { + margin-right: 0; + margin-left: 5px; +} + +#tagadd { + margin-left: 0; + margin-right: 3px; +} + +#tagchecklist span { + margin-left: .5em; + margin-right: 10px; + float: right; +} +#tagchecklist span a { + margin: 6px -9px 0 0; + float: right; +} + +#content { + margin-left: 0; + margin-right: 1%; +} + +.submit input, +.button, +.button-primary, +.button-secondary, +.button-highlighted, +#postcustomstuff .submit input { + font-family: Tahoma, Arial, sans-serif; +} + +.ac_results li { + text-align: right; +} + +#TB_ajaxContent #options { + right: auto; + left: 25px; +} + +#post_status { + margin-left: 0; + margin-right: 10px; +} + +/* Footer */ +#footer { + padding: 10px 60px 0 0; +} diff --git a/src/wp-admin/css/press-this.css b/src/wp-admin/css/press-this.css new file mode 100644 index 0000000..fd1970a --- /dev/null +++ b/src/wp-admin/css/press-this.css @@ -0,0 +1 @@ +body{font-size:13px;font-family:sans-serif;color:#333;margin:0;padding:0;min-width:675px;min-height:400px;}img{border:none;}#wphead{height:32px;margin-right:5px;margin-bottom:5px;}#header-logo{float:left;margin:7px 7px 0;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;user-select:none;}#wphead h1{font:normal 16px Georgia,"Times New Roman","Bitstream Charter",Times,serif;padding:6px 0 0;margin:0;float:left;}#wphead h1 a{text-decoration:none;}#wphead h1 a:hover{text-decoration:underline;}.tagchecklist span a{background:transparent url(../images/xit.gif) no-repeat 0 0;}#edButtonPreview,#edButtonHTML{height:18px;margin:5px 5px 0 0;padding:4px 5px 2px;float:right;cursor:pointer;border-width:1px;border-style:solid;-moz-border-radius:3px 3px 0 0;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;}#poststuff #edButtonHTML{margin-right:15px;}#media-buttons{cursor:default;padding:8px 8px 0;}#media-buttons a{cursor:pointer;padding:0 0 5px 10px;}#media-buttons img,#submitpost #ajax-loading,#submitpost .ajax-loading{vertical-align:middle;}.howto{margin-top:2px;margin-bottom:3px;font-size:12px;font-style:italic;display:block;}input.text{outline-color:-moz-use-text-color;outline-style:none;outline-width:medium;width:100%;}#message{-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}div#poststuff{margin:0 10px 10px;}#poststuff #editor-toolbar{height:30px;}div.zerosize{border:0 none;height:0;margin:0;overflow:hidden;padding:0;width:0;}.posting{margin-right:212px;position:relative;}#side-info-column{float:right;width:200px;position:relative;right:0;}#side-info-column .sleeve{padding-top:5px;}#poststuff .inside{font-size:12px;margin:8px;}#submitdiv .inside{margin:0;}#submitdiv .inside p{padding:5px 8px;margin:0;}#submitdiv #publishing-actions{padding-left:6px;border-bottom:1px solid #dfdfdf;-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;}#publish{float:right;}#poststuff h2,#poststuff h3{font-size:13px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:normal;line-height:1;margin:0;padding:7px 9px;border-width:0 0 1px 0;border-style:solid;}#poststuff h2{border-color:#dfdfdf;}#tagsdiv-post_tag h3,#categorydiv h3{cursor:pointer;}h3.tb{text-shadow:0 1px 0 #fff;font-weight:bold;font-size:12px;margin-left:5px;}#TB_window{border:1px solid #333;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.postbox,.stuffbox{margin-bottom:10px;border-width:1px;border-style:solid;line-height:1;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.postbox:hover .handlediv,.stuffbox:hover .handlediv{background:transparent url(../images/arrows.png) no-repeat 6px 7px;}.postbox .handlediv{float:right;width:27px;height:30px;cursor:pointer;}#title,.tbtitle{font-family:sans-serif;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border-style:solid;border-width:1px;font-size:1.7em;outline:none;padding:3px 4px;border-color:#dfdfdf;}.tbtitle{font-size:12px;padding:3px;}#title{width:97%;}.editor-container{-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid #ccc;background-color:#fff;}.actions{float:right;margin:-19px 0 0;}#extra-fields .actions{margin:-23px -7px 0 0;}.actions li{float:left;list-style:none;margin-right:10px;}#extra-fields .button{margin-right:5px;padding:3px 6px;border-radius:10px;-webkit-border-radius:10px;-khtml-border-radius:10px;-moz-border-radius:10px;}#photo_saving{margin:0 8px 8px;vertical-align:middle;}#img_container_container{overflow:auto;}#extra-fields{margin-top:10px;position:relative;}#waiting{margin-top:10px;}#extra-fields .postbox{margin-bottom:5px;}#extra-fields .titlewrap{padding:0;overflow:auto;height:100px;}#img_container a{display:block;float:left;overflow:hidden;vertical-align:center;}#img_container img,#img_container a{width:68px;height:68px;}#img_container img{border:none;background-color:#f4f4f4;cursor:pointer;}#img_container a,#img_container a:link,#img_container a:visited{border:1px solid #ccc;display:block;position:relative;}#img_container a:hover,#img_container a:active{border-color:#000;z-index:1000;border-width:2px;margin:-1px;}#embed-code{width:100%;height:98px;}.wp-hidden-children .wp-hidden-child{display:none;}.category-add input{width:94%;font-family:sans-serif;font-size:12px;margin:1px;}select{width:100%;-x-system-font:none;border-style:solid;border-width:1px;font-family:sans-serif;font-size:12px;height:2em;line-height:20px;padding:2px;margin:1px;vertical-align:top;}.category-add input.category-add-sumbit{width:auto;}.categorydiv div.tabs-panel,#linkcategorydiv div.tabs-panel{height:100px;overflow:auto;padding:.5em .9em;border-style:solid;border-width:1px;}.category-tabs li{display:inline;padding-right:8px;}.category-tabs a{text-decoration:none;}.categorydiv ul,#linkcategorydiv ul{list-style:none;padding:0;margin:0;}.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,#linkcategorydiv ul.categorychecklist ul{margin-left:18px;}ul.categorychecklist li{margin:0;padding:0;line-height:19px;}.categorydiv .tabs-panel{border-width:3px;border-style:solid;}ul.category-tabs{margin-top:12px;margin-bottom:5px;}ul.category-tabs li.tabs{border-style:solid solid none;border-width:1px 1px 0;}ul.category-tabs li{padding:5px 8px;-moz-border-radius:3px 3px 0 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.screen-reader-text{display:none;}.tagsdiv .newtag{margin-right:5px;}.jaxtag{clear:both;margin:0;}.tagadd{margin-left:3px;}.tagchecklist{margin-top:3px;margin-bottom:1em;font-size:12px;overflow:auto;}.tagchecklist strong{position:absolute;font-size:.75em;}.tagchecklist span{margin-right:.5em;margin-left:10px;display:block;float:left;font-size:12px;line-height:1.8em;white-space:nowrap;cursor:default;}.tagchecklist span a{margin:6px 0 0 -9px;cursor:pointer;width:10px;height:10px;display:block;float:left;text-indent:-9999px;overflow:hidden;position:absolute;}#content{margin:5px 0;padding:0 5px;border:0 none;height:365px;width:97%!important;font-family:Consolas,Monaco,monospace;font-size:13px;line-height:19px;background:transparent;}* html .postdivrich{zoom:1;}#saving{display:inline;vertical-align:middle;}.submit input,.button,.button-primary,.button-secondary,.button-highlighted,#postcustomstuff .submit input{font-family:sans-serif;text-decoration:none;font-size:12px!important;line-height:16px;padding:2px 8px;margin:2px;cursor:pointer;border-width:1px;border-style:solid;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;}.button-primary{background:#21759B url(../images/button-grad.png) repeat-x scroll left top;border-color:#21759B;color:#fff;}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;display:none;border-width:1px;border-style:solid;}.ac_results li{padding:2px 5px;white-space:nowrap;text-align:left;}.ac_over{cursor:pointer;}.ac_match{text-decoration:underline;}#TB_ajaxContent #options{position:absolute;top:20px;right:25px;padding:5px;}#TB_ajaxContent h3{margin-bottom:.25em;}.updated{margin:10px 0;padding:0;border-width:1px;border-style:solid;width:99%;}.updated p,.error p{margin:.6em 0;padding:0 .6em;}.error a{text-decoration:underline;}.updated a{text-decoration:none;padding-bottom:2px;}#post_status{margin-left:10px;margin-bottom:1em;display:block;}#footer{height:65px;display:block;width:640px;padding:10px 0 0 60px;margin:0;position:absolute;bottom:0;font-size:12px;}#footer p{margin:0;padding:7px 0;}#footer p a{text-decoration:none;}#footer p a:hover{text-decoration:underline;}.centered{text-align:center;}.hidden{display:none;}.postbox input[type="text"],.postbox textarea,.stuffbox input[type="text"],.stuffbox textarea{border-width:1px;border-style:solid;}.taghint{color:#aaa;margin:-17px 0 0 7px;visibility:hidden;}input.newtag ~ div.taghint{visibility:visible;}input.newtag:focus ~ div.taghint{visibility:hidden;}#mce_fullscreen_container{background:#fff;} \ No newline at end of file diff --git a/src/wp-admin/css/press-this.dev.css b/src/wp-admin/css/press-this.dev.css new file mode 100644 index 0000000..416227c --- /dev/null +++ b/src/wp-admin/css/press-this.dev.css @@ -0,0 +1,678 @@ +body { + font-size: 13px; + font-family: sans-serif; + color: #333; + margin: 0; + padding: 0; + min-width: 675px; + min-height: 400px; +} + +img { + border: none; +} + +/* Header */ +#wphead { + height: 32px; + margin-right: 5px; + margin-bottom: 5px; +} + +#header-logo { + float: left; + margin: 7px 7px 0; + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + user-select: none; +} + +#wphead h1 { + font: normal 16px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + padding: 6px 0 0; + margin: 0; + float: left; +} + +#wphead h1 a { + text-decoration: none; +} +#wphead h1 a:hover { + text-decoration: underline; +} + +.tagchecklist span a { + background: transparent url(../images/xit.gif) no-repeat 0 0; +} + +#edButtonPreview, +#edButtonHTML { + height: 18px; + margin: 5px 5px 0 0; + padding: 4px 5px 2px; + float: right; + cursor: pointer; + border-width: 1px; + border-style: solid; + -moz-border-radius: 3px 3px 0 0; + -webkit-border-top-right-radius: 3px; + -webkit-border-top-left-radius: 3px; + -khtml-border-top-right-radius: 3px; + -khtml-border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +#poststuff #edButtonHTML { + margin-right: 15px; +} + +#media-buttons { + cursor: default; + padding: 8px 8px 0; +} + +#media-buttons a { + cursor: pointer; + padding: 0 0 5px 10px; +} + +#media-buttons img, +#submitpost #ajax-loading, +#submitpost .ajax-loading { + vertical-align: middle; +} + +.howto { + margin-top: 2px; + margin-bottom: 3px; + font-size: 12px; + font-style: italic; + display: block; +} + +input.text { + outline-color: -moz-use-text-color; + outline-style: none; + outline-width: medium; + width: 100%; +} + +#message { + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +/* Editor/Main Column */ +div#poststuff { + margin: 0 10px 10px; +} + +#poststuff #editor-toolbar { + height: 30px; +} + +div.zerosize { + border: 0 none; + height: 0; + margin: 0; + overflow: hidden; + padding: 0; + width: 0; +} + +.posting { + margin-right: 212px; + position: relative; +} + +#side-info-column { + float: right; + width: 200px; + position: relative; + right: 0; +} + +#side-info-column .sleeve { + padding-top: 5px; +} + +#poststuff .inside { + font-size: 12px; + margin: 8px; +} + +#submitdiv .inside { + margin: 0; +} + +#submitdiv .inside p { + padding: 5px 8px; + margin: 0; +} + +#submitdiv #publishing-actions { + padding-left: 6px; + border-bottom: 1px solid #dfdfdf; + -webkit-box-shadow: 0 1px 0 #fff; + -moz-box-shadow: 0 1px 0 #fff; + box-shadow: 0 1px 0 #fff; +} + +#publish { + float: right; +} + +#poststuff h2,#poststuff h3 { + font-size: 13px; + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-weight: normal; + line-height: 1; + margin: 0; + padding: 7px 9px; + border-width: 0 0 1px 0; + border-style: solid; +} + +#poststuff h2 { + border-color: #dfdfdf; +} + +#tagsdiv-post_tag h3, +#categorydiv h3 { + cursor: pointer; +} + +h3.tb { + text-shadow: 0 1px 0 #fff; + font-weight: bold; + font-size: 12px; + margin-left: 5px; +} + +#TB_window { + border: 1px solid #333; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.postbox, +.stuffbox { + margin-bottom: 10px; + border-width: 1px; + border-style: solid; + line-height: 1; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.postbox:hover .handlediv, +.stuffbox:hover .handlediv { + background: transparent url(../images/arrows.png) no-repeat 6px 7px; +} + +.postbox .handlediv { + float: right; + width: 27px; + height: 30px; + cursor: pointer; +} + +#title, +.tbtitle { + font-family: sans-serif; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border-style: solid; + border-width: 1px; + font-size: 1.7em; + outline: none; + padding: 3px 4px; + border-color: #dfdfdf; +} + +.tbtitle { + font-size: 12px; + padding: 3px; +} + +#title { + width: 97%; +} + +.editor-container { + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 1px solid #ccc; + background-color: #fff; +} + +.actions { + float: right; + margin: -19px 0 0; +} + +#extra-fields .actions { + margin: -23px -7px 0 0; +} + +.actions li { + float: left; + list-style: none; + margin-right: 10px; +} + +#extra-fields .button { + margin-right: 5px; + padding: 3px 6px; + border-radius: 10px; + -webkit-border-radius: 10px; + -khtml-border-radius: 10px; + -moz-border-radius: 10px; +} + +/* Photo Styles */ +#photo_saving { + margin: 0 8px 8px; + vertical-align: middle; +} + +#img_container_container { + overflow: auto; +} + +#extra-fields { + margin-top: 10px; + position: relative; +} + +#waiting { + margin-top: 10px; +} + +#extra-fields .postbox { + margin-bottom: 5px; +} + +#extra-fields .titlewrap { + padding: 0; + overflow: auto; + height: 100px; +} + +#img_container a { + display: block; + float: left; + overflow: hidden; + vertical-align: center; +} + +#img_container img, +#img_container a { + width: 68px; + height: 68px; +} + +#img_container img { + border: none; + background-color: #f4f4f4; + cursor: pointer; +} + +#img_container a, +#img_container a:link, +#img_container a:visited { + border: 1px solid #ccc; + display: block; + position: relative; +} + +#img_container a:hover, +#img_container a:active { + border-color: #000; + z-index: 1000; + border-width: 2px; + margin: -1px; +} + +/* Video */ +#embed-code { + width: 100%; + height: 98px; +} + +/* Submit Column */ +.wp-hidden-children +.wp-hidden-child { + display: none; +} + +/* Categories */ + +.category-add input { + width: 94%; + font-family: sans-serif; + font-size: 12px; + margin: 1px; +} + +select { + width: 100%; + -x-system-font: none; + border-style: solid; + border-width: 1px; + font-family: sans-serif; + font-size: 12px; + height: 2em; + line-height: 20px; + padding: 2px; + margin: 1px; + vertical-align: top; +} + +.category-add input.category-add-sumbit { + width: auto; +} + +.categorydiv div.tabs-panel, +#linkcategorydiv div.tabs-panel { + height: 100px; + overflow: auto; + padding: 0.5em 0.9em; + border-style: solid; + border-width: 1px; +} + +.category-tabs li { + display: inline; + padding-right: 8px; +} + +.category-tabs a { + text-decoration: none; +} + +.categorydiv ul, +#linkcategorydiv ul { + list-style: none; + padding: 0; + margin: 0; +} + +.inline-editor ul.cat-checklist ul, +.categorydiv ul.categorychecklist ul, +#linkcategorydiv ul.categorychecklist ul { + margin-left: 18px; +} + +ul.categorychecklist li { + margin: 0; + padding: 0; + line-height: 19px; +} + +.categorydiv .tabs-panel { + border-width: 3px; + border-style: solid; +} + +ul.category-tabs { + margin-top: 12px; + margin-bottom: 5px; +} + +ul.category-tabs li.tabs { + border-style: solid solid none; + border-width: 1px 1px 0; +} + +ul.category-tabs li { + padding: 5px 8px; + -moz-border-radius: 3px 3px 0 0; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + -khtml-border-top-left-radius: 3px; + -khtml-border-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +/* Tags */ +.screen-reader-text { + display: none; +} + +.tagsdiv .newtag { + margin-right: 5px; +} + +.jaxtag { + clear: both; + margin: 0; +} + +.tagadd { + margin-left: 3px; +} + +.tagchecklist { + margin-top: 3px; + margin-bottom: 1em; + font-size: 12px; + overflow: auto; +} + +.tagchecklist strong { + position: absolute; + font-size: .75em; +} + +.tagchecklist span { + margin-right: .5em; + margin-left: 10px; + display: block; + float: left; + font-size: 12px; + line-height: 1.8em; + white-space: nowrap; + cursor: default; +} + +.tagchecklist span a { + margin: 6px 0 0 -9px; + cursor: pointer; + width: 10px; + height: 10px; + display: block; + float: left; + text-indent: -9999px; + overflow: hidden; + position: absolute; +} + +#content { + margin: 5px 0; + padding: 0 5px; + border: 0 none; + height: 365px; + width: 97% !important; + font-family: Consolas, Monaco, monospace; + font-size: 13px; + line-height: 19px; + background: transparent; +} + +* html .postdivrich { + zoom: 1; +} + +/* Submit */ +#saving { + display: inline; + vertical-align: middle; +} + +.submit input, +.button, +.button-primary, +.button-secondary, +.button-highlighted, +#postcustomstuff .submit input { + font-family: sans-serif; + text-decoration: none; + font-size: 12px !important; + line-height: 16px; + padding: 2px 8px; + margin: 2px; + cursor: pointer; + border-width: 1px; + border-style: solid; + -moz-border-radius: 11px; + -khtml-border-radius: 11px; + -webkit-border-radius: 11px; + border-radius: 11px; +} + +.button-primary { + background: #21759B url(../images/button-grad.png) repeat-x scroll left top; + border-color: #21759B; + color: #fff; +} + +.ac_results { + padding: 0; + margin: 0; + list-style: none; + position: absolute; + z-index: 10000; + display: none; + border-width: 1px; + border-style: solid; +} + +.ac_results li { + padding: 2px 5px; + white-space: nowrap; + text-align: left; +} + +.ac_over { + cursor: pointer; +} + +.ac_match { + text-decoration: underline; +} + +#TB_ajaxContent #options { + position: absolute; + top: 20px; + right: 25px; + padding: 5px; +} + +#TB_ajaxContent h3 { + margin-bottom: .25em; +} + +.updated { + margin: 10px 0; + padding: 0; + border-width: 1px; + border-style: solid; + width: 99%; +} + +.updated p, +.error p { + margin: 0.6em 0; + padding: 0 0.6em; +} + +.error a { + text-decoration: underline; +} + +.updated a { + text-decoration: none; + padding-bottom: 2px; +} + +#post_status { + margin-left: 10px; + margin-bottom: 1em; + display: block; +} + +/* Footer */ +#footer { + height: 65px; + display: block; + width: 640px; + padding: 10px 0 0 60px; + margin: 0; + position: absolute; + bottom: 0; + font-size: 12px; +} + +#footer p { + margin: 0; + padding: 7px 0; +} + +#footer p a { + text-decoration: none; +} + +#footer p a:hover { + text-decoration: underline; +} + +/* Utility Classes */ +.centered { + text-align: center; +} + +.hidden { + display: none; +} + +.postbox input[type="text"], +.postbox textarea, +.stuffbox input[type="text"], +.stuffbox textarea { + border-width: 1px; + border-style: solid; +} + +/* tag hints */ +.taghint { + color: #aaa; + margin: -17px 0 0 7px; + visibility: hidden; +} + +input.newtag ~ div.taghint { + visibility: visible; +} + +input.newtag:focus ~ div.taghint { + visibility: hidden; +} + +/* TinyMCE */ +#mce_fullscreen_container { + background: #fff; +} diff --git a/src/wp-admin/css/theme-editor-rtl.css b/src/wp-admin/css/theme-editor-rtl.css new file mode 100644 index 0000000..23023df --- /dev/null +++ b/src/wp-admin/css/theme-editor-rtl.css @@ -0,0 +1 @@ +#templateside{float: left;} diff --git a/src/wp-admin/css/theme-editor-rtl.dev.css b/src/wp-admin/css/theme-editor-rtl.dev.css new file mode 100644 index 0000000..a4dcb46 --- /dev/null +++ b/src/wp-admin/css/theme-editor-rtl.dev.css @@ -0,0 +1,3 @@ +#templateside { + float: left; +} diff --git a/src/wp-admin/css/theme-editor.css b/src/wp-admin/css/theme-editor.css new file mode 100644 index 0000000..fe03629 --- /dev/null +++ b/src/wp-admin/css/theme-editor.css @@ -0,0 +1 @@ +.alignleft h3{margin:0;}h3 span{font-weight:normal;}#template textarea{font-family:Consolas,Monaco,monospace;font-size:12px;width:97%;background:#f9f9f9;outline:none;}#template p{width:97%;}#templateside{float:right;width:190px;word-wrap:break-word;}#templateside h3,#postcustomstuff p.submit{margin:0;}#templateside h4{margin:1em 0 0;}#templateside ol,#templateside ul{margin:.5em;padding:0;}#templateside li{margin:4px 0;}#templateside ul li a span.highlight{display:block;}.nonessential{font-size:11px;font-style:italic;padding-left:12px;}.highlight{padding:3px 3px 3px 12px;margin-left:-12px;font-weight:bold;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}div.tablenav{margin-right:210px;}#documentation{margin-top:10px;}#documentation label{line-height:22px;vertical-align:top;font-weight:bold;}.fileedit-sub{padding:10px 0 8px;line-height:180%;} \ No newline at end of file diff --git a/src/wp-admin/css/theme-editor.dev.css b/src/wp-admin/css/theme-editor.dev.css new file mode 100644 index 0000000..b06837b --- /dev/null +++ b/src/wp-admin/css/theme-editor.dev.css @@ -0,0 +1,82 @@ +.alignleft h3 { + margin: 0; +} + +h3 span { + font-weight: normal; +} + +#template textarea { + font-family: Consolas, Monaco, monospace; + font-size: 12px; + width: 97%; + background: #f9f9f9; + outline: none; +} + +#template p { + width: 97%; +} + +#templateside { + float: right; + width: 190px; + word-wrap: break-word; +} + +#templateside h3, +#postcustomstuff p.submit { + margin: 0; +} + +#templateside h4 { + margin: 1em 0 0; +} + +#templateside ol, +#templateside ul { + margin: .5em; + padding: 0; +} + +#templateside li { + margin: 4px 0; +} + +#templateside ul li a span.highlight { + display:block; +} + +.nonessential { + font-size: 11px; + font-style: italic; + padding-left: 12px; +} + +.highlight { + padding: 3px 3px 3px 12px; + margin-left: -12px; + font-weight: bold; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +div.tablenav { + margin-right: 210px; +} + +#documentation { + margin-top: 10px; +} +#documentation label { + line-height: 22px; + vertical-align: top; + font-weight: bold; +} + +.fileedit-sub { + padding: 10px 0 8px; + line-height: 180%; +} diff --git a/src/wp-admin/css/theme-install-rtl.css b/src/wp-admin/css/theme-install-rtl.css new file mode 100644 index 0000000..3dd959c --- /dev/null +++ b/src/wp-admin/css/theme-install-rtl.css @@ -0,0 +1 @@ +div.star{left:auto;right:0;}.star img,div.star a,div.star a:hover,div.star a:visited{right:auto;left:0;}.theme-listing .theme-item h3{font-style:normal;}#theme-information .theme-preview-img{float:right;margin:5px 15px 10px 25px;}#theme-information .action-button #cancel{float:right;}#theme-information .action-button #install{float:left;}.feature-filter .feature-group{float:right;}.feature-filter .feature-name{float:right;text-align:left;}.feature-filter .feature-group li{float:right;padding-right:0;padding-left:25px;} \ No newline at end of file diff --git a/src/wp-admin/css/theme-install-rtl.dev.css b/src/wp-admin/css/theme-install-rtl.dev.css new file mode 100644 index 0000000..1194688 --- /dev/null +++ b/src/wp-admin/css/theme-install-rtl.dev.css @@ -0,0 +1,41 @@ +div.star { + left:auto; + right: 0; +} + +.star img, div.star a, div.star a:hover, div.star a:visited { + right: auto; + left: 0; +} + +.theme-listing .theme-item h3 { + font-style: normal; +} + +#theme-information .theme-preview-img { + float: right; + margin: 5px 15px 10px 25px; +} + +#theme-information .action-button #cancel { + float: right; +} + +#theme-information .action-button #install { + float: left; +} + +.feature-filter .feature-group { + float: right; +} + +.feature-filter .feature-name { + float: right; + text-align: left; +} + +.feature-filter .feature-group li { + float: right; + padding-right: 0; + padding-left: 25px; +} \ No newline at end of file diff --git a/src/wp-admin/css/theme-install.css b/src/wp-admin/css/theme-install.css new file mode 100644 index 0000000..e96844e --- /dev/null +++ b/src/wp-admin/css/theme-install.css @@ -0,0 +1 @@ +div.star-holder{position:relative;height:19px;width:100px;font-size:19px;}div.star{height:100%;position:absolute;top:0;left:0;background-color:transparent;letter-spacing:1ex;border:none;}.star1{width:20%;}.star2{width:40%;}.star3{width:60%;}.star4{width:80%;}.star5{width:100%;}.star img,div.star a,div.star a:hover,div.star a:visited{display:block;position:absolute;right:0;border:none;text-decoration:none;}div.star img{width:19px;height:19px;border-left:1px solid #fff;border-right:1px solid #fff;}.theme-listing .theme-item{display:inline-block;width:200px;border:thin solid #ccc;vertical-align:top;}.theme-listing .theme-item h3{text-align:center;font-size:14px;font-style:italic;margin:0;padding:0;}.theme-listing .theme-item img{max-width:150px;max-height:150px;}.theme-listing .theme-item-info span{display:none;}.theme-listing .theme-item:hover .theme-item-info span{display:inline;}.theme-listing .theme-item:hover .theme-item-info span.dots{display:none;}.theme-listing .theme-item-info span.action-links{font-weight:bold;text-align:center;}.theme-listing br.line{border-bottom-width:1px;border-bottom-style:solid;margin-bottom:3px;}.available-theme{padding:20px 15px;}#theme-information .theme-preview-img{float:left;margin:5px 25px 10px 15px;width:300px;}#theme-information .action-button{border-top-width:1px;border-top-style:solid;margin:10px 5px 0;}#theme-information .action-button #cancel{float:left;margin:10px 15px;}#theme-information .action-button #install{float:right;margin:10px 15px;}#theme-information .available-theme h3{margin:1em 0;}body#theme-information{height:auto;}.feature-filter{-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;padding:8px 12px 0;}.feature-filter .feature-group{float:left;margin-bottom:20px;width:725px;}.feature-filter .feature-name{float:left;text-align:right;width:95px;}.feature-filter .feature-group li{display:inline;float:left;list-style-type:none;padding-right:25px;min-width:145px;}.feature-container{width:100%;overflow:auto;margin-bottom:10px;}.feature-group{margin-bottom:0!important;} \ No newline at end of file diff --git a/src/wp-admin/css/theme-install.dev.css b/src/wp-admin/css/theme-install.dev.css new file mode 100644 index 0000000..70dee71 --- /dev/null +++ b/src/wp-admin/css/theme-install.dev.css @@ -0,0 +1,155 @@ +/* NOTE: the following CSS rules(.star*) are taken more or less straight from the bbPress rating plugin. */ +div.star-holder { + position: relative; + height: 19px; + width: 100px; + font-size: 19px; +} + +div.star { + height: 100%; + position: absolute; + top: 0; + left: 0; + background-color: transparent; + letter-spacing: 1ex; + border: none; +} + +.star1 { width: 20%; } +.star2 { width: 40%; } +.star3 { width: 60%; } +.star4 { width: 80%; } +.star5 { width: 100%; } + +.star img, div.star a, div.star a:hover, div.star a:visited { + display: block; + position: absolute; + right: 0; + border: none; + text-decoration: none; +} + +div.star img { + width: 19px; + height: 19px; + border-left: 1px solid #fff; + border-right: 1px solid #fff; +} + +.theme-listing .theme-item { + display: inline-block; + width: 200px; + border: thin solid #ccc; + vertical-align: top; +} + +.theme-listing .theme-item h3 { + text-align: center; + font-size: 14px; + font-style: italic; + margin: 0; + padding: 0; +} + +.theme-listing .theme-item img { + max-width: 150px; + max-height: 150px; +} + +.theme-listing .theme-item-info span { + display: none; +} + +.theme-listing .theme-item:hover .theme-item-info span { + display: inline; +} + +.theme-listing .theme-item:hover .theme-item-info span.dots { + display: none; +} + +.theme-listing .theme-item-info span.action-links { + font-weight: bold; + text-align: center; +} + +.theme-listing br.line { + border-bottom-width: 1px; + border-bottom-style: solid; + margin-bottom: 3px; +} + +.available-theme { + padding: 20px 15px; +} + +#theme-information .theme-preview-img { + float: left; + margin: 5px 25px 10px 15px; + width: 300px; +} + +#theme-information .action-button { + border-top-width: 1px; + border-top-style: solid; + margin: 10px 5px 0; +} + +#theme-information .action-button #cancel { + float: left; + margin: 10px 15px; +} + +#theme-information .action-button #install { + float: right; + margin: 10px 15px; +} + +#theme-information .available-theme h3 { + margin: 1em 0; +} + +body#theme-information { + height: auto; +} + +.feature-filter { + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border-width: 1px; + border-style: solid; + padding: 8px 12px 0; +} + +.feature-filter .feature-group { + float: left; + margin-bottom: 20px; + width: 725px; +} + +.feature-filter .feature-name { + float: left; + text-align: right; + width: 95px; +} + +.feature-filter .feature-group li { + display: inline; + float: left; + list-style-type: none; + padding-right: 25px; + min-width: 145px; +} + +.feature-container { +width: 100%; +overflow: auto; +margin-bottom: 10px; +} + +.feature-group { + margin-bottom: 0px !important; +} \ No newline at end of file diff --git a/src/wp-admin/css/widgets-rtl.css b/src/wp-admin/css/widgets-rtl.css new file mode 100644 index 0000000..1f8b2a5 --- /dev/null +++ b/src/wp-admin/css/widgets-rtl.css @@ -0,0 +1 @@ +div.widget-liquid-left{float:right;clear:right;margin-right:0;margin-left:-325px;}div#widgets-left{margin-right:5px;margin-left:325px;}div.widget-liquid-right{float:left;clear:left;}#wp_inactive_widgets .widget{float:right;}div.sidebar-name h3{font-family:Tahoma,Arial,sans-serif;}#widget-list .widget{float:right;}#wp_inactive_widgets .widget-placeholder{float:right;}.widget-top .widget-title-action{float:left;}.widget-control-edit{padding:0 0 0 8px;}.sidebar-name-arrow{float:left;} \ No newline at end of file diff --git a/src/wp-admin/css/widgets-rtl.dev.css b/src/wp-admin/css/widgets-rtl.dev.css new file mode 100644 index 0000000..672f669 --- /dev/null +++ b/src/wp-admin/css/widgets-rtl.dev.css @@ -0,0 +1,47 @@ +/* 2 column liquid layout */ +div.widget-liquid-left { + float: right; + clear: right; + margin-right: 0; + margin-left: -325px; +} + +div#widgets-left { + margin-right: 5px; + margin-left: 325px; +} + +div.widget-liquid-right { + float: left; + clear: left; +} + +#wp_inactive_widgets .widget { + float: right; +} + +div.sidebar-name h3 { + font-family: Tahoma, Arial, sans-serif; +} + +#widget-list .widget { + float: right; +} + +#wp_inactive_widgets .widget-placeholder { + float: right; +} + +.widget-top .widget-title-action { + float: left; +} + +.widget-control-edit { + padding: 0 0 0 8px; +} + + +.sidebar-name-arrow { + float: left; +} + diff --git a/src/wp-admin/css/widgets.css b/src/wp-admin/css/widgets.css new file mode 100644 index 0000000..729bcaf --- /dev/null +++ b/src/wp-admin/css/widgets.css @@ -0,0 +1 @@ +html,body{min-width:950px;}div.widget-liquid-left{float:left;clear:left;width:100%;margin-right:-325px;}div#widgets-left{margin-left:5px;margin-right:325px;}div#widgets-right{width:285px;margin:0 auto;}div.widget-liquid-right{float:right;clear:right;width:300px;}.widget-liquid-right .widget,#wp_inactive_widgets .widget,.widget-liquid-right .sidebar-description{width:250px;margin:0 auto 20px;overflow:hidden;}.widget-liquid-right .sidebar-description{margin-bottom:10px;}#wp_inactive_widgets .widget{margin:0 10px 20px;float:left;}div.sidebar-name h3{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:normal;font-size:15px;margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap;}div.sidebar-name{cursor:pointer;font-size:13px;border-width:1px;border-style:solid;-moz-border-radius-topleft:3px;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;}.js .closed .sidebar-name{-moz-border-radius-bottomleft:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-right-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.widget-liquid-right .widgets-sortables,#widgets-left .widget-holder{border-width:0 1px 1px;border-style:none solid solid;-moz-border-radius-bottomleft:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-right-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.js .closed .widgets-sortables,.js .closed .widget-holder{display:none;}.widget-liquid-right .widgets-sortables{padding:15px 0 0;}#available-widgets .widget-holder{padding:7px 5px 0;}#available-widgets .widget{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;}#wp_inactive_widgets{padding:5px 5px 0;}#widget-list .widget{width:250px;margin:0 10px 15px;border:0 none;background:transparent;float:left;}#widget-list .widget-description{padding:5px 8px;}#widget-list .widget-top{border-width:1px;border-style:solid;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.widget-placeholder{border-width:1px;border-style:dashed;margin:0 auto 20px;height:26px;width:250px;}#wp_inactive_widgets .widget-placeholder{margin:0 10px 20px;float:left;}div.widgets-holder-wrap{padding:0;margin:10px 0 20px;}#widgets-left #available-widgets{background-color:transparent;border:0 none;}ul#widget-list{list-style:none;margin:0;padding:0;min-height:100px;}.widget .widget-top{margin-bottom:-1px;font-size:12px;font-weight:bold;height:26px;overflow:hidden;}.widget-top .widget-title{padding:7px 9px;}.widget-top .widget-title-action{float:right;}a.widget-action{display:block;width:24px;height:26px;}#available-widgets a.widget-action{display:none;}.widget-top a.widget-action{background:transparent url(../images/arrows.png) no-repeat 4px 6px;}.widget-top a.widget-action:hover{background:transparent url(../images/arrows-dark.png) no-repeat 4px 6px;}.widget .widget-inside,.widget .widget-description{padding:12px 12px 10px;font-size:12px;line-height:16px;}.widget-inside,.widget-description{display:none;}#available-widgets .widget-description{display:block;}.widget .widget-inside p{margin:0 0 1em;padding:0;}.widget-title h4{margin:0;line-height:1;overflow:hidden;white-space:nowrap;}.widgets-sortables{min-height:90px;}.widget-control-actions{margin-top:8px;}.widget-control-actions a{text-decoration:none;}.widget-control-actions a:hover{text-decoration:underline;}.widget-control-actions .ajax-feedback{padding-bottom:3px;}.widget-control-actions div.alignleft{margin-top:6px;}div#sidebar-info{padding:0 1em;margin-bottom:1em;font-size:12px;}.widget-title a,.widget-title a:hover{text-decoration:none;border-bottom:none;}.widget-control-edit{display:block;font-size:12px;font-weight:normal;line-height:26px;padding:0 8px 0 0;}a.widget-control-edit{text-decoration:none;}.widget-control-edit .add,.widget-control-edit .edit{display:none;}#available-widgets .widget-control-edit .add,#widgets-right .widget-control-edit .edit,#wp_inactive_widgets .widget-control-edit .edit{display:inline;}.editwidget{margin:0 auto 15px;}.editwidget .widget-inside{display:block;border-width:1px;border-style:solid;padding:10px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.inactive p.description{margin:5px 15px 8px;}#available-widgets p.description{margin:0 12px 12px;}.widget-position{margin-top:8px;}.inactive{padding-top:2px;}.sidebar-name-arrow{float:right;height:29px;width:26px;}.widget-title .in-widget-title{font-size:12px;white-space:nowrap;}#removing-widget{display:none;font-weight:normal;padding-left:15px;font-size:12px;line-height:1;}.widget-control-noform,#access-off,.widgets_access .widget-action,.widgets_access .sidebar-name-arrow,.widgets_access #access-on,.widgets_access .widget-holder .description{display:none;}.widgets_access .widget-holder,.widgets_access #widget-list{padding-top:10px;}.widgets_access #access-off{display:inline;}.widgets_access #wpbody-content .widget-title-action,.widgets_access #wpbody-content .widget-control-edit,.widgets_access .closed .widgets-sortables,.widgets_access .closed .widget-holder{display:block;}.widgets_access .closed .sidebar-name{-moz-border-radius-bottomleft:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default;} \ No newline at end of file diff --git a/src/wp-admin/css/widgets.dev.css b/src/wp-admin/css/widgets.dev.css new file mode 100644 index 0000000..8b4736f --- /dev/null +++ b/src/wp-admin/css/widgets.dev.css @@ -0,0 +1,382 @@ +html, +body { + min-width: 950px; +} + +/* 2 column liquid layout */ +div.widget-liquid-left { + float: left; + clear: left; + width: 100%; + margin-right: -325px; +} + +div#widgets-left { + margin-left: 5px; + margin-right: 325px; +} + +div#widgets-right { + width: 285px; + margin: 0 auto; +} + +div.widget-liquid-right { + float: right; + clear: right; + width: 300px; +} + +.widget-liquid-right .widget, +#wp_inactive_widgets .widget, +.widget-liquid-right .sidebar-description { + width: 250px; + margin: 0 auto 20px; + overflow: hidden; +} + +.widget-liquid-right .sidebar-description { + margin-bottom: 10px; +} + +#wp_inactive_widgets .widget { + margin: 0 10px 20px; + float: left; +} + +div.sidebar-name h3 { + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-weight: normal; + font-size: 15px; + margin: 0; + padding: 8px 10px; + overflow: hidden; + white-space: nowrap; +} + +div.sidebar-name { + cursor: pointer; + font-size: 13px; + border-width: 1px; + border-style: solid; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -webkit-border-top-right-radius: 3px; + -webkit-border-top-left-radius: 3px; + -khtml-border-top-right-radius: 3px; + -khtml-border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.js .closed .sidebar-name { + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -khtml-border-bottom-right-radius: 3px; + -khtml-border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.widget-liquid-right .widgets-sortables, +#widgets-left .widget-holder { + border-width: 0 1px 1px; + border-style: none solid solid; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -khtml-border-bottom-right-radius: 3px; + -khtml-border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.js .closed .widgets-sortables, +.js .closed .widget-holder { + display: none; +} + +.widget-liquid-right .widgets-sortables { + padding: 15px 0 0; +} + +#available-widgets .widget-holder { + padding: 7px 5px 0; +} + +#available-widgets .widget { + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +#wp_inactive_widgets { + padding: 5px 5px 0; +} + +#widget-list .widget { + width: 250px; + margin: 0 10px 15px; + border: 0 none; + background: transparent; + float: left; +} + +#widget-list .widget-description { + padding: 5px 8px; +} + +#widget-list .widget-top { + border-width: 1px; + border-style: solid; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.widget-placeholder { + border-width: 1px; + border-style: dashed; + margin: 0 auto 20px; + height: 26px; + width: 250px; +} + +#wp_inactive_widgets .widget-placeholder { + margin: 0 10px 20px; + float: left; +} + +div.widgets-holder-wrap { + padding: 0; + margin: 10px 0 20px; +} + +#widgets-left #available-widgets { + background-color: transparent; + border: 0 none; +} + +ul#widget-list { + list-style: none; + margin: 0; + padding: 0; + min-height: 100px; +} + +.widget .widget-top { + margin-bottom: -1px; + font-size: 12px; + font-weight: bold; + height: 26px; + overflow: hidden; +} + +.widget-top .widget-title { + padding: 7px 9px; +} + +.widget-top .widget-title-action { + float: right; +} + +a.widget-action { + display: block; + width: 24px; + height: 26px; +} + +#available-widgets a.widget-action { + display: none; +} + +.widget-top a.widget-action { + background: transparent url(../images/arrows.png) no-repeat 4px 6px; +} + +.widget-top a.widget-action:hover { + background: transparent url(../images/arrows-dark.png) no-repeat 4px 6px; +} + +.widget .widget-inside, +.widget .widget-description { + padding: 12px 12px 10px; + font-size: 12px; + line-height: 16px; +} + +.widget-inside, +.widget-description { + display: none; +} + +#available-widgets .widget-description { + display: block; +} + +.widget .widget-inside p { + margin: 0 0 1em; + padding: 0; +} + +.widget-title h4 { + margin: 0; + line-height: 1; + overflow: hidden; + white-space: nowrap; +} + +.widgets-sortables { + min-height: 90px; +} + +.widget-control-actions { + margin-top: 8px; +} + +.widget-control-actions a { + text-decoration: none; +} + +.widget-control-actions a:hover { + text-decoration: underline; +} + +.widget-control-actions .ajax-feedback { + padding-bottom: 3px; +} + +.widget-control-actions div.alignleft { + margin-top: 6px; +} + +div#sidebar-info { + padding: 0 1em; + margin-bottom: 1em; + font-size: 12px; +} + +.widget-title a, +.widget-title a:hover { + text-decoration: none; + border-bottom: none; +} + +.widget-control-edit { + display: block; + font-size: 12px; + font-weight: normal; + line-height: 26px; + padding: 0 8px 0 0; +} + +a.widget-control-edit { + text-decoration: none; +} + +.widget-control-edit .add, +.widget-control-edit .edit { + display: none; +} + +#available-widgets .widget-control-edit .add, +#widgets-right .widget-control-edit .edit, +#wp_inactive_widgets .widget-control-edit .edit { + display: inline; +} + +.editwidget { + margin: 0 auto 15px; +} + +.editwidget .widget-inside { + display: block; + border-width: 1px; + border-style: solid; + padding: 10px; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.inactive p.description { + margin: 5px 15px 8px; +} + +#available-widgets p.description { + margin: 0 12px 12px; +} + +.widget-position { + margin-top: 8px; +} + +.inactive { + padding-top: 2px; +} + +.sidebar-name-arrow { + float: right; + height: 29px; + width: 26px; +} + +.widget-title .in-widget-title { + font-size: 12px; + white-space: nowrap; +} + +#removing-widget { + display: none; + font-weight: normal; + padding-left: 15px; + font-size: 12px; + line-height: 1; +} + +.widget-control-noform, +#access-off, +.widgets_access .widget-action, +.widgets_access .sidebar-name-arrow, +.widgets_access #access-on, +.widgets_access .widget-holder .description { + display: none; +} + +.widgets_access .widget-holder, +.widgets_access #widget-list { + padding-top: 10px; +} + +.widgets_access #access-off { + display: inline; +} + +.widgets_access #wpbody-content .widget-title-action, +.widgets_access #wpbody-content .widget-control-edit, +.widgets_access .closed .widgets-sortables, +.widgets_access .closed .widget-holder { + display: block; +} + +.widgets_access .closed .sidebar-name { + -moz-border-radius-bottomleft: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -khtml-border-bottom-right-radius: 0; + -khtml-border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.widgets_access .sidebar-name, +.widgets_access .widget .widget-top { + cursor: default; +} + diff --git a/src/wp-admin/css/wp-admin-rtl.css b/src/wp-admin/css/wp-admin-rtl.css new file mode 100644 index 0000000..f9ea458 --- /dev/null +++ b/src/wp-admin/css/wp-admin-rtl.css @@ -0,0 +1 @@ +ol{margin-left:0;margin-right:2em;}.code,code{font-family:Tahoma,Arial,sans-serif;}.quicktags,.search{font:12px Tahoma,Arial,sans-serif;}.icon32{float:right;margin:7px 0 0 8px;}.howto{font-style:normal;font-family:Tahoma,Arial,sans-serif;}p.install-help{font-style:normal;}#doaction,#doaction2,#post-query-submit{margin-right:0;margin-left:8px;}#timezone_string option{margin-left:0;margin-right:1em;}#pass-strength-result{float:right;margin:13px 1px 5px 5px;}p.search-box{float:left;}#delete-action{text-align:right;float:right;}#publishing-action{text-align:left;float:left;}#post-body .misc-pub-section{border-right:0;border-left-width:1px;border-left-style:solid;float:right;}#post-body .misc-pub-section-last{border-left:0;}#minor-publishing-actions{padding:10px 8px 2px 10px;text-align:left;}#save-post{float:right;}#minor-publishing .ajax-loading{padding:3px 4px 0 0;float:right;}.preview{float:left;}#sticky-span{margin-left:0;margin-right:18px;}.side-info ul{padding-left:0;padding-right:18px;}td.action-links,th.action-links{text-align:left;}.describe .del-link{padding-left:0;padding-right:5px;}.plugin-update .update-message{margin:0 31px 8px 10px;}form.upgrade .hint{font-style:normal;}#ajax-response.alignleft{margin-left:0;margin-right:2em;}#quicktags{background-position:right top;}#ed_reply_toolbar input{margin:1px 1px 1px 2px;}#wp-fullscreen-body{right:0;left:auto;}#wp-fullscreen-tagline{float:left;}#fullscreen-topbar{left:auto;right:0;}#wp-fullscreen-mode-bar,#wp-fullscreen-button-bar,#wp-fullscreen-close,#wp-fullscreen-count{float:right;}#wp-fullscreen-save{float:left;}#wp-fullscreen-save{padding:2px 5px 0 2px;}#wp-fullscreen-buttons>div{float:right;}#wp-fullscreen-mode-bar{padding:1px 0 0 14px;}#wp-fullscreen-modes a{float:right;border-width:1px 0 1px 1px;}#wp-fullscreen-modes a:first-child{border-width:1px;-moz-border-radius:3px 3px 0 0;-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;-khtml-border-top-left-radius:0;-khtml-border-top-right-radius:3px;-khtml-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-right-left:0;border-bottom-right-radius:3px;}#wp-fullscreen-modes a:last-child{-moz-border-radius:0 0 3px 3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;-khtml-border-top-right-radius:0;-khtml-border-top-left-radius:3px;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;}#wp-fullscreen-save img,#wp-fullscreen-save span{padding-right:0;padding-left:4px;}#wphead-info{margin:0 15px 0 0;}#user_info{float:left;padding:0 6px 0 2px;}#user_info.active{margin-right:0;margin-left:-1px;}#user_info .hide-if-no-js p{margin:0 0 0 20px;}#user_info_arrow{right:auto;left:3px;}#user_info_links_wrap{right:auto;left:0;}#wphead{height:32px;margin-left:15px;margin-right:2px;}#header-logo{float:right;}#wphead h1{font:Tahoma,Arial,sans-serif;float:right;}#favorite-actions{margin:0 15px 0 12px;}#favorite-first a{padding:2px 12px 2px 0;}#favorite-inside a{padding:3px 10px 3px 5px;}#favorite-toggle{right:auto;left:0;}#screen-meta-links{margin:0 0 0 19px;}#screen-meta .screen-reader-text{visibility:hidden;}#screen-options-link-wrap,#contextual-help-link-wrap{float:left;margin:0 6px 0 0;font-family:Tahoma,Arial,sans-serif;}#contextual-help-wrap li{list-style-type:disc;margin-left:auto;margin-right:18px;}.toggle-arrow{background-position:top right;}.toggle-arrow-active{background-position:bottom right;}#screen-meta a.show-settings{padding:0 6px 0 16px;}#screen-options-wrap,#contextual-help-wrap{margin:0 0 0 15px;}.metabox-prefs label{padding-right:auto;padding-left:15px;}.metabox-prefs label input{margin:0 2px 0 5px;}#adminmenushadow{right:auto;left:0;}#adminmenu div.wp-menu-image{float:right;}#adminmenu .wp-submenu a{padding-left:0;padding-right:12px;}#adminmenu li.wp-has-current-submenu .wp-menu-arrow,#adminmenu li.menu-top.current .wp-menu-arrow{right:auto;left:-9px;}#adminmenu .wp-menu-arrow div{background:url(../images/menu-arrow-frame-rtl.png) top left no-repeat;}#adminmenu .wp-menu-image img{float:right;}.js.folded #adminmenu .wp-submenu{display:block;left:auto;right:26px;}.js.folded #adminmenu .wp-submenu.sub-open{padding:0 0 8px 8px;}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 10px 5px 4px;}.js.folded #adminmenu .wp-submenu-wrap{-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-top-left-radius:3px;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:3px;-khtml-border-top-left-radius:0;-khtml-border-top-left-radius:3px;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:3px;-moz-border-radius-topright:0;-moz-border-radius-topleft:3px;border-bottom-right-radius:0;border-bottom-left-radius:3px;border-top-right-radius:0;border-top-left-radius:3px;border-width:0 0 1px 1px;}.js.folded #adminmenu .wp-submenu ul{border-width:0 1px 0 0;}.js.folded #adminmenu .wp-submenu a{padding-left:0;padding-right:10px;}.js.folded #adminmenu a.wp-has-submenu{margin-left:0;margin-right:40px;}#adminmenu .wp-menu-toggle{clear:left;float:left;padding:1px 0 0 2px;}#adminmenu .wp-menu-image img{padding:6px 1px 0 0;}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:7px;}.post-com-count-wrapper{font-family:Tahoma,Arial,sans-serif;}.column-response .post-com-count{float:right;margin-right:0;margin-left:5px;}.response-links{float:right;}#collapse-button{float:right;}.widefat th{font-family:Tahoma,Arial,sans-serif;}.widefat td p{margin:2px 0 .8em;}.postbox-container{float:right;padding-right:0;padding-left:.5%;}.postbox .handlediv{float:left;}#the-comment-list p.comment-author img{float:right;margin-right:0;margin-left:8px;}.fixed .column-comments{text-align:right;}.fixed .column-comments .vers{padding-left:0;padding-right:3px;}.fixed .column-comments a{float:right;}.sorting-indicator{margin-left:0;margin-right:7px;}th.sortable a span,th.sorted a span{float:right;}.tablenav-pages a{margin-right:0;margin-left:1px;}.tablenav-pages .next-page{margin-left:0;margin-right:2px;}.tablenav a.button-secondary{margin:3px 0 0 8px;}.tablenav .tablenav-pages{float:left;}.tablenav .displaying-num{margin-right:0;margin-left:10px;font-family:Tahoma,Arial,sans-serif;font-style:bold;}.tablenav .actions{padding:2px 0 0 8px;}.tablenav .delete{margin-right:0;margin-left:20px;}.view-switch{float:left;}.filter{float:right;margin:-5px 10px 0 0;}.filter .subsubsub{margin-left:0;margin-right:-10px;}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex;}#posts-filter fieldset legend{padding:0 1px .2em 0;}#wpbody-content .inline-edit-row fieldset{float:right;}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 1px 0 0;}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left;}.inline-edit-row fieldset label span.title{float:right;}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;margin-right:5em;}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{padding-right:0;padding-left:.5em;}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:0;margin-left:.5em;}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-family:Tahoma,Arial,sans-serif;font-style:normal;}.inline-edit-row fieldset .inline-edit-date{float:right;}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:Tahoma,Arial,sans-serif;}.quick-edit-row-post fieldset label.inline-edit-status{float:right;}#bulk-titles div a{float:right;margin:3px -2px 0 3px;overflow:hidden;text-indent:-9999px;}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{right:0;}#sample-permalink{direction:ltr;}#sample-permalink #editable-post-name{unicode-bidi:embed;}#wp-fullscreen-title-prompt-text{left:auto;right:0;}.postarea h3 label{float:right;}.postarea #add-media-button{float:left;right:auto;left:10px;}#edButtonPreview,#edButtonHTML{margin:5px 0 0 5px;float:left;}#poststuff #edButtonHTML{margin-right:0;margin-left:15px;}#media-buttons a{padding:0 10px 5px 0;}.submitbox .submit{text-align:right;}.inside-submitbox #post_status{margin:2px -2px 2px 0;}.submitbox .submit input{margin-right:0;margin-left:4px;}#normal-sortables .postbox .submit{float:left;}#post-body ul.category-tabs,#post-body ul.add-menu-item-tabs{float:right;text-align:left;margin:0 5px 0 -120px;}#post-body ul.category-tabs li.tabs,#post-body ul.add-menu-item-tabs li.tabs{-moz-border-radius:3px 3px 0 0;-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;-khtml-border-top-left-radius:0;-khtml-border-top-right-radius:3px;-khtml-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px;}#post-body .categorydiv div.tabs-panel,.taxonomy div.tabs-panel,#post-body #linkcategorydiv div.tabs-panel{margin:0 125px 0 5px;}#side-sortables .comments-box thead th,#normal-sortables .comments-box thead th{font-style:normal;}#commentsdiv img.waiting{padding-left:0;padding-right:5px;}#post-body .category-tabs li.tabs,#post-body .add-menu-item-tabs li.tabs{border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px;}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex;}#posts-filter fieldset legend{padding:0 1px .2em 0;}#post-body .tagsdiv #newtag{margin-right:0;margin-left:5px;}.autosave-info{padding:2px 2px 2px 15px;text-align:left;}#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url(../images/resize-rtl.gif) no-repeat scroll left bottom;cursor:sw-resize;}.curtime #timestamp{background-position:right top;padding-left:0;padding-right:18px;}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{margin:8px 8px 8px 0;}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace;}.category-adder{margin-left:0;margin-right:120px;}#post-body ul.category-tabs,#post-body ul.add-menu-item-tabs{float:right;text-align:left;margin:0 5px 0 -120px;}#post-body ul.category-tabs li.tabs,#post-body ul.add-menu-item-tabs li.tabs{-moz-border-radius:3px 3px 0 0;-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;-khtml-border-top-left-radius:0;-khtml-border-top-right-radius:3px;-khtml-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px;}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,#linkcategorydiv ul.categorychecklist ul{margin-left:0;margin-right:18px;}#post-body .category-tabs li.tabs,#post-body .add-menu-item-tabs li.tabs{border-style:solid solid solid none;border-width:1px 1px 1px 0;margin-right:0;margin-left:-1px;}p.help,p.description,span.description,.form-wrap p{font-style:normal;font-family:Tahoma,Arial,sans-serif;}.taghint{margin:15px 12px -24px 0;}#poststuff .tagsdiv .howto{margin:0 8px 6px 0;}.ac_results li{text-align:right;}#wpbody-content .describe th{text-align:right;}.describe .media-item-info .A1B1{padding:0 10px 0 0;}.media-upload-form td label{margin-left:6px;margin-right:2px;}.media-upload-form .align .field label{padding:0 22px 0 0;margin:0 0 0 1em;}.media-upload-form tr.image-size label{margin:0 3px 0 0;}#wpbody-content .describe p.help{padding:0 5px 0 0;}.media-item .error-div a.dismiss,.describe-toggle-on,.describe-toggle-off{float:left;margin-right:0;margin-left:20px;}.media-item .error-div{padding-left:0;padding-right:10px;}.media-item .pinkynail{float:right;}.crunching{text-align:left;margin-right:0;margin-left:5px;}.bar{border-right-width:0;border-left-width:3px;border-right-style:none;border-left-style:solid;}#find-posts-response .found-radio{padding:5px 8px 0 0;}.find-box-search label{padding-right:0;padding-left:6px;}.find-box #resize-se{right:auto;left:1px;}form.upgrade .hint{font-style:normal;}.imgedit-menu div{float:right;}.imgedit-help{font-style:normal;}.imgedit-submit-btn{margin-left:0;margin-right:20px;}.form-table th{text-align:right;}.form-table input.tog{margin-right:0;margin-left:2px;float:right;}.form-table table.color-palette{float:right;}#replysubmit img.waiting,.inline-edit-save img.waiting{float:left;}#replysubmit .button{margin-right:0;margin-left:5px;}#edithead .inside{float:right;padding:3px 5px 2px 0;}.comment-ays th{border-right-style:none;border-left-style:solid;border-right-width:0;border-left-width:1px;}.spam-undo-inside .avatar,.trash-undo-inside .avatar{margin-left:8px;}#comment-status-radio input{margin:2px 0 5px 3px;}td.available-theme{text-align:right;}#current-theme img{float:right;margin-right:0;margin-left:1em;}#broken-themes{text-align:right;}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px;}.appearance_page_custom-header .random-header{margin:0 0 20px 20px;}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:0;margin-left:10px;}.nav-tab{margin:0 0 -1px 6px;}h2 .nav-tab{font-family:Tahoma,Arial,sans-serif;}.plugins .desc ul,.plugins .desc ol{margin:0 2em 0 0;}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:0;padding-left:12px;}#profile-page .form-table #rich_editing{margin-right:0;margin-left:5px;}#your-profile legend{font-family:Tahoma,Arial,sans-serif;}#utc-time,#local-time{padding-left:0;padding-right:25px;font-style:normal;font-family:Tahoma,Arial,sans-serif;}#footer{margin-right:0;margin-left:15px;}#template div{margin-right:0;margin-left:190px;}.column-author img,.column-username img{float:right;margin-right:0;margin-left:10px;}.tagchecklist{margin-left:0;margin-right:14px;}.tagchecklist strong{margin-left:0;margin-right:-8px;}.tagchecklist span{margin-right:0;margin-left:25px;float:right;}.tagchecklist span a{margin:6px -9px 0 0;float:right;}#poststuff h2{clear:right;}#poststuff h3,.metabox-holder h3{font-family:Tahoma,Arial,sans-serif;}.tool-box .title{font-family:Tahoma,Arial,sans-serif;}#sidemenu{margin:-30px 315px 0 15px;float:left;padding-left:0;padding-right:10px;}#sidemenu a{float:right;}table .vers,table .column-visible,table .column-rating{text-align:right;}* html #template div{margin-left:0;}.list-ajax-loading{float:left;margin-right:0;margin-left:9px;}#editorcontainer .wp_themeSkin .mceStatusbar{padding-left:0;padding-right:5px;}#editorcontainer .wp_themeSkin .mceStatusbar div{float:right;}#editorcontainer .wp_themeSkin .mceStatusbar a.mceResize{float:left;} \ No newline at end of file diff --git a/src/wp-admin/css/wp-admin-rtl.dev.css b/src/wp-admin/css/wp-admin-rtl.dev.css new file mode 100644 index 0000000..e208a16 --- /dev/null +++ b/src/wp-admin/css/wp-admin-rtl.dev.css @@ -0,0 +1,1336 @@ +/*------------------------------------------------------------------------------ + + +Hello, this is the RTL version of the main WordPress admin CSS file. +All the important stuff is in here. + + +TABLE OF CONTENTS: +------------------ + 1.0 - Text Elements + 2.0 - Forms + 3.0 - Actions + 4.0 - Notifications + 5.0 - TinyMCE + 6.0 - Admin Header + 6.1 - Favorites Menu + 6.2 - Screen Options Tabs + 7.0 - Main Navigation + 8.0 - Layout Blocks + 9.0 - Dashboard +10.0 - List Posts + 10.1 - Inline Editing +11.0 - Write/Edit Post Screen + 11.1 - Custom Fields + 11.2 - Post Revisions +12.0 - Categories +13.0 - Tags +14.0 - Media Screen + 14.1 - Media Uploader + 14.2 - Image Editor +15.0 - Comments Screen +16.0 - Themes + 16.1 - Custom Header + 16.2 - Custom Background + 16.3 - Tabbed Admin Screen Interface +17.0 - Plugins +18.0 - Users +19.0 - Tools +20.0 - Settings +21.0 - Admin Footer +22.0 - Misc +23.0 - Dead +24.0 - TinyMCE tweaks + + +------------------------------------------------------------------------------*/ + + + + +/*------------------------------------------------------------------------------ + 1.0 - Text Styles +------------------------------------------------------------------------------*/ + +ol { + margin-left: 0; + margin-right: 2em; +} + +.code, code { + font-family: Tahoma, Arial, sans-serif; +} + + +.quicktags, .search { + font: 12px Tahoma, Arial, sans-serif; +} + +.icon32 { + float: right; + margin: 7px 0 0 8px; +} + +.howto { + font-style: normal; + font-family: Tahoma, Arial, sans-serif; +} + +p.install-help { + font-style: normal; +} + + +/*------------------------------------------------------------------------------ + 2.0 - Forms +------------------------------------------------------------------------------*/ + +#doaction, +#doaction2, +#post-query-submit { + margin-right: 0; + margin-left: 8px; +} + +#timezone_string option { + margin-left: 0; + margin-right: 1em; +} + +#pass-strength-result { + float: right; + margin: 13px 1px 5px 5px; +} + +p.search-box { + float: left; +} + + +/*------------------------------------------------------------------------------ + 3.0 - Actions +------------------------------------------------------------------------------*/ + +#delete-action { + text-align: right; + float: right; +} + +#publishing-action { + text-align: left; + float: left; +} + +#post-body .misc-pub-section { + border-right:0; + border-left-width: 1px; + border-left-style: solid; + float: right; +} + +#post-body .misc-pub-section-last { + border-left: 0; +} + +#minor-publishing-actions { + padding: 10px 8px 2px 10px; + text-align: left; +} + +#save-post { + float: right; +} + +#minor-publishing .ajax-loading { + padding: 3px 4px 0 0; + float: right; +} + +.preview { + float: left; +} + +#sticky-span { + margin-left: 0; + margin-right: 18px; +} + +.side-info ul { + padding-left: 0; + padding-right: 18px; +} + +td.action-links, +th.action-links { + text-align: left; +} + +.describe .del-link { + padding-left: 0; + padding-right: 5px; +} + + +/*------------------------------------------------------------------------------ + 4.0 - Notifications +------------------------------------------------------------------------------*/ + +.plugin-update .update-message { + margin: 0 31px 8px 10px; +} + +form.upgrade .hint { + font-style: normal; +} + +#ajax-response.alignleft { + margin-left: 0; + margin-right: 2em; +} + + +/*------------------------------------------------------------------------------ + 5.0 - TinyMCE +------------------------------------------------------------------------------*/ + +#quicktags { + background-position: right top; +} + +#ed_reply_toolbar input { + margin: 1px 1px 1px 2px; +} + +/* Distraction Free Writing mode + * =Overlay Styles +-------------------------------------------------------------- */ + +/* No RTL for now, this space intentionally left blank */ + +/* =Overlay Body +-------------------------------------------------------------- */ +#wp-fullscreen-body { + right: 0; + left:auto; +} + +#wp-fullscreen-tagline { + float: left; +} + +/* =Top bar +-------------------------------------------------------------- */ +#fullscreen-topbar { + left:auto; + right: 0; +} + +#wp-fullscreen-mode-bar, +#wp-fullscreen-button-bar, +#wp-fullscreen-close, +#wp-fullscreen-count { + float: right; +} + +#wp-fullscreen-save { + float: left; +} + +#wp-fullscreen-save { + padding: 2px 5px 0 2px; +} + +#wp-fullscreen-buttons > div { + float: right; +} + +#wp-fullscreen-mode-bar { + padding: 1px 0 0 14px; +} + +#wp-fullscreen-modes a { + float: right; + border-width: 1px 0 1px 1px; +} + +#wp-fullscreen-modes a:first-child { + border-width: 1px; + -moz-border-radius: 3px 3px 0 0; + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 3px; + -khtml-border-top-left-radius: 0; + -khtml-border-top-right-radius: 3px; + -khtml-border-bottom-left-radius: 0; + -khtml-border-bottom-right-radius: 3px; + border-top-left-radius: 0; + border-top-right-radius: 3px; + border-bottom-right-left: 0; + border-bottom-right-radius: 3px; +} + +#wp-fullscreen-modes a:last-child { + -moz-border-radius: 0 0 3px 3px; + -webkit-border-top-right-radius: 0; + -webkit-border-top-left-radius: 3px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 3px; + -khtml-border-top-right-radius: 0; + -khtml-border-top-left-radius: 3px; + -khtml-border-bottom-right-radius: 0; + -khtml-border-bottom-left-radius: 3px; + border-top-right-radius: 0; + border-top-left-radius: 3px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 3px; +} + +#wp-fullscreen-save img, +#wp-fullscreen-save span { + padding-right: 0; + padding-left: 4px; +} + +/* =Thickbox Adjustments +-------------------------------------------------------------- */ +/* No RTL for now, this space intentionally left blank */ + + +/* =TinyMCE Adjustments +-------------------------------------------------------------- */ +/* No RTL for now, this space intentionally left blank */ + + + +/*------------------------------------------------------------------------------ + 6.0 - Admin Header +------------------------------------------------------------------------------*/ +#wphead-info { + margin: 0 15px 0 0; +} + +#user_info { + float: left; + padding: 0 6px 0 2px; +} + +#user_info.active { + margin-right: 0; + margin-left: -1px; +} + +#user_info .hide-if-no-js p { + margin: 0 0 0 20px; +} + +#user_info_arrow { + right: auto; + left: 3px; +} + +#user_info_links_wrap { + right: auto; + left: 0; +} + +#wphead { + height: 32px; + margin-left: 15px; + margin-right: 2px; +} + +#header-logo { + float: right; +} + +#wphead h1 { + font: Tahoma, Arial, sans-serif; + float: right; +} + +/*------------------------------------------------------------------------------ + 6.1 - Favorites Menu +------------------------------------------------------------------------------*/ + +#favorite-actions { + margin: 0 15px 0 12px; +} + +#favorite-first a { + padding: 2px 12px 2px 0; +} + +#favorite-inside a { + padding: 3px 10px 3px 5px; +} + +#favorite-toggle { + right: auto; + left: 0; +} + + +/*------------------------------------------------------------------------------ + 6.2 - Screen Options Tabs +------------------------------------------------------------------------------*/ + +#screen-meta-links { + margin: 0 0 0 19px; +} + +#screen-meta .screen-reader-text { + visibility: hidden; +} + +#screen-options-link-wrap, +#contextual-help-link-wrap { + float: left; + margin: 0 6px 0 0; + font-family: Tahoma, Arial, sans-serif; +} + +#contextual-help-wrap li { + list-style-type: disc; + margin-left: auto; + margin-right: 18px; +} +.toggle-arrow { + background-position: top right; +} +.toggle-arrow-active { + background-position: bottom right; +} +#screen-meta a.show-settings { + padding: 0 6px 0 16px; +} + +#screen-options-wrap, +#contextual-help-wrap { + margin: 0 0 0 15px; +} + +.metabox-prefs label { + padding-right: auto; + padding-left: 15px; +} + +.metabox-prefs label input { + margin: 0 2px 0 5px; +} + +/*------------------------------------------------------------------------------ + 7.0 - Main Navigation (Right Menu) (RTL: Left Menu) +------------------------------------------------------------------------------*/ + +#adminmenushadow { + right: auto; + left: 0; +} + +#adminmenu div.wp-menu-image { + float: right; +} + +#adminmenu .wp-submenu a { + padding-left: 0; + padding-right: 12px; +} + +#adminmenu li.wp-has-current-submenu .wp-menu-arrow, +#adminmenu li.menu-top.current .wp-menu-arrow { + right: auto; + left: -9px; +} +#adminmenu .wp-menu-arrow div { + background: url(../images/menu-arrow-frame-rtl.png) top left no-repeat; +} + +#adminmenu .wp-menu-image img { + float: right; +} + +.js.folded #adminmenu .wp-submenu { + display: block; + left: auto; + right: 26px; +} + +.js.folded #adminmenu .wp-submenu.sub-open { + padding: 0 0 8px 8px; +} + +#adminmenu .wp-submenu .wp-submenu-head { + padding: 6px 10px 5px 4px; +} + +.js.folded #adminmenu .wp-submenu-wrap { + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-top-right-radius: 0; + -webkit-border-top-left-radius: 3px; + -khtml-border-bottom-right-radius: 0; + -khtml-border-bottom-left-radius: 3px; + -khtml-border-top-left-radius: 0; + -khtml-border-top-left-radius: 3px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topright: 0; + -moz-border-radius-topleft: 3px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 3px; + border-top-right-radius: 0; + border-top-left-radius: 3px; + border-width: 0 0 1px 1px; +} + +.js.folded #adminmenu .wp-submenu ul { + border-width: 0 1px 0 0; +} + +.js.folded #adminmenu .wp-submenu a { + padding-left: 0; + padding-right: 10px; +} + +.js.folded #adminmenu a.wp-has-submenu { + margin-left: 0; + margin-right: 40px; +} + +#adminmenu .wp-menu-toggle { + clear: left; + float: left; + padding: 1px 0 0 2px; +} + +#adminmenu .wp-menu-image img { + padding: 6px 1px 0 0; +} + +#adminmenu .awaiting-mod, +#adminmenu span.update-plugins, +#sidemenu li a span.update-plugins { + font-family: Tahoma, Arial, sans-serif; + margin-left: 0; + margin-right: 7px; +} + +.post-com-count-wrapper { + font-family: Tahoma, Arial, sans-serif; +} + +.column-response .post-com-count { + float: right; + margin-right: 0; + margin-left: 5px; +} + +.response-links { + float: right; +} + +#collapse-button { + float: right; +} + +/*------------------------------------------------------------------------------ + 8.0 - Layout Blocks +------------------------------------------------------------------------------*/ + +.widefat th { + font-family: Tahoma, Arial, sans-serif; +} + +.widefat td p { + margin: 2px 0 0.8em; +} + +.postbox-container { + float: right; + padding-right: 0; + padding-left: 0.5%; +} + +.postbox .handlediv { + float: left; +} + +/*------------------------------------------------------------------------------ + 9.0 - Dashboard +------------------------------------------------------------------------------*/ + +#the-comment-list p.comment-author img { + float: right; + margin-right: 0; + margin-left: 8px; +} + +/*------------------------------------------------------------------------------ + 10.0 - List Posts (/Pages/etc) +------------------------------------------------------------------------------*/ + +.fixed .column-comments { + text-align: right; +} +.fixed .column-comments .vers { + padding-left: 0; + padding-right: 3px; +} +.fixed .column-comments a { + float: right; +} +.sorting-indicator { + margin-left: 0; + margin-right: 7px; +} +th.sortable a span, +th.sorted a span { + float: right; +} + +/* Bulk Actions */ + +.tablenav-pages a { + margin-right: 0; + margin-left: 1px; +} +.tablenav-pages .next-page { + margin-left: 0; + margin-right: 2px; +} + +.tablenav a.button-secondary { + margin: 3px 0 0 8px; +} + +.tablenav .tablenav-pages { + float: left; +} + +.tablenav .displaying-num { + margin-right: 0; + margin-left: 10px; + font-family: Tahoma, Arial, sans-serif; + font-style: bold; +} + +.tablenav .actions { + padding: 2px 0 0 8px; +} + +.tablenav .delete { + margin-right: 0; + margin-left: 20px; +} + +.view-switch { + float: left; +} + +.filter { + float: right; + margin: -5px 10px 0 0; +} + +.filter .subsubsub { + margin-left: 0; + margin-right: -10px; +} + +#posts-filter fieldset { + float: right; + margin: 0 0 1em 1.5ex; +} + +#posts-filter fieldset legend { + padding: 0 1px .2em 0; +} + +/*------------------------------------------------------------------------------ + 10.1 - Inline Editing +------------------------------------------------------------------------------*/ + +#wpbody-content .inline-edit-row fieldset { + float: right; +} + +#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col { + border-width: 0 1px 0 0; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-bottom { + float: left; +} + +.inline-edit-row fieldset label span.title { + float: right; +} + +.inline-edit-row fieldset label span.input-text-wrap { + margin-left: 0; + margin-right: 5em; +} + +.quick-edit-row-post fieldset.inline-edit-col-right label span.title { + padding-right: 0; + padding-left: 0.5em; +} + +#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child { + margin-right: 0; + margin-left: 0.5em +} + +/* Styling */ + +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-title { + font-family: Tahoma, Arial, sans-serif; + font-style: normal; +} + +.inline-edit-row fieldset .inline-edit-date { + float: right; +} + +.inline-edit-row fieldset ul.cat-checklist label, +.inline-edit-row .catshow, +.inline-edit-row .cathide, +.inline-edit-row #bulk-titles div { + font-family: Tahoma, Arial, sans-serif; +} + +.quick-edit-row-post fieldset label.inline-edit-status { + float: right; +} + +#bulk-titles div a { + float: right; + margin: 3px -2px 0 3px; + overflow: hidden; + text-indent: -9999px; +} + + +/*------------------------------------------------------------------------------ + 11.0 - Write/Edit Post Screen +------------------------------------------------------------------------------*/ + +#titlediv #title-prompt-text, +#wp-fullscreen-title-prompt-text { + right:0; +} + +#sample-permalink { + direction:ltr; +} + +#sample-permalink #editable-post-name { + unicode-bidi:embed; +} +#wp-fullscreen-title-prompt-text { + left: auto; + right: 0; +} + +.postarea h3 label { + float: right; +} + +.postarea #add-media-button { + float: left; + right: auto; + left: 10px; +} + + +#edButtonPreview, +#edButtonHTML { + margin: 5px 0 0 5px; + float: left; +} + +#poststuff #edButtonHTML { + margin-right: 0; + margin-left: 15px; +} + +#media-buttons a { + padding: 0 10px 5px 0; +} + +.submitbox .submit { + text-align: right; +} + +.inside-submitbox #post_status { + margin: 2px -2px 2px 0; +} + +.submitbox .submit input { + margin-right: 0; + margin-left: 4px; +} + +#normal-sortables .postbox .submit { + float: left; +} + + +#post-body ul.category-tabs, +#post-body ul.add-menu-item-tabs { + float: right; + text-align: left; + /* Negative margin for the sake of those without JS: all tabs display */ + margin: 0 5px 0 -120px; +} + + +#post-body ul.category-tabs li.tabs, +#post-body ul.add-menu-item-tabs li.tabs { + -moz-border-radius: 3px 3px 0 0; + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 3px; + -khtml-border-top-left-radius: 0; + -khtml-border-top-right-radius: 3px; + -khtml-border-bottom-left-radius: 0; + -khtml-border-bottom-right-radius: 3px; + border-top-left-radius: 0; + border-top-right-radius: 3px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 3px; +} + +#post-body .categorydiv div.tabs-panel, +.taxonomy div.tabs-panel, +#post-body #linkcategorydiv div.tabs-panel { + margin: 0 125px 0 5px; +} + +#side-sortables .comments-box thead th, +#normal-sortables .comments-box thead th { + font-style: normal; +} + +#commentsdiv img.waiting { + padding-left: 0; + padding-right: 5px; +} + +#post-body .category-tabs li.tabs, +#post-body .add-menu-item-tabs li.tabs { + border-width: 1px 1px 1px 0; + margin-right: 0; + margin-left: -1px; +} + +/* positioning etc. */ + +#posts-filter fieldset { + float: right; + margin: 0 0 1em 1.5ex; +} + +#posts-filter fieldset legend { + padding: 0 1px .2em 0; +} + +/* Global classes */ + +#post-body .tagsdiv #newtag { + margin-right: 0; + margin-left: 5px; +} + +.autosave-info { + padding: 2px 2px 2px 15px; + text-align: left; +} + +#post-body .wp_themeSkin .mceStatusbar a.mceResize { + background: transparent url(../images/resize-rtl.gif) no-repeat scroll left bottom; + cursor: sw-resize; +} + +.curtime #timestamp { + background-position: right top; + padding-left: 0; + padding-right: 18px; +} + +/*------------------------------------------------------------------------------ + 11.1 - Custom Fields +------------------------------------------------------------------------------*/ + +#postcustomstuff table input, +#postcustomstuff table select, +#postcustomstuff table textarea { + margin: 8px 8px 8px 0; +} + +/*------------------------------------------------------------------------------ + 11.2 - Post Revisions +------------------------------------------------------------------------------*/ + +table.diff td, table.diff th { + font-family: Consolas, Monaco, monospace; +} + +/*------------------------------------------------------------------------------ + 12.0 - Categories +------------------------------------------------------------------------------*/ + +.category-adder { + margin-left: 0; + margin-right: 120px; +} + + +#post-body ul.category-tabs, +#post-body ul.add-menu-item-tabs { + float: right; + text-align: left; + /* Negative margin for the sake of those without JS: all tabs display */ + margin: 0 5px 0 -120px; +} + +#post-body ul.category-tabs li.tabs, +#post-body ul.add-menu-item-tabs li.tabs { + -moz-border-radius: 3px 3px 0 0; + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-left-radius: 0; + -webkit-border-bottom-right-radius: 3px; + -khtml-border-top-left-radius: 0; + -khtml-border-top-right-radius: 3px; + -khtml-border-bottom-left-radius: 0; + -khtml-border-bottom-right-radius: 3px; + border-top-left-radius: 0; + border-top-right-radius: 3px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 3px; +} + +#front-page-warning, +#front-static-pages ul, +ul.export-filters, +.inline-editor ul.cat-checklist ul, +.categorydiv ul.categorychecklist ul, +.customlinkdiv ul.categorychecklist ul, +.posttypediv ul.categorychecklist ul, +.taxonomydiv ul.categorychecklist ul, +#linkcategorydiv ul.categorychecklist ul { + margin-left: 0; + margin-right: 18px; +} + +#post-body .category-tabs li.tabs, +#post-body .add-menu-item-tabs li.tabs { + border-style: solid solid solid none; + border-width: 1px 1px 1px 0; + margin-right: 0; + margin-left: -1px; +} + +p.help, +p.description, +span.description, +.form-wrap p { + font-style: normal; + font-family: Tahoma, Arial, sans-serif; +} + +/*------------------------------------------------------------------------------ + 13.0 - Tags +------------------------------------------------------------------------------*/ + +.taghint { + margin: 15px 12px -24px 0; +} + +#poststuff .tagsdiv .howto { + margin: 0 8px 6px 0; +} + +.ac_results li { + text-align: right; +} + +/*------------------------------------------------------------------------------ + 14.0 - Media Screen +------------------------------------------------------------------------------*/ + +#wpbody-content .describe th { + text-align: right; + +} + +.describe .media-item-info .A1B1 { + padding: 0 10px 0 0; +} + +.media-upload-form td label { + margin-left: 6px; + margin-right: 2px; +} + +.media-upload-form .align .field label { + padding: 0 22px 0 0; + margin: 0 0 0 1em; +} + +.media-upload-form tr.image-size label { + margin: 0 3px 0 0; +} + +#wpbody-content .describe p.help { + padding: 0 5px 0 0; +} + +.media-item .error-div a.dismiss, +.describe-toggle-on, +.describe-toggle-off { + float: left; + margin-right: 0; + margin-left: 20px; +} + +.media-item .error-div { + padding-left: 0; + padding-right: 10px; +} + +.media-item .pinkynail { + float: right; +} + +.crunching { + text-align: left; + margin-right: 0; + margin-left: 5px; +} + +.bar { + border-right-width: 0; + border-left-width: 3px; + border-right-style: none; + border-left-style: solid; +} + +/*------------------------------------------------------------------------------ + 14.1 - Media Uploader +------------------------------------------------------------------------------*/ + +#find-posts-response .found-radio { + padding: 5px 8px 0 0; +} + + +.find-box-search label { + padding-right: 0; + padding-left: 6px; +} + +.find-box #resize-se { + right: auto; + left: 1px; +} + + +form.upgrade .hint { + font-style: normal; +} + + +/*------------------------------------------------------------------------------ + 14.2 - Image Editor +------------------------------------------------------------------------------*/ + +.imgedit-menu div { + float: right; +} + +.imgedit-help { + font-style: normal; +} + +.imgedit-submit-btn { + margin-left: 0; + margin-right: 20px; +} + + +/*------------------------------------------------------------------------------ + 15.0 - Comments Screen +------------------------------------------------------------------------------*/ + +.form-table th { + text-align: right; +} + +.form-table input.tog { + margin-right: 0; + margin-left: 2px; + float: right; +} + +.form-table table.color-palette { + float: right; +} + +/* reply to comments */ + +#replysubmit img.waiting, +.inline-edit-save img.waiting { + float: left; +} + +#replysubmit .button { + margin-right: 0; + margin-left: 5px; +} + +#edithead .inside { + float: right; + padding: 3px 5px 2px 0; +} + +.comment-ays th { + border-right-style: none; + border-left-style: solid; + border-right-width: 0; + border-left-width: 1px; +} + +.spam-undo-inside .avatar, +.trash-undo-inside .avatar { + margin-left: 8px; +} + +#comment-status-radio input { + margin: 2px 0 5px 3px; +} + + + +/*------------------------------------------------------------------------------ + 16.0 - Themes +------------------------------------------------------------------------------*/ + +td.available-theme { + text-align: right; +} + +#current-theme img { + float: right; + margin-right: 0; + margin-left: 1em; +} + +#broken-themes { + text-align: right; +} + +/*------------------------------------------------------------------------------ + 16.1 - Custom Header Screen +------------------------------------------------------------------------------*/ + +.appearance_page_custom-header .available-headers .default-header { + float: right; + margin: 0 0 20px 20px; +} + +.appearance_page_custom-header .random-header { + margin: 0 0 20px 20px; +} + +.appearance_page_custom-header .available-headers label input, +.appearance_page_custom-header .random-header label input { + margin-right: 0; + margin-left: 10px; +} + +/*------------------------------------------------------------------------------ + 16.2 - Custom Background Screen +------------------------------------------------------------------------------*/ + +/* No RTL for now, this space intentionally left blank */ + + +/*------------------------------------------------------------------------------ + 16.3 - Tabbed Admin Screen Interface (Experimental) +------------------------------------------------------------------------------*/ + +.nav-tab { + margin: 0 0 -1px 6px; +} + +h2 .nav-tab { + font-family: Tahoma, Arial, sans-serif; +} + + +/*------------------------------------------------------------------------------ + 17.0 - Plugins +------------------------------------------------------------------------------*/ + +.plugins .desc ul, +.plugins .desc ol { + margin: 0 2em 0 0; +} + +#wpbody-content .plugins .plugin-title, #wpbody-content .plugins .theme-title { + padding-right: 0; + padding-left: 12px; +} + + +/*------------------------------------------------------------------------------ + 18.0 - Users +------------------------------------------------------------------------------*/ + +#profile-page .form-table #rich_editing { + margin-right: 0; + margin-left: 5px +} + +#your-profile legend { + font-family: Tahoma, Arial, sans-serif; +} + +/*------------------------------------------------------------------------------ + 19.0 - Tools +------------------------------------------------------------------------------*/ + +/* Intentionally didn't RTLized the new press-this button; + +/*------------------------------------------------------------------------------ + 20.0 - Settings +------------------------------------------------------------------------------*/ + +#utc-time, #local-time { + padding-left: 0; + padding-right: 25px; + font-style: normal; + font-family: Tahoma, Arial, sans-serif; +} + +/*------------------------------------------------------------------------------ + 21.0 - Admin Footer +------------------------------------------------------------------------------*/ + +#footer { + margin-right: 0; + margin-left: 15px; +} + +/*------------------------------------------------------------------------------ + 22.0 - Misc +------------------------------------------------------------------------------*/ + +#template div { + margin-right: 0; + margin-left: 190px; +} + +.column-author img, .column-username img { + float: right; + margin-right: 0; + margin-left: 10px; +} + +.tagchecklist { + margin-left: 0; + margin-right: 14px; +} + +.tagchecklist strong { + margin-left: 0; + margin-right: -8px; +} + +.tagchecklist span { + margin-right: 0; + margin-left: 25px; + float: right; + +} +.tagchecklist span a { + margin: 6px -9px 0pt 0pt; + float: right; +} + +#poststuff h2 { + clear: right; +} + +#poststuff h3, +.metabox-holder h3 { + font-family: Tahoma, Arial, sans-serif; +} + +.tool-box .title { + font-family: Tahoma, Arial, sans-serif; +} + +#sidemenu { + margin: -30px 315px 0 15px; + float: left; + padding-left: 0; + padding-right: 10px; +} +#sidemenu a { + float: right; +} + +table .vers, +table .column-visible, +table .column-rating { + text-align: right; +} + + +/*------------------------------------------------------------------------------ + 23.0 - Dead +------------------------------------------------------------------------------*/ + +/* - Not used anywhere in WordPress - verify and then deprecate +------------------------------------------------------------------------------*/ + +/* No RTL for now, this space intentionally left blank */ + + +/* - Only used once or twice in all of WP - deprecate for global style +------------------------------------------------------------------------------*/ + +* html #template div {margin-left: 0;} + +.list-ajax-loading { + float: left; + margin-right: 0; + margin-left: 9px; +} + +/* - Used - but could/should be deprecated with a CSS reset +------------------------------------------------------------------------------*/ +/* No RTL for now, this space intentionally left blank */ + + +/*------------------------------------------------------------------------------ + 24.0 - TinyMCE tweaks + Small tweaks for until tinymce css files are proprely RTLized +------------------------------------------------------------------------------*/ +#editorcontainer .wp_themeSkin .mceStatusbar { + padding-left: 0; + padding-right: 5px; +} +#editorcontainer .wp_themeSkin .mceStatusbar div { + float: right; +} + +#editorcontainer .wp_themeSkin .mceStatusbar a.mceResize { + float: left; +} diff --git a/src/wp-admin/css/wp-admin.css b/src/wp-admin/css/wp-admin.css new file mode 100644 index 0000000..3468a62 --- /dev/null +++ b/src/wp-admin/css/wp-admin.css @@ -0,0 +1 @@ +p,ul,ol,blockquote,input,select{font-size:12px;}ol{list-style-type:decimal;margin-left:2em;}.code,code{font-family:Consolas,Monaco,monospace;}kbd,code{padding:1px 3px;margin:0 1px;font-size:11px;}.quicktags,.search{font:12px Georgia,"Times New Roman","Bitstream Charter",Times,serif;}.icon32{float:left;height:34px;margin:7px 8px 0 0;width:36px;}.key-labels label{line-height:24px;}.pre{white-space:pre-wrap;white-space:-moz-pre-wrap!important;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;}.howto{font-style:italic;display:block;font-family:sans-serif;}p.install-help{margin:8px 0;font-style:italic;}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],select{border-width:1px;border-style:solid;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}select option{padding:2px;}.submit{padding:1.5em 0;margin:5px 0;-moz-border-radius:0 0 3px 3px;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;-khtml-border-bottom-left-radius:3px;-khtml-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}form p.submit a.cancel:hover{text-decoration:none;}.submit input,.button,input.button,.button-primary,input.button-primary,.button-secondary,input.button-secondary,.button-highlighted,input.button-highlighted,#postcustomstuff .submit input{text-decoration:none;font-size:12px!important;line-height:13px;padding:3px 8px;cursor:pointer;border-width:1px;border-style:solid;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;-khtml-box-sizing:content-box;box-sizing:content-box;}#minor-publishing-actions input,#major-publishing-actions input,#minor-publishing-actions .preview{min-width:80px;text-align:center;}textarea.all-options,input.all-options{width:250px;}input.large-text,textarea.large-text{width:99%;}input.regular-text,#adduser .form-field input{width:25em;}input.small-text{width:50px;}#doaction,#doaction2,#post-query-submit{margin-right:8px;}.tablenav select[name="action"],.tablenav select[name="action2"]{width:130px;}.tablenav select[name="m"]{width:155px;}.tablenav select#cat{width:170px;}#wpcontent select{padding:2px;height:2em;font-size:12px;}#wpcontent option{padding:2px;}#timezone_string option{margin-left:1em;}label,#your-profile label+a{vertical-align:middle;}#misc-publishing-actions label{vertical-align:baseline;}#pass-strength-result{border-style:solid;border-width:1px;float:left;margin:13px 5px 5px 1px;padding:3px 5px;text-align:center;width:200px;display:none;}.indicator-hint{padding-top:8px;}p.search-box{float:right;margin:0;}#major-publishing-actions{padding:10px 10px 8px;clear:both;border-top:none;}#delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left;}#publishing-action{text-align:right;float:right;line-height:23px;}#post-body #minor-publishing{padding-bottom:10px;}#post-body #misc-publishing-actions{padding:0;}#post-body .misc-pub-section{border-right-width:1px;border-right-style:solid;border-bottom:0 none;min-height:30px;float:left;max-width:32%;}#post-body .misc-pub-section-last{border-right:0;}#misc-publishing-actions{padding:6px 0 16px 0;}.misc-pub-section{padding:6px 10px;border-width:1px 0;border-style:solid;}.misc-pub-section:first-child{border-top-width:0;}.misc-pub-section-last{border-bottom-width:0;}#minor-publishing-actions{padding:10px 10px 2px 8px;text-align:right;}#minor-publishing{border-bottom-width:1px;border-bottom-style:solid;-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;}#save-post{float:left;}#minor-publishing .ajax-loading{padding:3px 0 0 4px;float:left;}.preview{float:right;}#sticky-span{margin-left:18px;}#post-status-display,#post-visibility-display{font-weight:bold;}.side-info{margin:0;padding:4px;font-size:11px;}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom-width:1px;border-bottom-style:solid;}.side-info ul{margin:0;padding-left:18px;list-style:square;}a.button,a.button-primary,a.button-secondary{line-height:15px;padding:3px 10px;white-space:nowrap;-webkit-border-radius:10px;}.approve{display:none;}.unapproved .approve,.spam .approve,.trash .approve{display:inline;}.unapproved .unapprove{display:none;}td.action-links,th.action-links{text-align:right;}.describe .del-link{padding-left:5px;}#update-nag,.update-nag{line-height:19px;padding:5px 0;font-size:12px;text-align:center;margin:0 15px;border-width:1px;border-style:solid;border-top-width:0;border-top-style:none;-moz-border-radius:0 0 3px 3px;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-right-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.plugins .plugin-update{padding:0;}.plugin-update .update-message{margin:0 10px 8px 31px;font-weight:bold;}ul#dismissed-updates{display:none;}form.upgrade{margin-top:8px;}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0;}.ajax-feedback{visibility:hidden;vertical-align:bottom;}#ajax-response.alignleft{margin-left:2em;}#editorcontainer #content{font-family:Consolas,Monaco,monospace;padding:6px;line-height:150%;border:0 none;outline:none;resize:vertical;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-khtml-box-sizing:border-box;box-sizing:border-box;}#editorcontainer,#quicktags{border-style:solid;border-width:1px;border-collapse:separate;-moz-border-radius:3px 3px 0 0;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;}#quicktags{padding:0;margin-bottom:-3px;border-bottom-width:3px;background-image:url("../images/ed-bg.gif");background-position:left top;background-repeat:repeat-x;}#quicktags #ed_toolbar{padding:2px 4px 0;}#ed_toolbar input,#ed_reply_toolbar input{margin:3px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font-size:12px;}#ed_reply_toolbar input{margin:1px 2px 1px 1px;}#quicktags #ed_link,#ed_reply_toolbar #ed_reply_link{text-decoration:underline;}#quicktags #ed_del,#ed_reply_toolbar #ed_reply_del{text-decoration:line-through;}#quicktags #ed_em,#ed_reply_toolbar #ed_reply_em{font-style:italic;}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:999998;}#wp_editimgbtn,#wp_delimgbtn,#wp_editgallery,#wp_delgallery{margin:2px;padding:2px;border-width:1px;border-style:solid;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.fullscreen-overlay{z-index:149999;display:none;position:fixed;top:0;bottom:0;left:0;right:0;filter:inherit;}.fullscreen-active .fullscreen-overlay,.fullscreen-active #wp-fullscreen-body{display:block;}.fullscreen-fader{z-index:200000;}.fullscreen-active .fullscreen-fader{display:none;}#wp-fullscreen-body{width:100%;z-index:150005;display:none;position:absolute;top:0;left:0;}#wp-fullscreen-wrap{margin:0 auto 50px;position:relative;padding-top:60px;}#wp-fullscreen-title{font-size:1.7em;line-height:100%;outline:medium none;padding:6px 7px;width:100%;margin-bottom:30px;}#wp-fullscreen-container{padding:4px 10px 50px;}#wp-fullscreen-title,#wp-fullscreen-container{-moz-border-radius:0;-khtml-border-radius:0;-webkit-border-radius:0;border-radius:0;border:1px dashed transparent;background:transparent;-moz-transition-property:border-color;-moz-transition-duration:.6s;-webkit-transition-property:border-color;-webkit-transition-duration:.6s;-o-transition-property:border-color;-o-transition-duration:.6s;transition-property:border-color;transition-duration:.6s;}#wp_mce_fullscreen{width:100%;min-height:300px;border:0;background:transparent;font-family:Consolas,Monaco,monospace;line-height:1.6em;padding:0;overflow-y:hidden;outline:none;resize:none;}#wp-fullscreen-tagline{color:#BBB;font-size:18px;float:right;padding-top:5px;}#fullscreen-topbar{position:fixed;top:0;left:0;z-index:150050;border-bottom-style:solid;border-bottom-width:1px;min-width:800px;width:100%;height:40px;}#wp-fullscreen-toolbar{padding:6px 10px 0;clear:both;max-width:1100px;min-width:820px;margin:0 auto;}#wp-fullscreen-mode-bar,#wp-fullscreen-button-bar,#wp-fullscreen-close,#wp-fullscreen-count{float:left;}#wp-fullscreen-save{float:right;}#wp-fullscreen-save{padding:2px 2px 0 5px;}#wp-fullscreen-count,#wp-fullscreen-close{padding-top:5px;}#wp-fullscreen-central-toolbar{margin:auto;padding:0;}#wp-fullscreen-buttons>div{float:left;}#wp-fullscreen-mode-bar{padding:1px 14px 0 0;}#wp-fullscreen-modes a{display:block;font-size:11px;text-decoration:none;float:left;margin:1px 0 0 0;padding:2px 6px 2px;border-width:1px 1px 1px 0;border-style:solid;border-color:#bbb;color:#777;text-shadow:0 1px 0 #fff;background-color:#f4f4f4;background-image:-moz-linear-gradient(bottom,#e4e4e4,#f9f9f9);background-image:-webkit-gradient(linear,left bottom,left top,from(#e4e4e4),to(#f9f9f9));}#wp-fullscreen-modes a:hover,.wp-html-mode #wp-fullscreen-modes a:last-child,.wp-tmce-mode #wp-fullscreen-modes a:first-child{color:#333;border-color:#999;background-color:#eee;background-image:-moz-linear-gradient(bottom,#f9f9f9,#e0e0e0);background-image:-webkit-gradient(linear,left bottom,left top,from(#f9f9f9),to(#e0e0e0));}#wp-fullscreen-modes a:first-child{border-width:1px;-moz-border-radius:3px 0 0 3px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px;}#wp-fullscreen-modes a:last-child{-moz-border-radius:0 3px 3px 0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-khtml-border-top-right-radius:3px;-khtml-border-bottom-right-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;}#wp-fullscreen-buttons .active a{background:inherit;}#wp-fullscreen-buttons .hidden{display:none;}#wp-fullscreen-buttons .disabled{opacity:.5;}.wp-html-mode #wp-fullscreen-buttons div{display:none;}.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both{display:block;}#fullscreen-topbar.fullscreen-make-sticky{display:block!important;}#wp-fullscreen-save img{vertical-align:middle;}#wp-fullscreen-save img,#wp-fullscreen-save span{padding-right:4px;display:none;}#wp-fullscreen-buttons .mce_image .mce_image{background-image:url("../images/menu.png?ver=20100531");background-position:-124px -38px;}#wp-fullscreen-buttons .mce_image .mce_image:hover{background-position:-124px -6px;}.fullscreen-active #TB_overlay{z-index:150100;}.fullscreen-active #TB_window{z-index:150102;}#wp_mce_fullscreen_ifr{background:transparent;}#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst{display:none;}#wp-fullscreen-container .wp_themeSkin table td{vertical-align:top;}#wphead-info{margin:0 0 0 15px;}#user_info{float:right;font-size:12px;line-height:26px;height:25px;position:relative;z-index:49;border-style:solid;border-width:0;margin-top:3px;padding:0 2px 0 6px;}#user_info.active{border-width:1px;margin-right:-1px;margin-top:2px;-moz-border-radius:3px 3px 0 0;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;}#user_info p{margin:0;padding:0;line-height:25px;cursor:pointer;}#user_info .hide-if-no-js p{margin:0 20px 0 0;}#user_info:hover .hide-if-no-js p{text-decoration:underline;}#user_info.active .hide-if-no-js p{text-decoration:none;}#user_info_arrow{height:22px;width:22px;position:absolute;right:3px;top:0;cursor:pointer;}#user_info_links_wrap{min-width:100px;width:100%;position:absolute;top:25px;right:0;padding:0;text-shadow:rgba(255,255,255,0.7) 0 1px 0;}#user_info_links{position:absolute;left:-1px;right:-1px;overflow:hidden;}#user_info.active #user_info_links ul{margin-top:0;-moz-transition:margin-top 200ms;-webkit-transition:margin-top 200ms;-o-transition:margin-top 200ms;transition:margin-top 200ms;}#user_info_links ul{border-width:1px;border-style:solid;margin-top:-1000px;-moz-transition:margin-top 500ms ease-in;-webkit-transition:margin-top 500ms ease-in;-o-transition:margin-top 500ms ease-in;transition:margin-top 500ms ease-in;}#user_info_links,#user_info_links ul,#user_info_links li:last-child{-moz-border-radius:0 0 3px 3px;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-right-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}#user_info_links li{display:block;margin:0;}#user_info_links a{display:block;padding:6px 8px;}#wphead{height:32px;margin-right:20px;margin-left:2px;}#wphead a,#adminmenu a,#sidemenu a,#taglist a,#catlist a,#show-settings a{text-decoration:none;}#header-logo{float:left;margin:7px 0;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;user-select:none;}#wphead h1{font:normal 16px Georgia,"Times New Roman","Bitstream Charter",Times,serif;padding:6px 8px 5px;margin:0;float:left;}#wphead h1 a:hover{text-decoration:none;}#wphead h1 a:hover #site-title{text-decoration:underline;}#favorite-actions{margin:0 12px 0 15px;min-width:130px;position:relative;display:inline-block;top:-1px;}#favorite-first{-moz-border-radius:12px;-khtml-border-radius:12px;-webkit-border-radius:12px;border-radius:12px;line-height:15px;padding:0 30px 0 0;border-width:1px;border-style:solid;}#favorite-inside{margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;-moz-border-radius:0 0 12px 12px;-webkit-border-bottom-right-radius:12px;-webkit-border-bottom-left-radius:12px;-khtml-border-bottom-right-radius:12px;-khtml-border-bottom-left-radius:12px;border-bottom-right-radius:12px;border-bottom-left-radius:12px;}#favorite-first a{padding:2px 0 2px 12px;}#favorite-actions a{display:block;text-decoration:none;font-size:11px;}#favorite-inside a{padding:3px 5px 3px 10px;line-height:20px;}#favorite-toggle{height:18px;position:absolute;right:0;top:1px;width:28px;border-width:0 0 0 1px;border-style:solid;}#favorite-actions .slide-down{-moz-border-radius:12px 12px 0 0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:none;}#screen-meta{position:relative;clear:both;}#screen-meta-links{margin:0 24px 0 0;}#screen-meta .screen-reader-text{visibility:hidden;}#screen-options-link-wrap,#contextual-help-link-wrap{float:right;height:22px;padding:0;margin:0 0 0 6px;font-family:sans-serif;-moz-border-radius-bottomleft:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}#contextual-help-wrap li{list-style-type:disc;margin-left:18px;}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block;}.toggle-arrow-active{background-position:bottom left;}#screen-meta a.show-settings{text-decoration:none;z-index:1;padding:0 16px 0 6px;height:22px;line-height:22px;font-size:12px;display:block;text-shadow:rgba(255,255,255,0.7) 0 1px 0;}#screen-meta a.show-settings:hover{text-decoration:none;}#screen-options-wrap h5,#contextual-help-wrap h5{margin:8px 0;font-size:13px;}#screen-options-wrap,#contextual-help-wrap{border-style:none solid solid;border-top:0 none;border-width:0 1px 1px;margin:0 20px 0 0;padding:8px 12px 12px;}.metabox-prefs label{display:inline-block;padding-right:15px;white-space:nowrap;line-height:30px;}.metabox-prefs label input{margin:0 5px 0 2px;}.metabox-prefs label a{display:none;}#adminmenuback,#adminmenuwrap{border-width:0 1px 0 0;border-style:solid;}#adminmenuwrap{position:relative;}#adminmenushadow{position:absolute;top:0;right:0;bottom:0;width:6px;z-index:20;}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;user-select:none;}#adminmenu .wp-submenu{display:none;list-style:none;padding:0;margin:0;position:relative;z-index:2;}#adminmenu .wp-submenu a{font-size:12px;line-height:18px;}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{font-weight:bold;}#adminmenu a.menu-top,#adminmenu .wp-submenu-head{font-size:13px;line-height:18px;}#adminmenu div.wp-submenu-head{display:none;}.js.folded #adminmenu div.wp-submenu-head{display:block;}.js.folded #adminmenu a.menu-top,body.no-js #adminmenu .wp-menu-toggle,.js.folded #adminmenu div.wp-menu-toggle{display:none;}body.js #adminmenu li.wp-menu-open .wp-submenu,body.no-js #adminmenu .open-if-no-js .wp-submenu,body.no-js #adminmenu li.wp-has-current-submenu .wp-submenu{display:block;}#adminmenu div.wp-menu-image{float:left;width:28px;height:28px;}.js.folded #adminmenu div.wp-menu-image{width:32px;}#adminmenu li{margin:0;padding:0;cursor:pointer;}#adminmenu a{display:block;line-height:18px;padding:2px 5px;}#adminmenu li.menu-top{min-height:26px;position:relative;}#adminmenu a.menu-top{font-weight:bold;line-height:18px;min-width:10em;padding:5px 5px;border-width:1px 0 1px;border-style:solid;}#adminmenu li.wp-menu-open{border-width:0 0 1px;border-style:solid;}#adminmenu .wp-submenu a{margin:0;padding-left:12px;}.wp-menu-arrow{display:none;}#adminmenu li.wp-has-current-submenu .wp-menu-arrow,#adminmenu li.menu-top.current .wp-menu-arrow{display:block;position:absolute;right:-9px;top:0;cursor:auto;z-index:25;}#adminmenu .wp-menu-arrow div{width:15px;height:30px;background:url(../images/menu-arrow-frame.png) top right no-repeat;}#adminmenu .wp-submenu li{padding:0;margin:0;}.js.folded #adminmenu li.menu-top{width:32px;height:29px;border-width:1px 0;border-style:solid;}#adminmenu .wp-menu-image img{float:left;padding:8px 6px 0;opacity:.6;filter:alpha(opacity=60);}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1;filter:alpha(opacity=100);}#adminmenu li.wp-menu-separator{height:3px;padding:0;margin:0;border-width:1px 0;border-style:solid;cursor:inherit;}#adminmenu div.separator{height:1px;padding:0;border-width:1px 0 0 0;border-style:solid;}.js.folded #adminmenu .wp-submenu{display:block;position:absolute;top:-5px;left:26px;z-index:999;width:0;padding:0;overflow:hidden;-moz-transition:width 200ms ease-out;-webkit-transition:width 200ms ease-out;-o-transition:width 200ms ease-out;transition:width 200ms ease-out;}.js.folded #adminmenu .wp-submenu.sub-open{padding:0 8px 8px 0;}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 4px 5px 10px;cursor:default;border-width:1px 0;border-style:solid;}.js.folded #adminmenu .wp-submenu-wrap{margin-top:4px;border-width:0 1px 1px 0;border-style:solid;position:relative;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;-khtml-border-bottom-right-radius:3px;-khtml-border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-moz-border-radius-topright:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.js.folded #adminmenu .wp-submenu ul{border-width:0 0 0 1px;border-style:solid;}.js.folded #adminmenu .wp-submenu a{padding-left:10px;}.js.folded #adminmenu a.wp-has-submenu{margin-left:40px;}#adminmenu .wp-menu-toggle{width:18px;clear:right;float:right;margin:1px 0 0;height:27px;padding:1px 2px 0 0;cursor:pointer;}#adminmenu .wp-menu-image a{height:24px;}#adminmenu .wp-menu-image img{padding:6px 0 0 1px;}#adminmenu .awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{position:absolute;font-family:sans-serif;font-size:9px;line-height:17px;font-weight:bold;margin-top:1px;margin-left:7px;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span,#sidemenu li a span.update-plugins span{display:block;padding:0 6px;}#adminmenu li span.count-0,#sidemenu li a .count-0{display:none;}.post-com-count-wrapper{min-width:22px;font-family:sans-serif;}.post-com-count{height:1.3em;line-height:1.1em;display:block;text-decoration:none;padding:0 0 6px;cursor:pointer;background-position:center -80px;background-repeat:no-repeat;}.post-com-count span{font-size:11px;font-weight:bold;height:1.4em;line-height:1.4em;min-width:.7em;padding:0 6px;display:inline-block;cursor:pointer;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;}strong .post-com-count{background-position:center -55px;}.post-com-count:hover{background-position:center -3px;}.column-response .post-com-count{float:left;margin-right:5px;text-align:center;}.response-links{float:left;}#the-comment-list .attachment-80x60{padding:4px 8px;}#collapse-menu{font-size:12px;line-height:34px;}.js.folded #collapse-menu span{display:none;}#collapse-button,#collapse-button div{width:15px;height:15px;}#collapse-button{float:left;margin:8px 6px;border-width:1px;border-style:solid;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;}body.wp-admin{min-width:785px;}body.admin-bar #wphead,body.admin-bar #adminmenu{padding-top:28px;}.narrow{width:70%;margin-bottom:40px;}.narrow p{line-height:150%;}.widefat th,.widefat td{overflow:hidden;}.widefat th{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:normal;}.widefat td p{margin:2px 0 .8em;}.widefat .column-comment p{margin:.6em 0;}.postbox-container{float:left;padding-right:.5%;}.postbox-container .meta-box-sortables{min-height:300px;}.postbox .hndle{cursor:move;}.hndle a{font-size:11px;font-weight:normal;}.postbox .handlediv{float:right;width:27px;height:30px;cursor:pointer;}.sortable-placeholder{border-width:1px;border-style:dashed;margin-bottom:20px;}.widget,.postbox,.stuffbox{margin-bottom:20px;padding:0;border-width:1px;border-style:solid;line-height:1;}.widget .widget-top,.postbox h3,.stuffbox h3{margin-top:1px;border-bottom-width:1px;border-style:solid;cursor:move;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;user-select:none;}.postbox .inside,.stuffbox .inside{padding:0 10px;}.postbox.closed h3{border:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;}.postbox table.form-table{margin-bottom:0;}.postbox input[type="text"],.postbox textarea,.stuffbox input[type="text"],.stuffbox textarea{border-width:1px;border-style:solid;}.temp-border{border:1px dotted #ccc;}.columns-prefs label{padding:0 5px;}#wpbody-content .metabox-holder{padding-top:10px;}#dashboard-widgets .meta-box-sortables{margin:0 5px;}#dashboard_recent_comments div.undo{border-top-style:solid;border-top-width:1px;margin:0 -10px;padding:3px 8px;font-size:11px;}#the-comment-list td.comment p.comment-author{margin-top:0;margin-left:0;}#the-comment-list p.comment-author img{float:left;margin-right:8px;}#the-comment-list p.comment-author strong a{border:none;}#the-comment-list td{vertical-align:top;}#the-comment-list td.comment{word-wrap:break-word;}table.fixed{table-layout:fixed;}.fixed .column-rating,.fixed .column-visible{width:8%;}.fixed .column-date,.fixed .column-parent,.fixed .column-links{width:10%;}.fixed .column-response,.fixed .column-author,.fixed .column-categories,.fixed .column-tags,.fixed .column-rel,.fixed .column-role{width:15%;}.fixed .column-comments{width:4em;padding:8px 0;text-align:left;}.fixed .column-comments .vers{padding-left:3px;}.fixed .column-comments a{float:left;}.fixed .column-slug{width:25%;}.fixed .column-posts{width:10%;}.fixed .column-icon{width:80px;}#commentsdiv .fixed .column-author,#comments-form .fixed .column-author{width:20%;}#commentsdiv.postbox .inside{line-height:1.4em;margin:0;padding:0;}#commentsdiv.postbox .inside .row-actions{line-height:18px;}#commentsdiv.postbox .inside td{padding:1em 10px;}#commentsdiv.postbox .inside .column-author{width:33%;}#commentsdiv.postbox .inside p{margin:6px 10px 8px;}#commentsdiv.postbox .column-comment p{margin:.6em 0;}#commentsdiv.postbox #replyrow td{padding:0;}.sorting-indicator{display:none;width:7px;height:4px;margin-top:8px;margin-left:7px;background-image:url(../images/sort.gif);background-repeat:no-repeat;}.fixed .column-comments .sorting-indicator{margin-top:3px;}.widefat th.sortable,.widefat th.sorted{padding:0;}th.sortable a,th.sorted a{display:block;overflow:hidden;padding:7px 7px 8px;}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0;}th.sortable a span,th.sorted a span{float:left;cursor:pointer;}th.sorted.asc .sorting-indicator,th.desc:hover span.sorting-indicator{display:block;background-position:0 0;}th.sorted.desc .sorting-indicator,th.asc:hover span.sorting-indicator{display:block;background-position:-7px 0;}.tablenav-pages a{border-bottom-style:solid;border-bottom-width:2px;font-weight:bold;margin-right:1px;padding:0 2px;}.tablenav-pages .current-page{text-align:center;}.tablenav-pages .next-page{margin-left:2px;}.tablenav a.button-secondary{display:block;margin:3px 8px 0 0;}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle;}.tablenav .tablenav-pages{float:right;display:block;cursor:default;height:30px;line-height:30px;font-size:12px;}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none;}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;border:none;padding:3px 6px;border-width:1px;border-style:solid;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.tablenav .tablenav-pages a.disabled:hover{cursor:default;}.tablenav .tablenav-pages a.disabled:active{cursor:default;}.tablenav .displaying-num{margin-right:10px;font-size:12px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-style:italic;}.tablenav .actions{padding:2px 8px 0 0;}.tablenav .delete{margin-right:20px;}.view-switch{float:right;margin:6px 8px 0;}.view-switch a{text-decoration:none;}.filter{float:left;margin:-5px 0 0 10px;}.filter .subsubsub{margin-left:-10px;margin-top:13px;}.screen-per-page{width:3em;}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0;}#posts-filter fieldset legend{padding:0 0 .2em 1px;}span.post-state-format{font-weight:normal;}tr.inline-edit-row td{padding:0 .5em;}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%;}#wpbody-content .inline-edit-row fieldset .inline-edit-col{padding:0 .5em;}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 0 0 1px;border-style:none none none solid;}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%;}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%;}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%;}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%;}#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right{width:49%;}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%;}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%;}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:right;width:69%;}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px;}.inline-edit-row fieldset .inline-edit-group{clear:both;}.inline-edit-row fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0;}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px;}.inline-edit-row h4{margin:.2em 0;padding:0;line-height:23px;}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{margin:0;padding:0;line-height:27px;}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0;}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em;}.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:5em;}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em;}.inline-edit-row .input-text-wrap input[type=text]{width:100%;}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:text-bottom;}.inline-edit-row fieldset label textarea{width:100%;height:4em;}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%;}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:.5em;}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em;}.inline-edit-row h4{text-transform:uppercase;}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-style:italic;line-height:1.8em;}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea{border-style:solid;border-width:1px;}.inline-edit-row fieldset .inline-edit-date{float:left;}.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.1em;}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em;}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em;}.inline-edit-row .catshow,.inline-edit-row .cathide{cursor:pointer;}ul.cat-checklist{height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0;}#bulk-titles{display:block;height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0 0 5px;}.inline-edit-row fieldset ul.cat-checklist li,.inline-edit-row fieldset ul.cat-checklist input{margin:0;}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:sans-serif;font-style:normal;font-size:11px;}table .inline-edit-row fieldset ul.cat-hover{height:auto;max-height:30em;overflow-y:auto;position:absolute;}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em;}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%;}.quick-edit-row-post fieldset label.inline-edit-status{float:left;}#bulk-titles{line-height:140%;}#bulk-titles div{margin:.2em .3em;}#bulk-titles div a{cursor:pointer;display:block;float:left;height:10px;margin:3px 3px 0 -2px;overflow:hidden;position:relative;text-indent:-9999px;width:10px;}#titlediv{position:relative;margin-bottom:20px;}#titlediv label{cursor:text;}#titlediv div.inside{margin:0;}#poststuff #titlewrap{border:0;padding:0;}#titlediv #title{padding:3px 4px;border-width:1px;border-style:solid;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;font-size:1.7em;line-height:100%;width:100%;outline:none;}#titlediv #title-prompt-text,#wp-fullscreen-title-prompt-text{color:#bbb;position:absolute;font-size:1.7em;padding:8px;}#wp-fullscreen-title-prompt-text{left:0;padding:11px;}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px;}input#link_description,input#link_url{width:98%;}#pending{background:0 none;border:0 none;padding:0;font-size:11px;margin-top:-1px;}#edit-slug-box{height:1em;margin-top:8px;padding:0 7px;}#editable-post-name-full{display:none;}#editable-post-name input{width:16em;}.postarea h3 label{float:left;}.postarea #add-media-button{float:right;margin:7px 0 0;position:relative;right:10px;}#poststuff #editor-toolbar{height:30px;}.wp_themeSkin tr.mceFirst td.mceToolbar{border-width:0 0 1px;border-style:none none solid;}#edButtonPreview,#edButtonHTML{height:18px;margin:5px 5px 0 0;padding:4px 5px 2px;float:right;cursor:pointer;border-width:1px;border-style:solid;-moz-border-radius:3px 3px 0 0;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;}.js .theEditor{color:white;}#poststuff #edButtonHTML{margin-right:15px;}#media-buttons{cursor:default;padding:8px 8px 0;}#media-buttons a{cursor:pointer;padding:0 0 5px 10px;}#media-buttons img,#submitpost #ajax-loading,#submitpost .ajax-loading{vertical-align:middle;}#wpcontent .ajax-loading{visibility:hidden;}.submitbox .submit{text-align:left;padding:12px 10px 10px;font-size:11px;}.submitbox .submitdelete{border-bottom-width:1px;border-bottom-style:solid;text-decoration:none;padding:1px 2px;}.inside-submitbox #post_status{margin:2px 0 2px -2px;}.submitbox .submit a:hover{border-bottom-width:1px;border-bottom-style:solid;}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px;}#post-status-select,#post-format{line-height:2.5em;margin-top:3px;}#post-body #normal-sortables{min-height:50px;}#post-body #advanced-sortables{min-height:20px;}.postbox{-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;position:relative;min-width:255px;}#trackback_url{width:99%;}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:right;padding:0 12px;margin:0;}#side-sortables .category-add input{width:94%;}#side-sortables .category-add select{width:100%;}#side-sortables .category-add input.category-add-sumbit,#post-body .category-add input.category-add input.category-add-sumbit{width:auto;}#post-body ul.category-tabs,#post-body ul.add-menu-item-tabs{float:left;width:120px;text-align:right;margin:0 -120px 0 5px;padding:0;}#post-body ul.category-tabs li,#post-body ul.add-menu-item-tabs li{padding:8px;}#post-body ul.category-tabs li.tabs,#post-body ul.add-menu-item-tabs li.tabs{-moz-border-radius:3px 0 0 3px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px;}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a{font-weight:bold;text-decoration:none;}.wp-tab-panel,.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,#linkcategorydiv div.tabs-panel{height:200px;overflow:auto;padding:.5em .9em;border-style:solid;border-width:1px;}.nav-menus-php .customlinkdiv div.tabs-panel,.nav-menus-php .posttypediv div.tabs-panel,.nav-menus-php .taxonomydiv div.tabs-panel{height:auto;max-height:205px;}div.tabs-panel-active{display:block;}div.tabs-panel-inactive{display:none;}#post-body .categorydiv div.tabs-panel,.taxonomy div.tabs-panel,#post-body #linkcategorydiv div.tabs-panel{margin:0 5px 0 125px;}#side-sortables .category-tabs li,#side-sortables .add-menu-item-tabs li,.wp-tab-bar li{display:inline;line-height:1.35em;}#side-sortables .category-tabs a,#side-sortables .add-menu-item-tabs a,.wp-tab-bar a{text-decoration:none;}#side-sortables .category-tabs,#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px;}.categorydiv ul,.customlinkdiv ul,.posttypediv ul,.taxonomydiv ul,#linkcategorydiv ul{list-style:none;padding:0;margin:0;}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:3px 7px;}#side-sortables .submitbox .submit input,#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover{border:0 none;}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0;}#side-sortables .comments-box,#normal-sortables .comments-box{border:0 none;}ul.category-tabs,ul.add-menu-item-tabs,ul.wp-tab-bar{margin-top:12px;}#side-sortables .comments-box thead th,#normal-sortables .comments-box thead th{background:transparent;padding:0 7px 4px;font-style:italic;}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-style:solid solid none;border-width:1px 1px 0;}#commentsdiv img.waiting{padding-left:5px;}#post-body .category-tabs li.tabs,#post-body .add-menu-item-tabs li.tabs{border-style:solid none solid solid;border-width:1px 0 1px 1px;margin-right:-1px;}ul.category-tabs li,ul.add-menu-item-tabs li,ul.wp-tab-bar li{padding:5px;-moz-border-radius:3px 3px 0 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}form#tags-filter{position:relative;}.screen-per-page{width:3em;}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0;}#posts-filter fieldset legend{padding:0 0 .2em 1px;}td.post-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;}td.post-title p,td.plugin-title p{margin:6px 0;}.wp-hidden-children .wp-hidden-child,.ui-tabs-hide{display:none;}.commentlist .avatar{vertical-align:text-top;}#post-body .tagsdiv #newtag{margin-right:5px;width:16em;}#side-sortables input#post_password{width:94%;}#side-sortables .tagsdiv #newtag{width:68%;}#post-status-info{border-width:0 1px 1px;border-style:none solid solid;width:100%;-moz-border-radius:0 0 3px 3px;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;-khtml-border-bottom-left-radius:3px;-khtml-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}#post-status-info td{font-size:12px;}.autosave-info{padding:2px 15px 2px 2px;text-align:right;}#editorcontent #post-status-info{border:none;}#post-body .wp_themeSkin .mceStatusbar a.mceResize{display:block;background:transparent url(../images/resize.gif) no-repeat scroll right bottom;width:12px;cursor:se-resize;margin:0 2px;position:relative;top:22px;}#wp-word-count{display:block;padding:2px 7px;}#timestampdiv select{height:20px;line-height:14px;padding:0;vertical-align:top;}#jj,#hh,#mn{width:2em;padding:1px;font-size:12px;}#aa{width:3.4em;padding:1px;font-size:12px;}.curtime #timestamp{background-repeat:no-repeat;background-position:left top;padding-left:18px;}#timestampdiv{padding-top:5px;line-height:23px;}#timestampdiv p{margin:8px 0 6px;}#timestampdiv input{border-width:1px;border-style:solid;}#postcustomstuff table,#postcustomstuff input,#postcustomstuff textarea{border-width:1px;border-style:solid;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}#postcustomstuff .updatemeta,#postcustomstuff .deletemeta{margin:auto;}#postcustomstuff thead th{padding:5px 8px 8px;}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:5px 8px;}#side-sortables #postcustom #postcustomstuff .submit{padding:0 5px;}#side-sortables #postcustom #postcustomstuff td.left input{margin:3px 3px 0;}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px;margin:3px;}#postcustomstuff table{margin:0;width:100%;border-width:1px;border-style:solid;border-spacing:0;}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:95%;margin:8px 0 8px 8px;}#postcustomstuff th.left,#postcustomstuff td.left{width:38%;}#postcustomstuff .submit input{width:auto;}#postcustomstuff #newmeta .submit{padding:0 8px;}#postcustomstuff table #addmetasub{width:auto;}#postcustomstuff #newmetaleft{vertical-align:top;}#postcustomstuff #newmetaleft a{padding:0 10px;text-decoration:none;}table.diff{width:100%;}table.diff col.content{width:50%;}table.diff tr{background-color:transparent;}table.diff td,table.diff th{padding:.5em;font-family:Consolas,Monaco,monospace;border:none;}table.diff .diff-deletedline del,table.diff .diff-addedline ins{text-decoration:none;}.category-adder{margin-left:120px;padding:4px 0;}.category-adder h4{margin:0 0 8px;}#side-sortables .category-adder{margin:0;}#post-body .category-add input,.category-add select{width:30%;}#side-sortables .category-add select{width:100%;}#side-sortables .category-add input.category-add-sumbit,#post-body .category-add input.category-add input.category-add-sumbit{width:auto;}#post-body ul.category-tabs,#post-body ul.add-menu-item-tabs{float:left;width:120px;text-align:right;margin:0 -120px 0 5px;padding:0;}#post-body ul.category-tabs li,#post-body ul.add-menu-item-tabs li{padding:8px;}#post-body ul.category-tabs li.tabs,#post-body ul.add-menu-item-tabs li.tabs{-moz-border-radius:3px 0 0 3px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px;}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a{font-weight:bold;text-decoration:none;}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,#linkcategorydiv div.tabs-panel{height:200px;overflow:auto;padding:.5em .9em;border-style:solid;border-width:1px;}.nav-menus-php .customlinkdiv div.tabs-panel,.nav-menus-php .posttypediv div.tabs-panel,.nav-menus-php .taxonomydiv div.tabs-panel{height:auto;max-height:205px;}div.tabs-panel-active{display:block;}div.tabs-panel-inactive{display:none;}#post-body .categorydiv div.tabs-panel,.taxonomy div.tabs-panel,#post-body #linkcategorydiv div.tabs-panel{margin:0 5px 0 125px;}.categorydiv ul,.customlinkdiv ul,.posttypediv ul,.taxonomydiv ul,#linkcategorydiv ul{list-style:none;padding:0;margin:0;}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,#linkcategorydiv ul.categorychecklist ul{margin-left:18px;}ul.categorychecklist li{margin:0;padding:0;line-height:19px;word-wrap:break-word;}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid;}ul.category-tabs,ul.add-menu-item-tabs{margin-top:12px;}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs{border-style:solid solid none;border-width:1px 1px 0;}#post-body .category-tabs li.tabs,#post-body .add-menu-item-tabs li.tabs{border-style:solid none solid solid;border-width:1px 0 1px 1px;margin-right:-1px;}ul.category-tabs li,ul.add-menu-item-tabs li{padding:5px;-moz-border-radius:3px 3px 0 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.form-wrap{margin:10px 0;width:97%;}.form-wrap p,.form-wrap label{font-size:11px;}.form-wrap label{display:block;padding:2px;font-size:12px;}.form-field input,.form-field textarea{border-style:solid;border-width:1px;width:95%;}p.description,.form-wrap p{margin:2px 0 5px;}p.help,p.description,span.description,.form-wrap p{font-size:12px;font-style:italic;font-family:sans-serif;}.form-wrap .form-field{margin:0 0 10px;padding:8px;}.col-wrap h3{margin:12px 0;font-size:1.1em;}.col-wrap p.submit{margin-top:-10px;}.taghint{color:#aaa;margin:15px 0 -24px 12px;}#poststuff .tagsdiv .howto{margin:0 0 6px 8px;}.ajaxtag .newtag{position:relative;}.tagsdiv .newtag{width:180px;}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px;}#post-body-content .tagsdiv .the-tags{margin:0 5px;}p.popular-tags{-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;border-width:1px;border-style:solid;line-height:2em;padding:8px 12px 12px;text-align:justify;}p.popular-tags a{padding:0 3px;}.tagcloud{width:97%;margin:0 0 40px;text-align:justify;}.tagcloud h3{margin:2px 0 12px;}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;display:none;border-width:1px;border-style:solid;}.ac_results li{padding:2px 5px;white-space:nowrap;text-align:left;}.ac_over{cursor:pointer;}.ac_match{text-decoration:underline;}#wpbody-content #media-items .describe{border-collapse:collapse;width:100%;border-top-style:solid;border-top-width:1px;clear:both;cursor:default;padding:5px;}#wpbody-content .describe th{vertical-align:top;text-align:left;padding:10px;width:140px;}#wpbody-content .describe .media-item-info tr{background-color:transparent;}#wpbody-content .describe .media-item-info td{padding:4px 10px 0;}.describe .media-item-info .A1B1{padding:0 0 0 10px;}#wpbody-content .filename{padding:0 10px;}#wpbody-content .media-item .thumbnail{max-height:128px;max-width:128px;}#wpbody-content #async-upload-wrap a{display:none;}.media-upload-form td label{margin-right:6px;margin-left:2px;}.media-upload-form .align .field label{display:inline;padding:0 0 0 22px;margin:0 1em 0 0;font-weight:bold;}.media-upload-form tr.image-size label{margin:0 0 0 3px;font-weight:bold;}.media-upload-form th.label label{font-weight:bold;margin:.5em;font-size:13px;}.media-upload-form th.label label span{padding:0 5px;}abbr.required{border:medium none;text-decoration:none;}#wpbody-content .describe input[type="text"],#wpbody-content .describe textarea{width:460px;}#wpbody-content .describe p.help{margin:0;padding:0 0 0 5px;}.media-item .error-div a.dismiss,.describe-toggle-on,.describe-toggle-off{display:block;line-height:36px;float:right;margin-right:20px;}.describe-toggle-off{display:none;}#wpbody-content .media-item{border-bottom-style:solid;border-bottom-width:1px;min-height:36px;position:relative;width:100%;}#wpbody-content .media-single .media-item{border-bottom-style:none;border-bottom-width:0;}#wpbody-content #media-items{border-style:solid solid none;border-width:1px;width:670px;}#wpbody-content #media-items .filename{line-height:36px;overflow:hidden;}.media-item .error-div{padding-left:10px;}.media-item .pinkynail{float:left;margin:2px;max-width:40px;max-height:32px;}.media-item .startopen,.media-item .startclosed{display:none;}.media-item .original{position:relative;height:34px;width:503px;}.media-item .percent{font-weight:bold;}.crunching{display:block;line-height:32px;text-align:right;margin-right:5px;}.progress{position:relative;margin-bottom:-36px;height:36px;}.bar{width:0;height:100%;border-right-width:3px;border-right-style:solid;}.upload-php .fixed .column-parent{width:25%;}.find-box{width:500px;height:300px;overflow:hidden;padding:33px 5px 40px;position:absolute;z-index:1000;}.find-box-head{cursor:move;font-weight:bold;height:2em;line-height:2em;padding:1px 12px;position:absolute;top:5px;width:100%;}.find-box-inside{overflow:auto;width:100%;height:100%;}.find-box-search{padding:12px;border-width:1px;border-style:none none solid;}#find-posts-response{margin:8px 0;padding:0 1px;}#find-posts-response table{width:100%;}#find-posts-response .found-radio{padding:5px 0 0 8px;width:15px;}.find-box-buttons{width:480px;margin:8px;}.find-box-search label{padding-right:6px;}.find-box #resize-se{position:absolute;right:1px;bottom:1px;}ul#dismissed-updates{display:none;}form.upgrade{margin-top:8px;}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0;}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border-width:1px;border-style:solid;line-height:1.8em;word-spacing:3px;-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;}br.clear{height:2px;line-height:2px;}.swfupload{margin:5px 10px;vertical-align:middle;}.describe .image-editor{vertical-align:top;}.imgedit-wrap{position:relative;}.imgedit-settings p{margin:8px 0;}.describe .imgedit-wrap table td{vertical-align:top;padding-top:0;}.imgedit-wrap p,.describe .imgedit-wrap table td{font-size:11px;line-height:18px;}.describe .imgedit-wrap table td.imgedit-settings{padding:0 5px;}td.imgedit-settings input{vertical-align:middle;}.imgedit-wait{position:absolute;top:0;background:#FFF url(../images/wpspin_light.gif) no-repeat scroll 22px 10px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none;}.media-disabled,.imgedit-settings .disabled{color:grey;}.imgedit-wait-spin{padding:0 4px 4px;vertical-align:bottom;visibility:hidden;}.imgedit-menu{margin:0 0 12px;min-width:300px;}.imgedit-menu div{float:left;width:32px;height:32px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border-width:1px;border-style:solid;}.imgedit-crop-wrap{position:relative;}.imgedit-crop{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -9px -31px;margin:0 8px 0 0;}.imgedit-crop.disabled:hover{background-position:-9px -31px;}.imgedit-crop:hover{background-position:-9px -1px;}.imgedit-rleft{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -46px -31px;margin:0 3px;}.imgedit-rleft.disabled:hover{background-position:-46px -31px;}.imgedit-rleft:hover{background-position:-46px -1px;}.imgedit-rright{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -77px -31px;margin:0 8px 0 3px;}.imgedit-rright.disabled:hover{background-position:-77px -31px;}.imgedit-rright:hover{background-position:-77px -1px;}.imgedit-flipv{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -115px -31px;margin:0 3px;}.imgedit-flipv.disabled:hover{background-position:-115px -31px;}.imgedit-flipv:hover{background-position:-115px -1px;}.imgedit-fliph{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -147px -31px;margin:0 8px 0 3px;}.imgedit-fliph.disabled:hover{background-position:-147px -31px;}.imgedit-fliph:hover{background-position:-147px -1px;}.imgedit-undo{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -184px -31px;margin:0 3px;}.imgedit-undo.disabled:hover{background-position:-184px -31px;}.imgedit-undo:hover{background-position:-184px -1px;}.imgedit-redo{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -215px -31px;margin:0 8px 0 3px;}.imgedit-redo.disabled:hover{background-position:-215px -31px;}.imgedit-redo:hover{background-position:-215px -1px;}.imgedit-applyto img{margin:0 8px 0 0;}.imgedit-group-top{margin:5px 0;}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block;}.imgedit-help{display:none;font-style:italic;margin-bottom:8px;}.imgedit-help ul li{font-size:11px;}a.imgedit-help-toggle{text-decoration:none;}#wpbody-content .imgedit-response div{width:600px;margin:8px;}.form-table td.imgedit-response{padding:0;}.imgedit-submit{margin:8px 0;}.imgedit-submit-btn{margin-left:20px;}.imgedit-wrap .nowrap{white-space:nowrap;}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle;}.imgedit-group{border-width:1px;border-style:solid;-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;margin-bottom:8px;padding:2px 10px;}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;margin-bottom:-8px;clear:both;}.form-table td{margin-bottom:9px;padding:8px 10px;line-height:20px;font-size:12px;}.form-table th,.form-wrap label{font-weight:normal;text-shadow:rgba(255,255,255,1) 0 1px 0;}.form-table th{vertical-align:top;text-align:left;padding:10px;width:200px;}.form-table th.th-full{width:auto;}.form-table div.color-option{display:block;clear:both;margin-top:12px;}.form-table input.tog{margin-top:2px;margin-right:2px;float:left;}.form-table td p{margin-top:4px;}.form-table table.color-palette{vertical-align:bottom;float:left;margin:-12px 3px 11px;}.form-table .color-palette td{border-width:1px 1px 0;border-style:solid solid none;height:10px;line-height:20px;width:10px;}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom-width:1px;border-bottom-style:solid;}.commentlist li li{border-bottom:0;padding:0;}.commentlist p{padding:0;margin:0 0 .8em;}#replyrow{font-size:11px;}#replyrow input{border-width:1px;border-style:solid;}#replyrow td{padding:2px;}#replyrow #editorcontainer{border:0 none;}#replysubmit{margin:0;padding:3px 7px;text-align:center;}#replysubmit img.waiting,.inline-edit-save img.waiting{padding:4px 10px 0;vertical-align:top;float:right;}#replysubmit .button{margin-right:5px;}#replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center;}#replyrow #editor-toolbar{display:none;}#replyhead{font-size:12px;font-weight:bold;padding:2px 10px 4px;}#edithead .inside{float:left;padding:3px 0 2px 5px;margin:0;text-align:center;font-size:11px;}#edithead .inside input{width:180px;font-size:11px;}#edithead label{padding:2px 0;}#replycontainer{padding:5px;border:0 none;height:120px;overflow:hidden;position:relative;}#replycontent{resize:none;margin:0;width:100%;height:100%;padding:0;line-height:150%;border:0 none;outline:none;font-size:12px;}#replyrow #ed_reply_toolbar{margin:0;padding:2px 3px;}.comment-ays{margin-bottom:0;border-style:solid;border-width:1px;}.comment-ays th{border-right-style:solid;border-right-width:1px;}.trash-undo-inside,.spam-undo-inside{margin:1px 8px 1px 0;line-height:16px;}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-right:8px;vertical-align:middle;}.stuffbox .editcomment{clear:none;}#comment-status-radio p{margin:3px 0 5px;}#comment-status-radio input{margin:2px 3px 5px 0;vertical-align:middle;}#comment-status-radio label{padding:5px 0;}.commentlist .avatar{vertical-align:text-top;}.theme-install-php .tablenav{height:auto;}table#availablethemes{border-spacing:0;border-width:1px 0;border-style:solid none;margin:10px auto;width:100%;}table#availablethemes .no-items td{border-width:0;padding:5px;}td.available-theme{vertical-align:top;width:240px;margin:0;padding:20px;text-align:left;}table#availablethemes td{border-width:0 1px 1px;border-style:none solid solid;}table#availablethemes td.right,table#availablethemes td.left{border-right:0 none;border-left:0 none;}table#availablethemes td.bottom{border-bottom:0 none;}.available-theme a.screenshot{width:240px;height:180px;display:block;border-width:1px;border-style:solid;margin-bottom:10px;overflow:hidden;}.available-theme img{width:240px;}.available-theme h3{margin:15px 0 5px;}#current-theme{margin:1em 0 1.5em;}#current-theme a{border-bottom:none;}#current-theme h3{font-size:17px;font-weight:normal;margin:0;}#current-theme .theme-description{margin-top:5px;}#current-theme img{float:left;border-width:1px;border-style:solid;margin-right:1em;margin-bottom:1.5em;width:150px;}.theme-options span{text-transform:uppercase;font-size:13px;}.theme-options a{font-size:15px;}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{font-weight:bold;text-decoration:none;}#TB_window #TB_title{background-color:#222;color:#cfcfcf;}#broken-themes{text-align:left;width:50%;border-spacing:3px;padding:3px;}.theme-install-php h4{margin:2.5em 0 8px;}.appearance_page_custom-header #headimg{border:1px solid #DFDFDF;min-height:100px;width:100%;}.appearance_page_custom-header #upload-form p label{font-size:12px;}.appearance_page_custom-header .available-headers .default-header{float:left;margin:0 20px 20px 0;}.appearance_page_custom-header .random-header{clear:both;margin:0 20px 20px 0;vertical-align:middle;}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:10px;}.appearance_page_custom-header .available-headers label img{vertical-align:middle;}div#custom-background-image{min-height:100px;border:1px solid #dfdfdf;}div#custom-background-image img{max-width:400px;max-height:300px;}.nav-tab{border-style:solid;border-color:#dfdfdf #dfdfdf #fff;border-width:1px 1px 0;color:#aaa;text-shadow:rgba(255,255,255,1) 0 1px 0;font-size:12px;line-height:16px;display:inline-block;padding:4px 14px 6px;text-decoration:none;margin:0 6px -1px 0;-moz-border-radius:3px 3px 0 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.nav-tab-active{border-width:1px;color:#464646;}.nav-tab:hover,.nav-tab-active{border-color:#ccc #ccc #fff;}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;padding-bottom:0;}h2 .nav-tab{padding:4px 10px 6px;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:200;font-size:20px;line-height:24px;}.plugins .name,#pass-strength-result.strong,#pass-strength-result.short,.button-highlighted,input.button-highlighted,#quicktags #ed_strong,#ed_reply_toolbar #ed_reply_strong{font-weight:bold;}.plugins p{margin:0 4px;padding:0;}.plugins .desc p{margin:0 0 8px;}.plugins td.desc{line-height:1.5em;}.plugins .desc ul,.plugins .desc ol{margin:0 0 0 2em;}.plugins .desc ul{list-style-type:disc;}.plugins .row-actions-visible{padding:0;}.plugins tbody th.check-column{padding:7px 0;}.plugins .inactive td,.plugins .inactive th,.plugins .active td,.plugins .active th{border-top-style:solid;border-top-width:1px;padding:5px 7px 0;}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap;}.plugins .second,.plugins .row-actions-visible{padding:0 0 5px;}.plugins-php .widefat tfoot th,.plugins-php .widefat tfoot td{border-top-style:solid;border-top-width:1px;}.plugin-update-tr .update-message{margin:5px;padding:3px 5px;border-width:1px;border-style:solid;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.plugin-install-php h4{margin:2.5em 0 8px;}#profile-page .form-table textarea{width:500px;margin-bottom:6px;}#profile-page .form-table #rich_editing{margin-right:5px;}#your-profile legend{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:22px;}#your-profile #rich_editing{border:none;}#display_name{width:15em;}#createuser .form-field input{width:25em;}.pressthis{margin:20px 0;}.pressthis a{display:inline-block;width:113px;position:relative;cursor:move;color:#333;background:#dfdfdf;-webkit-gradient(linear,left bottom,left top,color-stop(0.07,#e6e6e6),color-stop(0.77,#d8d8d8));-moz-linear-gradient(center bottom,#e6e6e6 7%,#d8d8d8 77%);background-repeat:no-repeat;background-image-position:10px 8px;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;border:1px #b4b4b4 solid;font:normal normal normal 14px/16px Georgia,"Times New Roman","Bitstream Charter",Times,serif;text-decoration:none;text-shadow:#fff 0 1px 0;-webkit-text-shadow:#fff 0 1px 0;-moz-text-shadow:#fff 0 1px 0;-o-text-shadow:#fff 0 1px 0;}.pressthis a:hover,.pressthis a:active{color:#333;}.pressthis a:hover:after{transform:skew(20deg) rotate(9deg);-webkit-transform:skew(20deg) rotate(9deg);-moz-transform:skew(20deg) rotate(9deg);box-shadow:0 10px 8px rgba(0,0,0,0.7);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.7);-moz-box-shadow:0 10px 8px rgba(0,0,0,0.7);}.pressthis a span{background:url(../images/press-this.png) no-repeat -45px 5px;padding:8px 0 8px 32px;display:inline-block;}.pressthis a:after{content:'';width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:transparent;transform:skew(20deg) rotate(6deg);-webkit-transform:skew(20deg) rotate(6deg);-moz-transform:skew(20deg) rotate(6deg);box-shadow:0 10px 8px rgba(0,0,0,0.6);-webkit-box-shadow:0 10px 8px rgba(0,0,0,0.6);-moz-box-shadow:0 10px 8px rgba(0,0,0,0.6);}#utc-time,#local-time{padding-left:25px;font-style:italic;font-family:sans-serif;}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle;}#footer{position:absolute;bottom:0;left:0;right:0;padding:10px 0;margin-right:20px;border-top:1px;border-style:solid;}#footer,#footer a{font-size:12px;}#footer p{margin:0;line-height:20px;}#footer a{text-decoration:none;}#footer a:hover{text-decoration:underline;}#excerpt,.attachmentlinks{margin:0;height:4em;width:98%;}#template div{margin-right:190px;}p.pagenav{margin:0;display:inline;}.pagenav span{font-weight:bold;margin:0 6px;}.row-title{font-size:13px!important;font-weight:bold;}.column-author img,.column-username img{float:left;margin-right:10px;margin-top:1px;}.row-actions{visibility:hidden;padding:2px 0 0;}tr:hover .row-actions,div.comment-item:hover .row-actions{visibility:visible;}.row-actions-visible{padding:2px 0 0;}.form-table .pre{padding:8px;margin:0;}table.form-table td .updated{font-size:13px;}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto;}.tagchecklist strong{margin-left:-8px;position:absolute;}.tagchecklist span{margin-right:25px;display:block;float:left;font-size:11px;line-height:1.8em;white-space:nowrap;cursor:default;}.tagchecklist span a{margin:6px 0 0 -9px;cursor:pointer;width:10px;height:10px;display:block;float:left;text-indent:-9999px;overflow:hidden;position:absolute;}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:left;}#poststuff h3,.metabox-holder h3{font-size:15px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-weight:normal;padding:7px 10px;margin:0;line-height:1;}#poststuff .inside,#poststuff .inside p{font-size:12px;margin:6px 0 8px;}#poststuff .inside .submitbox p{margin:1em 0;}#post-visibility-select,#post-formats-select{line-height:1.5em;margin-top:3px;}#poststuff #submitdiv .inside{margin:0;padding:0;}#titlediv,#poststuff .postarea{margin-bottom:20px;}td.post-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;}td.post-title p,td.plugin-title p{margin:6px 0;}.wp-hidden-children .wp-hidden-child,.ui-tabs-hide{display:none;}#templateside ul li a{text-decoration:none;}.tool-box{margin:15px 0 35px;}.tool-box .buttons{margin:15px 0;}.tool-box .title{margin:8px 0;font:18px/24px Georgia,"Times New Roman","Bitstream Charter",Times,serif;}.pressthis a{font-size:1.2em;}#sidemenu{margin:-30px 15px 0 315px;list-style:none;position:relative;float:right;padding-left:10px;font-size:12px;}#sidemenu a{padding:0 7px;display:block;float:left;line-height:28px;border-top-width:1px;border-top-style:solid;border-bottom-width:1px;border-bottom-style:solid;}#sidemenu li{display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;margin:0;padding:0;}#sidemenu a.current{font-weight:normal;padding-left:6px;padding-right:6px;-moz-border-radius:3px 3px 0 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;border-width:1px;border-style:solid;}#sidemenu li a .count-0{display:none;}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border-width:1px;border-style:solid;line-height:1.8em;word-spacing:3px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}.plugin-install #description,.plugin-install-network #description{width:60%;}table .vers,table .column-visible,table .column-rating{text-align:left;}body.iframe{height:98%;}.anchors{margin:10px 20px 10px 20px;}div.nav{height:2em;padding:7px 10px;vertical-align:text-top;margin:5px 0;}.nav .button-secondary{padding:2px 4px;}.settings-toggle{text-align:right;margin:5px 7px 15px 0;font-size:12px;}.settings-toggle h3{margin:0;}form#tags-filter{position:relative;}td.media-icon{text-align:center;width:80px;padding-top:8px;padding-bottom:8px;}td.media-icon img{max-width:80px;max-height:60px;}.screen-per-page{width:3em;}.list-ajax-loading{float:right;margin-right:9px;margin-top:-1px;}.tablenav .list-ajax-loading{margin-top:7px;}#howto{font-size:11px;margin:0 5px;display:block;}.import-system{font-size:16px;}#namediv table{width:100%;}#namediv td.first{width:10px;white-space:nowrap;}#namediv input{width:98%;}#namediv p{margin:10px 0;}#submitdiv h3{margin-bottom:0!important;}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute;}br.clear{height:2px;line-height:2px;}.checkbox{border:none;margin:0;padding:0;}#content{margin:0;width:100%;}fieldset{border:0;padding:0;margin:0;}.post-categories{display:inline;margin:0;padding:0;}.post-categories li{display:inline;} \ No newline at end of file diff --git a/src/wp-admin/css/wp-admin.dev.css b/src/wp-admin/css/wp-admin.dev.css new file mode 100644 index 0000000..82a0c68 --- /dev/null +++ b/src/wp-admin/css/wp-admin.dev.css @@ -0,0 +1,4709 @@ +/*------------------------------------------------------------------------------ + + +Hello, this is the main WordPress admin CSS file. +All the important stuff is in here. + + +TABLE OF CONTENTS: +------------------ + 1.0 - Text Elements + 2.0 - Forms + 3.0 - Actions + 4.0 - Notifications + 5.0 - TinyMCE + 6.0 - Admin Header + 6.1 - Favorites Menu + 6.2 - Screen Options Tabs + 7.0 - Main Navigation + 8.0 - Layout Blocks + 9.0 - Dashboard +10.0 - List Posts + 10.1 - Inline Editing +11.0 - Write/Edit Post Screen + 11.1 - Custom Fields + 11.2 - Post Revisions +12.0 - Categories +13.0 - Tags +14.0 - Media Screen + 14.1 - Media Uploader + 14.2 - Image Editor +15.0 - Comments Screen +16.0 - Themes + 16.1 - Custom Header + 16.2 - Custom Background + 16.3 - Tabbed Admin Screen Interface +17.0 - Plugins +18.0 - Users +19.0 - Tools +20.0 - Settings +21.0 - Admin Footer +22.0 - Misc +23.0 - Dead + + +------------------------------------------------------------------------------*/ + + + + +/*------------------------------------------------------------------------------ + 1.0 - Text Styles +------------------------------------------------------------------------------*/ + +p, +ul, +ol, +blockquote, +input, +select { + font-size: 12px; +} + +ol { + list-style-type: decimal; + margin-left: 2em; +} + +.code, code { + font-family: Consolas, Monaco, monospace; +} + +kbd, code { + padding: 1px 3px; + margin: 0 1px; + font-size: 11px; +} + +.quicktags, .search { + font: 12px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; +} + +.icon32 { + float: left; + height: 34px; + margin: 7px 8px 0 0; + width: 36px; +} + +.key-labels label { + line-height: 24px; +} + +.pre { + /* http://www.longren.org/2006/09/27/wrapping-text-inside-pre-tags/ */ + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ +} + +.howto { + font-style: italic; + display: block; + font-family: sans-serif; +} + +p.install-help { + margin: 8px 0; + font-style: italic; +} + + +/*------------------------------------------------------------------------------ + 2.0 - Forms +------------------------------------------------------------------------------*/ + +textarea, +input[type="text"], +input[type="password"], +input[type="file"], +input[type="button"], +input[type="submit"], +input[type="reset"], +select { + border-width: 1px; + border-style: solid; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +select option { + padding: 2px; +} + +.submit { + padding: 1.5em 0; + margin: 5px 0; + -moz-border-radius: 0 0 3px 3px; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + -khtml-border-bottom-left-radius: 3px; + -khtml-border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +form p.submit a.cancel:hover { + text-decoration: none; +} + +.submit input, +.button, +input.button, +.button-primary, +input.button-primary, +.button-secondary, +input.button-secondary, +.button-highlighted, +input.button-highlighted, +#postcustomstuff .submit input { + text-decoration: none; + font-size: 12px !important; + line-height: 13px; + padding: 3px 8px; + cursor: pointer; + border-width: 1px; + border-style: solid; + -moz-border-radius: 11px; + -khtml-border-radius: 11px; + -webkit-border-radius: 11px; + border-radius: 11px; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + -khtml-box-sizing: content-box; + box-sizing: content-box; +} + +#minor-publishing-actions input, +#major-publishing-actions input, +#minor-publishing-actions .preview { + min-width: 80px; + text-align: center; +} + +textarea.all-options, input.all-options { + width: 250px; +} + +input.large-text, +textarea.large-text { + width: 99%; +} + +input.regular-text, +#adduser .form-field input { + width: 25em; +} + +input.small-text { + width: 50px; +} + +#doaction, +#doaction2, +#post-query-submit { + margin-right: 8px; +} + +.tablenav select[name="action"], +.tablenav select[name="action2"] { + width: 130px; +} + +.tablenav select[name="m"] { + width: 155px; +} + +.tablenav select#cat { + width: 170px; +} + +#wpcontent select { + padding: 2px; + height: 2em; + font-size: 12px; +} + +#wpcontent option { + padding: 2px; +} + +#timezone_string option { + margin-left: 1em; +} + +label, +#your-profile label + a { + vertical-align: middle; +} + +#misc-publishing-actions label { + vertical-align: baseline; +} + +#pass-strength-result { + border-style: solid; + border-width: 1px; + float: left; + margin: 13px 5px 5px 1px; + padding: 3px 5px; + text-align: center; + width: 200px; + display: none; +} +.indicator-hint { + padding-top: 8px; +} + +p.search-box { + float: right; + margin: 0; +} + + +/*------------------------------------------------------------------------------ + 3.0 - Actions +------------------------------------------------------------------------------*/ + +#major-publishing-actions { + padding: 10px 10px 8px; + clear: both; + border-top: none; +} + +#delete-action { + line-height: 25px; + vertical-align: middle; + text-align: left; + float: left; +} + +#publishing-action { + text-align: right; + float: right; + line-height: 23px; +} + +#post-body #minor-publishing { + padding-bottom: 10px; +} + +#post-body #misc-publishing-actions { + padding: 0; +} + +#post-body .misc-pub-section { + border-right-width: 1px; + border-right-style: solid; + border-bottom: 0 none; + min-height: 30px; + float: left; + max-width: 32%; +} + +#post-body .misc-pub-section-last { + border-right: 0; +} + +#misc-publishing-actions { + padding: 6px 0 16px 0; +} + +.misc-pub-section { + padding: 6px 10px; + border-width: 1px 0; + border-style: solid; +} + +.misc-pub-section:first-child { + border-top-width: 0; +} +.misc-pub-section-last { + border-bottom-width: 0; +} + +#minor-publishing-actions { + padding: 10px 10px 2px 8px; + text-align: right; +} + +#minor-publishing { + border-bottom-width: 1px; + border-bottom-style: solid; + -webkit-box-shadow: 0 1px 0 #fff; + -moz-box-shadow: 0 1px 0 #fff; + box-shadow: 0 1px 0 #fff; +} + +#save-post { + float: left; +} + +#minor-publishing .ajax-loading { + padding: 3px 0 0 4px; + float: left; +} + +.preview { + float: right; +} + + + +#sticky-span { + margin-left: 18px; +} + +#post-status-display, +#post-visibility-display { + font-weight: bold; +} + +.side-info { + margin: 0; + padding: 4px; + font-size: 11px; +} + +.side-info h5 { + padding-bottom: 7px; + font-size: 14px; + margin: 12px 2px 5px; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.side-info ul { + margin: 0; + padding-left: 18px; + list-style: square; +} + +a.button, +a.button-primary, +a.button-secondary { + line-height: 15px; + padding: 3px 10px; + white-space: nowrap; + -webkit-border-radius: 10px; +} + +.approve { + display: none; +} + +.unapproved .approve, +.spam .approve, +.trash .approve { + display: inline; +} + +.unapproved .unapprove { + display: none; +} + +td.action-links, +th.action-links { + text-align: right; +} + +.describe .del-link { + padding-left: 5px; +} + + +/*------------------------------------------------------------------------------ + 4.0 - Notifications +------------------------------------------------------------------------------*/ + +#update-nag, .update-nag { + line-height: 19px; + padding: 5px 0; + font-size: 12px; + text-align: center; + margin: 0 15px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + border-top-style: none; + -moz-border-radius: 0 0 3px 3px; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -khtml-border-bottom-right-radius: 3px; + -khtml-border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.plugins .plugin-update { + padding: 0; +} + +.plugin-update .update-message { + margin: 0 10px 8px 31px; + font-weight: bold; +} + +ul#dismissed-updates { + display: none; +} +form.upgrade { + margin-top: 8px; +} + +form.upgrade .hint { + font-style: italic; + font-size: 85%; + margin: -0.5em 0 2em 0; +} + +.ajax-feedback { + visibility: hidden; + vertical-align: bottom; +} + +#ajax-response.alignleft { + margin-left: 2em; +} + + +/*------------------------------------------------------------------------------ + 5.0 - TinyMCE +------------------------------------------------------------------------------*/ + +#editorcontainer #content { + font-family: Consolas, Monaco, monospace; + padding: 6px; + line-height: 150%; + border: 0 none; + outline: none; + resize: vertical; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + -khtml-box-sizing: border-box; + box-sizing: border-box; +} + +#editorcontainer, +#quicktags { + border-style: solid; + border-width: 1px; + border-collapse: separate; + -moz-border-radius: 3px 3px 0 0; + -webkit-border-top-right-radius: 3px; + -webkit-border-top-left-radius: 3px; + -khtml-border-top-right-radius: 3px; + -khtml-border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +#quicktags { + padding: 0; + margin-bottom: -3px; + border-bottom-width: 3px; + background-image: url("../images/ed-bg.gif"); + background-position: left top; + background-repeat: repeat-x; +} + +#quicktags #ed_toolbar { + padding: 2px 4px 0; +} + +#ed_toolbar input, +#ed_reply_toolbar input { + margin: 3px 1px 4px; + line-height: 18px; + display: inline-block; + min-width: 26px; + padding: 2px 4px; + font-size: 12px; +} + +#ed_reply_toolbar input { + margin: 1px 2px 1px 1px; +} + +#quicktags #ed_link, +#ed_reply_toolbar #ed_reply_link { + text-decoration: underline; +} + +#quicktags #ed_del, +#ed_reply_toolbar #ed_reply_del { + text-decoration: line-through; +} + +#quicktags #ed_em, +#ed_reply_toolbar #ed_reply_em { + font-style: italic; +} + +#wp_editbtns, +#wp_gallerybtns { + padding: 2px; + position: absolute; + display: none; + z-index: 999998; +} + +#wp_editimgbtn, +#wp_delimgbtn, +#wp_editgallery, +#wp_delgallery { + margin: 2px; + padding: 2px; + border-width: 1px; + border-style: solid; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +/* Distraction Free Writing mode + * =Overlay Styles +-------------------------------------------------------------- */ +.fullscreen-overlay { + z-index: 149999; + display: none; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + filter: inherit; +} + +.fullscreen-active .fullscreen-overlay, +.fullscreen-active #wp-fullscreen-body { + display: block; +} + +.fullscreen-fader { + z-index: 200000; +} + +.fullscreen-active .fullscreen-fader { + display: none; +} + +/* =Overlay Body +-------------------------------------------------------------- */ +#wp-fullscreen-body { + width: 100%; + z-index: 150005; + display: none; + position: absolute; + top: 0; + left: 0; +} + +#wp-fullscreen-wrap { + margin: 0 auto 50px; + position: relative; + padding-top: 60px; +} + +#wp-fullscreen-title { + font-size: 1.7em; + line-height: 100%; + outline: medium none; + padding: 6px 7px; + width: 100%; + margin-bottom: 30px; +} + +#wp-fullscreen-container { + padding: 4px 10px 50px; +} + +#wp-fullscreen-title, +#wp-fullscreen-container { + -moz-border-radius: 0; + -khtml-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + border: 1px dashed transparent; + background: transparent; + -moz-transition-property: border-color; + -moz-transition-duration: 0.6s; + -webkit-transition-property: border-color; + -webkit-transition-duration: 0.6s; + -o-transition-property: border-color; + -o-transition-duration: 0.6s; + transition-property: border-color; + transition-duration: 0.6s; +} + + +#wp_mce_fullscreen { + width: 100%; + min-height: 300px; + border: 0; + background: transparent; + font-family: Consolas, Monaco, monospace; + line-height: 1.6em; + padding: 0; + overflow-y: hidden; + outline: none; + resize: none; +} + +#wp-fullscreen-tagline { + color: #BBBBBB; + font-size: 18px; + float: right; + padding-top: 5px; +} + +/* =Top bar +-------------------------------------------------------------- */ +#fullscreen-topbar { + position: fixed; + top: 0; + left: 0; + z-index: 150050; + border-bottom-style: solid; + border-bottom-width: 1px; + min-width: 800px; + width: 100%; + height: 40px; +} + +#wp-fullscreen-toolbar { + padding: 6px 10px 0; + clear: both; + max-width: 1100px; + min-width: 820px; + margin: 0 auto; +} + +#wp-fullscreen-mode-bar, +#wp-fullscreen-button-bar, +#wp-fullscreen-close, +#wp-fullscreen-count { + float: left; +} + +#wp-fullscreen-save { + float: right; +} + +#wp-fullscreen-save { + padding: 2px 2px 0 5px; +} + +#wp-fullscreen-count, +#wp-fullscreen-close { + padding-top: 5px; +} + +#wp-fullscreen-central-toolbar { + margin: auto; + padding: 0; +} + +#wp-fullscreen-buttons > div { + float: left; +} + +#wp-fullscreen-mode-bar { + padding: 1px 14px 0 0; +} + +#wp-fullscreen-modes a { + display: block; + font-size: 11px; + text-decoration: none; + float: left; + margin: 1px 0 0 0; + padding: 2px 6px 2px; + border-width: 1px 1px 1px 0; + border-style: solid; + border-color: #bbb; + color: #777; + text-shadow: 0 1px 0 #fff; + background-color: #f4f4f4; + background-image: -moz-linear-gradient(bottom, #e4e4e4, #f9f9f9); + background-image: -webkit-gradient(linear, left bottom, left top, from(#e4e4e4), to(#f9f9f9)); +} + +#wp-fullscreen-modes a:hover, +.wp-html-mode #wp-fullscreen-modes a:last-child, +.wp-tmce-mode #wp-fullscreen-modes a:first-child { + color: #333; + border-color: #999; + background-color: #eee; + background-image: -moz-linear-gradient(bottom, #f9f9f9, #e0e0e0); + background-image: -webkit-gradient(linear, left bottom, left top, from(#f9f9f9), to(#e0e0e0)); +} + +#wp-fullscreen-modes a:first-child { + border-width: 1px; + -moz-border-radius: 3px 0 0 3px; + -webkit-border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -khtml-border-top-left-radius: 3px; + -khtml-border-bottom-left-radius: 3px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +#wp-fullscreen-modes a:last-child { + -moz-border-radius: 0 3px 3px 0; + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + -khtml-border-top-right-radius: 3px; + -khtml-border-bottom-right-radius: 3px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +#wp-fullscreen-buttons .active a { + background: inherit; +} + +#wp-fullscreen-buttons .hidden { + display: none; +} + +#wp-fullscreen-buttons .disabled { + opacity: 0.5; +} + +.wp-html-mode #wp-fullscreen-buttons div { + display: none; +} + +.wp-html-mode #wp-fullscreen-buttons div.wp-fullscreen-both { + display: block; +} + +#fullscreen-topbar.fullscreen-make-sticky { + display: block !important; +} + +#wp-fullscreen-save img { + vertical-align: middle; +} + +#wp-fullscreen-save img, +#wp-fullscreen-save span { + padding-right: 4px; + display: none; +} + +#wp-fullscreen-buttons .mce_image .mce_image { + background-image: url("../images/menu.png?ver=20100531"); + background-position: -124px -38px; +} + +#wp-fullscreen-buttons .mce_image .mce_image:hover { + background-position: -124px -6px; +} + +/* =Thickbox Adjustments +-------------------------------------------------------------- */ +.fullscreen-active #TB_overlay { + z-index: 150100; +} + +.fullscreen-active #TB_window { + z-index: 150102; +} + +/* =TinyMCE Adjustments +-------------------------------------------------------------- */ +#wp_mce_fullscreen_ifr { + background: transparent; +} + +#wp_mce_fullscreen_parent #wp_mce_fullscreen_tbl tr.mceFirst { + display : none; +} + +#wp-fullscreen-container .wp_themeSkin table td { + vertical-align: top; +} + + +/*------------------------------------------------------------------------------ + 6.0 - Admin Header +------------------------------------------------------------------------------*/ +#wphead-info { + margin: 0 0 0 15px; +} + +#user_info { + float: right; + font-size: 12px; + line-height: 26px; + height: 25px; + position: relative; + z-index: 49; + border-style: solid; + border-width: 0; + margin-top: 3px; + padding: 0 2px 0 6px; +} + +#user_info.active { + border-width: 1px; + margin-right: -1px; + margin-top: 2px; + -moz-border-radius: 3px 3px 0 0; + -webkit-border-top-right-radius: 3px; + -webkit-border-top-left-radius: 3px; + -khtml-border-top-right-radius: 3px; + -khtml-border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +#user_info p { + margin: 0; + padding: 0; + line-height: 25px; + cursor: pointer; +} + +#user_info .hide-if-no-js p { + margin: 0 20px 0 0; +} + +#user_info:hover .hide-if-no-js p { + text-decoration: underline; +} +#user_info.active .hide-if-no-js p { + text-decoration: none; +} + +#user_info_arrow { + height: 22px; + width: 22px; + position: absolute; + right: 3px; + top: 0; + cursor: pointer; +} + +#user_info_links_wrap { + min-width: 100px; + width: 100%; + position: absolute; + top: 25px; + right: 0; + padding: 0; + text-shadow: rgba(255,255,255,0.7) 0 1px 0; +} + +#user_info_links { + position: absolute; + left: -1px; + right: -1px; + overflow: hidden; +} + +#user_info.active #user_info_links ul { + margin-top: 0; + -moz-transition: margin-top 200ms; + -webkit-transition: margin-top 200ms; + -o-transition: margin-top 200ms; + transition: margin-top 200ms; +} + +#user_info_links ul { + border-width: 1px; + border-style: solid; + margin-top: -1000px; + -moz-transition: margin-top 500ms ease-in; + -webkit-transition: margin-top 500ms ease-in; + -o-transition: margin-top 500ms ease-in; + transition: margin-top 500ms ease-in; +} + +#user_info_links, +#user_info_links ul, +#user_info_links li:last-child { + -moz-border-radius: 0 0 3px 3px; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -khtml-border-bottom-right-radius: 3px; + -khtml-border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +#user_info_links li { + display: block; + margin: 0; +} + +#user_info_links a { + display: block; + padding: 6px 8px; +} + +#wphead { + height: 32px; + margin-right: 20px; + margin-left: 2px; +} + +#wphead a, +#adminmenu a, +#sidemenu a, +#taglist a, +#catlist a, +#show-settings a { + text-decoration: none; +} + +#header-logo { + float: left; + margin: 7px 0; + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + user-select: none; +} + +#wphead h1 { + font: normal 16px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + padding: 6px 8px 5px; + margin: 0; + float: left; +} + +#wphead h1 a:hover { + text-decoration:none; +} +#wphead h1 a:hover #site-title { + text-decoration:underline; +} + + +/*------------------------------------------------------------------------------ + 6.1 - Favorites Menu +------------------------------------------------------------------------------*/ + +#favorite-actions { + margin: 0 12px 0 15px; + min-width: 130px; + position: relative; + display: inline-block; + top: -1px; +} + +#favorite-first { + -moz-border-radius: 12px; + -khtml-border-radius: 12px; + -webkit-border-radius: 12px; + border-radius: 12px; + line-height: 15px; + padding: 0 30px 0 0; + border-width: 1px; + border-style: solid; +} + +#favorite-inside { + margin: 0; + padding: 2px 1px; + border-width: 1px; + border-style: solid; + position: absolute; + z-index: 11; + display: none; + -moz-border-radius: 0 0 12px 12px; + -webkit-border-bottom-right-radius: 12px; + -webkit-border-bottom-left-radius: 12px; + -khtml-border-bottom-right-radius: 12px; + -khtml-border-bottom-left-radius: 12px; + border-bottom-right-radius: 12px; + border-bottom-left-radius: 12px; +} + +#favorite-first a { + padding: 2px 0 2px 12px; +} + +#favorite-actions a { + display: block; + text-decoration: none; + font-size: 11px; +} + +#favorite-inside a { + padding: 3px 5px 3px 10px; + line-height: 20px; +} + +#favorite-toggle { + height: 18px; + position: absolute; + right: 0; + top: 1px; + width: 28px; + border-width: 0 0 0 1px; + border-style: solid; +} + +#favorite-actions .slide-down { + -moz-border-radius: 12px 12px 0 0; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -khtml-border-bottom-right-radius: 0; + -khtml-border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-bottom: none; +} + + +/*------------------------------------------------------------------------------ + 6.2 - Screen Options Tabs +------------------------------------------------------------------------------*/ + +#screen-meta { + position: relative; + clear: both; +} + +#screen-meta-links { + margin: 0 24px 0 0; +} + +#screen-meta .screen-reader-text { + visibility: hidden; +} + +#screen-options-link-wrap, +#contextual-help-link-wrap { + float: right; + height: 22px; + padding: 0; + margin: 0 0 0 6px; + font-family: sans-serif; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +#contextual-help-wrap li { + list-style-type: disc; + margin-left: 18px; +} +.toggle-arrow { + background-repeat: no-repeat; + background-position: top left; + background-color: transparent; + height: 22px; + line-height: 22px; + display: block; +} +.toggle-arrow-active { + background-position: bottom left; +} +#screen-meta a.show-settings { + text-decoration: none; + z-index: 1; + padding: 0 16px 0 6px; + height: 22px; + line-height: 22px; + font-size: 12px; + display: block; + text-shadow: rgba(255,255,255,0.7) 0 1px 0; +} + +#screen-meta a.show-settings:hover { + text-decoration: none; +} + +#screen-options-wrap h5, +#contextual-help-wrap h5 { + margin: 8px 0; + font-size: 13px; +} + +#screen-options-wrap, +#contextual-help-wrap { + border-style: none solid solid; + border-top: 0 none; + border-width: 0 1px 1px; + margin: 0 20px 0 0; + padding: 8px 12px 12px; +} + +.metabox-prefs label { + display: inline-block; + padding-right: 15px; + white-space: nowrap; + line-height: 30px; +} + +.metabox-prefs label input { + margin: 0 5px 0 2px; +} + +.metabox-prefs label a { + display: none; +} + + +/*------------------------------------------------------------------------------ + 7.0 - Main Navigation (Left Menu) +------------------------------------------------------------------------------*/ + +#adminmenuback, +#adminmenuwrap { + border-width: 0 1px 0 0; + border-style: solid; +} +#adminmenuwrap { + position: relative; +} + +#adminmenushadow { + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 6px; + z-index: 20; +} + +/* side admin menu */ +#adminmenu * { + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + user-select: none; +} + +#adminmenu .wp-submenu { + display: none; + list-style: none; + padding: 0; + margin: 0; + position: relative; + z-index: 2; +} + +#adminmenu .wp-submenu a { + font-size: 12px; + line-height: 18px; +} + +#adminmenu .wp-submenu li.current, +#adminmenu .wp-submenu li.current a, +#adminmenu .wp-submenu li.current a:hover { + font-weight: bold; +} + +#adminmenu a.menu-top, +#adminmenu .wp-submenu-head { + font-size: 13px; + line-height: 18px; +} + +#adminmenu div.wp-submenu-head { + display: none; +} + +.js.folded #adminmenu div.wp-submenu-head { + display: block; +} + +.js.folded #adminmenu a.menu-top, +body.no-js #adminmenu .wp-menu-toggle, +.js.folded #adminmenu div.wp-menu-toggle { + display: none; +} + +body.js #adminmenu li.wp-menu-open .wp-submenu, +body.no-js #adminmenu .open-if-no-js .wp-submenu, +body.no-js #adminmenu li.wp-has-current-submenu .wp-submenu { + display: block; +} + +#adminmenu div.wp-menu-image { + float: left; + width: 28px; + height: 28px; +} +.js.folded #adminmenu div.wp-menu-image { + width: 32px; +} + +#adminmenu li { + margin: 0; + padding: 0; + cursor: pointer; +} + +#adminmenu a { + display: block; + line-height: 18px; + padding: 2px 5px; +} + +#adminmenu li.menu-top { + min-height: 26px; + position: relative; +} + +#adminmenu a.menu-top { + font-weight: bold; + line-height: 18px; + min-width: 10em; + padding: 5px 5px; + border-width: 1px 0 1px; + border-style: solid; +} + +#adminmenu li.wp-menu-open { + border-width: 0 0 1px; + border-style: solid; +} + +#adminmenu .wp-submenu a { + margin: 0; + padding-left: 12px; +} + +.wp-menu-arrow { + display: none; +} +#adminmenu li.wp-has-current-submenu .wp-menu-arrow, +#adminmenu li.menu-top.current .wp-menu-arrow { + display: block; + position: absolute; + right: -9px; + top: 0; + cursor: auto; + z-index: 25; +} +#adminmenu .wp-menu-arrow div { + width: 15px; + height: 30px; + background: url(../images/menu-arrow-frame.png) top right no-repeat; +} + +#adminmenu .wp-submenu li { + padding: 0; + margin: 0; +} + +.js.folded #adminmenu li.menu-top { + width: 32px; + height: 29px; + border-width: 1px 0; + border-style: solid; +} + +#adminmenu .wp-menu-image img { + float: left; + padding: 8px 6px 0; + opacity: 0.6; + filter: alpha(opacity=60); +} + +#adminmenu li.menu-top:hover .wp-menu-image img, +#adminmenu li.wp-has-current-submenu .wp-menu-image img { + opacity: 1; + filter: alpha(opacity=100); +} + +#adminmenu li.wp-menu-separator { + height: 3px; + padding: 0; + margin: 0; + border-width: 1px 0; + border-style: solid; + cursor: inherit; +} + +#adminmenu div.separator { + height: 1px; + padding: 0; + border-width: 1px 0 0 0; + border-style: solid; +} + +.js.folded #adminmenu .wp-submenu { + display: block; + position: absolute; + top: -5px; + left: 26px; + z-index: 999; + width: 0; + padding: 0; + overflow: hidden; + -moz-transition: width 200ms ease-out; + -webkit-transition: width 200ms ease-out; + -o-transition: width 200ms ease-out; + transition: width 200ms ease-out; +} +.js.folded #adminmenu .wp-submenu.sub-open { + padding: 0 8px 8px 0; +} + +#adminmenu .wp-submenu .wp-submenu-head { + padding: 6px 4px 5px 10px; + cursor: default; + border-width: 1px 0; + border-style: solid; +} + +.js.folded #adminmenu .wp-submenu-wrap { + margin-top: 4px; + border-width: 0 1px 1px 0; + border-style: solid; + position: relative; + -webkit-border-bottom-right-radius: 3px; + -webkit-border-top-right-radius: 3px; + -khtml-border-bottom-right-radius: 3px; + -khtml-border-top-right-radius: 3px; + -moz-border-radius-bottomright: 3px; + -moz-border-radius-topright: 3px; + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} + +.js.folded #adminmenu .wp-submenu ul { + border-width: 0 0 0 1px; + border-style: solid; +} + +.js.folded #adminmenu .wp-submenu a { + padding-left: 10px; +} + +.js.folded #adminmenu a.wp-has-submenu { + margin-left: 40px; +} + +#adminmenu .wp-menu-toggle { + width: 18px; + clear: right; + float: right; + margin: 1px 0 0; + height: 27px; + padding: 1px 2px 0 0; + cursor: pointer; +} + +#adminmenu .wp-menu-image a { + height: 24px; +} + +#adminmenu .wp-menu-image img { + padding: 6px 0 0 1px; +} + +#adminmenu .awaiting-mod, +#adminmenu span.update-plugins, +#sidemenu li a span.update-plugins { + position: absolute; + font-family: sans-serif; + font-size: 9px; + line-height: 17px; + font-weight: bold; + margin-top: 1px; + margin-left: 7px; + -moz-border-radius: 10px; + -khtml-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; +} + +#adminmenu li .awaiting-mod span, +#adminmenu li span.update-plugins span, +#sidemenu li a span.update-plugins span { + display: block; + padding: 0 6px; +} + +#adminmenu li span.count-0, +#sidemenu li a .count-0 { + display: none; +} + +.post-com-count-wrapper { + min-width: 22px; + font-family: sans-serif; +} + +.post-com-count { + height: 1.3em; + line-height: 1.1em; + display: block; + text-decoration: none; + padding: 0 0 6px; + cursor: pointer; + background-position: center -80px; + background-repeat: no-repeat; +} + +.post-com-count span { + font-size: 11px; + font-weight: bold; + height: 1.4em; + line-height: 1.4em; + min-width: 0.7em; + padding: 0 6px; + display: inline-block; + cursor: pointer; + -moz-border-radius: 5px; + -khtml-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +strong .post-com-count { + background-position: center -55px; +} + +.post-com-count:hover { + background-position: center -3px; +} + +.column-response .post-com-count { + float: left; + margin-right: 5px; + text-align: center; +} + +.response-links { + float: left; +} + +#the-comment-list .attachment-80x60 { + padding: 4px 8px; +} + +#collapse-menu { + font-size: 12px; + line-height: 34px; +} + +.js.folded #collapse-menu span { + display: none; +} + +#collapse-button, +#collapse-button div { + width: 15px; + height: 15px; +} + +#collapse-button { + float: left; + margin: 8px 6px; + border-width: 1px; + border-style: solid; + -moz-border-radius: 10px; + -khtml-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; +} + + +/*------------------------------------------------------------------------------ + 8.0 - Layout Blocks +------------------------------------------------------------------------------*/ + +body.wp-admin { + min-width: 785px; +} + +body.admin-bar #wphead, +body.admin-bar #adminmenu { + padding-top: 28px; +} + +.narrow { + width: 70%; + margin-bottom: 40px; +} + +.narrow p { + line-height: 150%; +} + +.widefat th, +.widefat td { + overflow: hidden; +} + +.widefat th { + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-weight: normal; +} + +.widefat td p { + margin: 2px 0 0.8em; +} + +.widefat .column-comment p { + margin: 0.6em 0; +} + +.postbox-container { + float: left; + padding-right: 0.5%; +} + +.postbox-container .meta-box-sortables { + min-height: 300px; +} + +.postbox .hndle { + cursor: move; +} + +.hndle a { + font-size: 11px; + font-weight: normal; +} + +.postbox .handlediv { + float: right; + width: 27px; + height: 30px; + cursor: pointer; +} + +.sortable-placeholder { + border-width: 1px; + border-style: dashed; + margin-bottom: 20px; +} + +.widget, +.postbox, +.stuffbox { + margin-bottom: 20px; + padding: 0; + border-width: 1px; + border-style: solid; + line-height: 1; +} + +.widget .widget-top, +.postbox h3, +.stuffbox h3 { + margin-top: 1px; + border-bottom-width: 1px; + border-style: solid; + cursor: move; + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + user-select: none; +} + +.postbox .inside, +.stuffbox .inside { + padding: 0 10px; +} + +.postbox.closed h3 { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.postbox table.form-table { + margin-bottom: 0; +} + +.postbox input[type="text"], +.postbox textarea, +.stuffbox input[type="text"], +.stuffbox textarea { + border-width: 1px; + border-style: solid; +} + +.temp-border { + border: 1px dotted #ccc; +} + +.columns-prefs label { + padding: 0 5px; +} + + +/*------------------------------------------------------------------------------ + 9.0 - Dashboard +------------------------------------------------------------------------------*/ + +#wpbody-content .metabox-holder { + padding-top: 10px; +} + +#dashboard-widgets .meta-box-sortables { + margin: 0 5px; +} + +#dashboard_recent_comments div.undo { + border-top-style: solid; + border-top-width: 1px; + margin: 0 -10px; + padding: 3px 8px; + font-size: 11px; +} + +#the-comment-list td.comment p.comment-author { + margin-top: 0; + margin-left: 0; +} + +#the-comment-list p.comment-author img { + float: left; + margin-right: 8px; +} + +#the-comment-list p.comment-author strong a { + border: none; +} + +#the-comment-list td { + vertical-align: top; +} + +#the-comment-list td.comment { + word-wrap: break-word; +} + + +/*------------------------------------------------------------------------------ + 10.0 - List Posts (/Pages/etc) +------------------------------------------------------------------------------*/ + +table.fixed { + table-layout: fixed; +} +.fixed .column-rating, +.fixed .column-visible { + width: 8%; +} +.fixed .column-date, +.fixed .column-parent, +.fixed .column-links { + width: 10%; +} +.fixed .column-response, +.fixed .column-author, +.fixed .column-categories, +.fixed .column-tags, +.fixed .column-rel, +.fixed .column-role { + width: 15%; +} +.fixed .column-comments { + width: 4em; + padding: 8px 0; + text-align: left; +} +.fixed .column-comments .vers { + padding-left: 3px; +} +.fixed .column-comments a { + float: left; +} +.fixed .column-slug { + width: 25%; +} +.fixed .column-posts { + width: 10%; +} +.fixed .column-icon { + width: 80px; +} +#commentsdiv .fixed .column-author, +#comments-form .fixed .column-author { + width: 20%; +} +#commentsdiv.postbox .inside { + line-height: 1.4em; + margin: 0; + padding: 0; +} +#commentsdiv.postbox .inside .row-actions { + line-height:18px; +} +#commentsdiv.postbox .inside td { + padding:1em 10px; +} +#commentsdiv.postbox .inside .column-comment p { +} +#commentsdiv.postbox .inside .column-author { + width:33%; +} +#commentsdiv.postbox .inside p { + margin:6px 10px 8px; +} +#commentsdiv.postbox .column-comment p { + margin:0.6em 0; +} +#commentsdiv.postbox #replyrow td { + padding:0; +} +.sorting-indicator { + display: none; + width: 7px; + height: 4px; + margin-top: 8px; + margin-left: 7px; + background-image: url(../images/sort.gif); + background-repeat: no-repeat; +} +.fixed .column-comments .sorting-indicator { + margin-top: 3px; +} +.widefat th.sortable, +.widefat th.sorted { + padding: 0; +} +th.sortable a, +th.sorted a { + display: block; + overflow: hidden; + padding: 7px 7px 8px; +} +.fixed .column-comments.sortable a, +.fixed .column-comments.sorted a { + padding: 8px 0; +} +th.sortable a span, +th.sorted a span { + float: left; + cursor: pointer; +} +th.sorted.asc .sorting-indicator, +th.desc:hover span.sorting-indicator { + display: block; + background-position: 0 0; +} +th.sorted.desc .sorting-indicator, +th.asc:hover span.sorting-indicator { + display: block; + background-position: -7px 0; +} + +/* Bulk Actions */ + +.tablenav-pages a { + border-bottom-style: solid; + border-bottom-width: 2px; + font-weight: bold; + margin-right: 1px; + padding: 0 2px; +} +.tablenav-pages .current-page { + text-align: center; +} +.tablenav-pages .next-page { + margin-left: 2px; +} + +.tablenav a.button-secondary { + display: block; + margin: 3px 8px 0 0; +} + +.tablenav { + clear: both; + height: 30px; + margin: 6px 0 4px; + vertical-align: middle; +} + +.tablenav .tablenav-pages { + float: right; + display: block; + cursor: default; + height: 30px; + line-height: 30px; + font-size: 12px; +} + +.tablenav .no-pages, +.tablenav .one-page .pagination-links { + display: none; +} + +.tablenav .tablenav-pages a, +.tablenav-pages span.current { + text-decoration: none; + border: none; + padding: 3px 6px; + border-width: 1px; + border-style: solid; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.tablenav .tablenav-pages a.disabled:hover { + cursor: default; +} + +.tablenav .tablenav-pages a.disabled:active { + cursor: default; +} + +.tablenav .displaying-num { + margin-right: 10px; + font-size: 12px; + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-style: italic; +} + +.tablenav .actions { + padding: 2px 8px 0 0; +} + +.tablenav .delete { + margin-right: 20px; +} + +.view-switch { + float: right; + margin: 6px 8px 0; +} + +.view-switch a { + text-decoration: none; +} + +.filter { + float: left; + margin: -5px 0 0 10px; +} + +.filter .subsubsub { + margin-left: -10px; + margin-top: 13px; +} +.screen-per-page { + width: 3em; +} + +#posts-filter fieldset { + float: left; + margin: 0 1.5ex 1em 0; + padding: 0; +} + +#posts-filter fieldset legend { + padding: 0 0 .2em 1px; +} + +span.post-state-format { + font-weight: normal; +} + + +/*------------------------------------------------------------------------------ + 10.1 - Inline Editing +------------------------------------------------------------------------------*/ + +/* +.quick-edit* is for Quick Edit +.bulk-edit* is for Bulk Edit +.inline-edit* is for everything +*/ + +/* Layout */ +tr.inline-edit-row td { + padding: 0 0.5em; +} + +#wpbody-content .inline-edit-row fieldset { + font-size: 12px; + float: left; + margin: 0; + padding: 0; + width: 100%; +} + +#wpbody-content .inline-edit-row fieldset .inline-edit-col { + padding: 0 0.5em; +} + +#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col { + border-width: 0 0 0 1px; + border-style: none none none solid; +} + +#wpbody-content .quick-edit-row-post .inline-edit-col-left { + width: 40%; +} + +#wpbody-content .quick-edit-row-post .inline-edit-col-right { + width: 39%; +} + +#wpbody-content .inline-edit-row-post .inline-edit-col-center { + width: 20%; +} + +#wpbody-content .quick-edit-row-page .inline-edit-col-left { + width: 50%; +} + +#wpbody-content .quick-edit-row-page .inline-edit-col-right, +#wpbody-content .bulk-edit-row-post .inline-edit-col-right { + width: 49%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-left { + width: 30%; +} + +#wpbody-content .bulk-edit-row-page .inline-edit-col-right { + width: 69%; +} + +#wpbody-content .bulk-edit-row .inline-edit-col-bottom { + float: right; + width: 69%; +} + +#wpbody-content .inline-edit-row-page .inline-edit-col-right { + margin-top: 27px; +} + +.inline-edit-row fieldset .inline-edit-group { + clear: both; +} + +.inline-edit-row fieldset .inline-edit-group:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +.inline-edit-row p.submit { + clear: both; + padding: 0.5em; + margin: 0.5em 0 0; +} + +.inline-edit-row span.error { + line-height: 22px; + margin: 0 15px; + padding: 3px 5px; +} + +/* Positioning */ +.inline-edit-row h4 { + margin: .2em 0; + padding: 0; + line-height: 23px; +} +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-title { + margin: 0; + padding: 0; + line-height: 27px; +} + +.inline-edit-row fieldset label, +.inline-edit-row fieldset span.inline-edit-categories-label { + display: block; + margin: .2em 0; +} + +.inline-edit-row fieldset label.inline-edit-tags { + margin-top: 0; +} + +.inline-edit-row fieldset label.inline-edit-tags span.title { + margin: .2em 0; +} + +.inline-edit-row fieldset label span.title { + display: block; + float: left; + width: 5em; +} + +.inline-edit-row fieldset label span.input-text-wrap { + display: block; + margin-left: 5em; +} + +.quick-edit-row-post fieldset.inline-edit-col-right label span.title { + width: auto; + padding-right: 0.5em; +} + +.inline-edit-row .input-text-wrap input[type=text] { + width: 100%; +} + +.inline-edit-row fieldset label input[type=checkbox] { + vertical-align: text-bottom; +} + +.inline-edit-row fieldset label textarea { + width: 100%; + height: 4em; +} + +#wpbody-content .bulk-edit-row fieldset .inline-edit-group label { + max-width: 50%; +} + +#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child { + margin-right: 0.5em +} + +.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input { + width: 6em; +} + + +/* Styling */ +.inline-edit-row h4 { + text-transform: uppercase; +} + +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-title { + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-style: italic; + line-height: 1.8em; +} + +/* Specific Elements */ +.inline-edit-row fieldset input[type="text"], +.inline-edit-row fieldset textarea { + border-style: solid; + border-width: 1px; +} + +.inline-edit-row fieldset .inline-edit-date { + float: left; +} + +.inline-edit-row fieldset input[name=jj], +.inline-edit-row fieldset input[name=hh], +.inline-edit-row fieldset input[name=mn] { + font-size: 12px; + width: 2.1em; +} + +.inline-edit-row fieldset input[name=aa] { + font-size: 12px; + width: 3.5em; +} + +.inline-edit-row fieldset label input.inline-edit-password-input { + width: 8em; +} + +.inline-edit-row .catshow, +.inline-edit-row .cathide { + cursor: pointer; +} + +ul.cat-checklist { + height: 12em; + border-style: solid; + border-width: 1px; + overflow-y: scroll; + padding: 0 5px; + margin: 0; +} + +#bulk-titles { + display: block; + height: 12em; + border-style: solid; + border-width: 1px; + overflow-y: scroll; + padding: 0 5px; + margin: 0 0 5px; +} + +.inline-edit-row fieldset ul.cat-checklist li, +.inline-edit-row fieldset ul.cat-checklist input { + margin: 0; +} + +.inline-edit-row fieldset ul.cat-checklist label, +.inline-edit-row .catshow, +.inline-edit-row .cathide, +.inline-edit-row #bulk-titles div { + font-family: sans-serif; + font-style: normal; + font-size: 11px; +} + +table .inline-edit-row fieldset ul.cat-hover { + height: auto; + max-height: 30em; + overflow-y: auto; + position: absolute; +} + +.inline-edit-row fieldset label input.inline-edit-menu-order-input { + width: 3em; +} + +.inline-edit-row fieldset label input.inline-edit-slug-input { + width: 75%; +} + +.quick-edit-row-post fieldset label.inline-edit-status { + float: left; +} + +#bulk-titles { + line-height: 140%; +} +#bulk-titles div { + margin: 0.2em 0.3em; +} + +#bulk-titles div a { + cursor: pointer; + display: block; + float: left; + height: 10px; + margin: 3px 3px 0 -2px; + overflow: hidden; + position: relative; + text-indent: -9999px; + width: 10px; +} + + +/*------------------------------------------------------------------------------ + 11.0 - Write/Edit Post Screen +------------------------------------------------------------------------------*/ + +#titlediv { + position: relative; + margin-bottom: 20px; +} +#titlediv label { cursor: text; } + +#titlediv div.inside { + margin: 0; +} + +#poststuff #titlewrap { + border: 0; + padding: 0; + +} + +#titlediv #title { + padding: 3px 4px; + border-width: 1px; + border-style: solid; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + font-size: 1.7em; + line-height: 100%; + width: 100%; + outline: none; +} + +#titlediv #title-prompt-text, +#wp-fullscreen-title-prompt-text { + color: #bbb; + position: absolute; + font-size: 1.7em; + padding: 8px; +} + +#wp-fullscreen-title-prompt-text { + left: 0; + padding: 11px; +} + +#poststuff .inside-submitbox, +#side-sortables .inside-submitbox { + margin: 0 3px; + font-size: 11px; +} + +input#link_description, +input#link_url { + width: 98%; +} + +#pending { + background: 0 none; + border: 0 none; + padding: 0; + font-size: 11px; + margin-top: -1px; +} + +#edit-slug-box { + height: 1em; + margin-top: 8px; + padding: 0 7px; +} + +#editable-post-name-full { + display: none; +} + +#editable-post-name input { + width: 16em; +} + +.postarea h3 label { + float: left; +} + +.postarea #add-media-button { + float: right; + margin: 7px 0pt 0pt; + position: relative; + right: 10px; +} + +#poststuff #editor-toolbar { + height: 30px; +} + +.wp_themeSkin tr.mceFirst td.mceToolbar { + border-width: 0 0 1px; + border-style: none none solid; +} + +#edButtonPreview, +#edButtonHTML { + height: 18px; + margin: 5px 5px 0 0; + padding: 4px 5px 2px; + float: right; + cursor: pointer; + border-width: 1px; + border-style: solid; + -moz-border-radius: 3px 3px 0 0; + -webkit-border-top-right-radius: 3px; + -webkit-border-top-left-radius: 3px; + -khtml-border-top-right-radius: 3px; + -khtml-border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.js .theEditor { + color: white; +} + +#poststuff #edButtonHTML { + margin-right: 15px; +} + +#media-buttons { + cursor: default; + padding: 8px 8px 0; +} + +#media-buttons a { + cursor: pointer; + padding: 0 0 5px 10px; +} + +#media-buttons img, +#submitpost #ajax-loading, +#submitpost .ajax-loading { + vertical-align: middle; +} + +#wpcontent .ajax-loading { + visibility: hidden; +} + +.submitbox .submit { + text-align: left; + padding: 12px 10px 10px; + font-size: 11px; +} + +.submitbox .submitdelete { + border-bottom-width: 1px; + border-bottom-style: solid; + text-decoration: none; + padding: 1px 2px; +} + +.inside-submitbox #post_status { + margin: 2px 0 2px -2px; +} + +.submitbox .submit a:hover { + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.submitbox .submit input { + margin-bottom: 8px; + margin-right: 4px; + padding: 6px; +} + +#post-status-select, #post-format { + line-height: 2.5em; + margin-top: 3px; +} + +/* Post Screen */ +#post-body #normal-sortables { + min-height: 50px; +} + +#post-body #advanced-sortables { + min-height: 20px; +} + +.postbox { + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + -khtml-border-radius: 3px; + border-radius: 3px; + position: relative; + min-width: 255px; +} + +#trackback_url { + width: 99%; +} + +#normal-sortables .postbox .submit { + background: transparent none; + border: 0 none; + float: right; + padding: 0 12px; + margin:0; +} + +#side-sortables .category-add input { + width: 94%; +} + +#side-sortables .category-add select { + width: 100%; +} + +#side-sortables .category-add input.category-add-sumbit, +#post-body .category-add input.category-add input.category-add-sumbit { + width: auto; +} + +#post-body ul.category-tabs, +#post-body ul.add-menu-item-tabs { + float: left; + width: 120px; + text-align: right; + /* Negative margin for the sake of those without JS: all tabs display */ + margin: 0 -120px 0 5px; + padding: 0; +} + +#post-body ul.category-tabs li, +#post-body ul.add-menu-item-tabs li { + padding: 8px; +} + +#post-body ul.category-tabs li.tabs, +#post-body ul.add-menu-item-tabs li.tabs { + -moz-border-radius: 3px 0 0 3px; + -webkit-border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -khtml-border-top-left-radius: 3px; + -khtml-border-bottom-left-radius: 3px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +#post-body ul.category-tabs li.tabs a, +#post-body ul.add-menu-item-tabs li.tabs a { + font-weight: bold; + text-decoration: none; +} + +.wp-tab-panel, +.categorydiv div.tabs-panel, +.customlinkdiv div.tabs-panel, +.posttypediv div.tabs-panel, +.taxonomydiv div.tabs-panel, +#linkcategorydiv div.tabs-panel { + height: 200px; + overflow: auto; + padding: 0.5em 0.9em; + border-style: solid; + border-width: 1px; +} + +.nav-menus-php .customlinkdiv div.tabs-panel, +.nav-menus-php .posttypediv div.tabs-panel, +.nav-menus-php .taxonomydiv div.tabs-panel { + height: auto; + max-height: 205px; +} + +div.tabs-panel-active { + display:block; +} + +div.tabs-panel-inactive { + display:none; +} + +#post-body .categorydiv div.tabs-panel, +.taxonomy div.tabs-panel, +#post-body #linkcategorydiv div.tabs-panel { + margin: 0 5px 0 125px; +} + +#side-sortables .category-tabs li, +#side-sortables .add-menu-item-tabs li, +.wp-tab-bar li { + display: inline; + line-height: 1.35em; +} + +#side-sortables .category-tabs a, +#side-sortables .add-menu-item-tabs a, +.wp-tab-bar a { + text-decoration: none; +} + +#side-sortables .category-tabs, +#side-sortables .add-menu-item-tabs, +.wp-tab-bar { + margin-bottom: 3px; +} + +.categorydiv ul, +.customlinkdiv ul, +.posttypediv ul, +.taxonomydiv ul, +#linkcategorydiv ul { + list-style: none; + padding: 0; + margin: 0; +} + +#normal-sortables .postbox #replyrow .submit { + float: none; + margin: 0; + padding: 3px 7px; +} + +#side-sortables .submitbox .submit input, +#side-sortables .submitbox .submit .preview, +#side-sortables .submitbox .submit a.preview:hover { + border: 0 none; +} + +#side-sortables .inside-submitbox .insidebox, +.stuffbox .insidebox { + margin: 11px 0; +} + +#side-sortables .comments-box, +#normal-sortables .comments-box { + border: 0 none; +} +ul.category-tabs, +ul.add-menu-item-tabs, +ul.wp-tab-bar { + margin-top: 12px; +} + +#side-sortables .comments-box thead th, +#normal-sortables .comments-box thead th { + background: transparent; + padding: 0 7px 4px; + font-style: italic; +} + +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs, +.wp-tab-active { + border-style: solid solid none; + border-width: 1px 1px 0; +} + +#commentsdiv img.waiting { + padding-left: 5px; +} + +#post-body .category-tabs li.tabs, +#post-body .add-menu-item-tabs li.tabs { + border-style: solid none solid solid; + border-width: 1px 0 1px 1px; + margin-right: -1px; +} + +ul.category-tabs li, +ul.add-menu-item-tabs li, +ul.wp-tab-bar li { + padding: 5px; + -moz-border-radius: 3px 3px 0 0; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + -khtml-border-top-left-radius: 3px; + -khtml-border-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +/* positioning etc. */ + +form#tags-filter { + position: relative; +} + +.screen-per-page { + width: 3em; +} + +#posts-filter fieldset { + float: left; + margin: 0 1.5ex 1em 0; + padding: 0; +} + +#posts-filter fieldset legend { + padding: 0 0 .2em 1px; +} + +/* Edit posts */ + +td.post-title strong, td.plugin-title strong { + display: block; + margin-bottom: .2em; +} + +td.post-title p, td.plugin-title p { + margin: 6px 0; +} + +/* Global classes */ + +.wp-hidden-children .wp-hidden-child, +.ui-tabs-hide { + display: none; +} + +.commentlist .avatar { + vertical-align: text-top; +} + +#post-body .tagsdiv #newtag { + margin-right: 5px; + width: 16em; +} + +#side-sortables input#post_password { + width: 94% +} + +#side-sortables .tagsdiv #newtag { + width: 68%; +} + +#post-status-info { + border-width: 0 1px 1px; + border-style: none solid solid; + width: 100%; + -moz-border-radius: 0 0 3px 3px; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + -khtml-border-bottom-left-radius: 3px; + -khtml-border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; +} + +#post-status-info td { + font-size: 12px; +} + +.autosave-info { + padding: 2px 15px 2px 2px; + text-align: right; +} + +#editorcontent #post-status-info { + border: none; +} + +#post-body .wp_themeSkin .mceStatusbar a.mceResize { + display: block; + background: transparent url(../images/resize.gif) no-repeat scroll right bottom; + width: 12px; + cursor: se-resize; + margin: 0 2px; + position: relative; + top: 22px; +} + +#wp-word-count { + display: block; + padding: 2px 7px; +} + +#timestampdiv select { + height: 20px; + line-height: 14px; + padding: 0; + vertical-align: top; +} + +#jj, #hh, #mn { + width: 2em; + padding: 1px; + font-size: 12px; +} + +#aa { + width: 3.4em; + padding: 1px; + font-size: 12px; +} + +.curtime #timestamp { + background-repeat: no-repeat; + background-position: left top; + padding-left: 18px; +} + +#timestampdiv { + padding-top: 5px; + line-height: 23px; +} + +#timestampdiv p { + margin: 8px 0 6px; +} + +#timestampdiv input { + border-width: 1px; + border-style: solid; +} + + +/*------------------------------------------------------------------------------ + 11.1 - Custom Fields +------------------------------------------------------------------------------*/ + +#postcustomstuff table, +#postcustomstuff input, +#postcustomstuff textarea { + border-width: 1px; + border-style: solid; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +#postcustomstuff .updatemeta, +#postcustomstuff .deletemeta { + margin: auto; +} + +#postcustomstuff thead th { + padding: 5px 8px 8px; +} + +#postcustom #postcustomstuff .submit { + border: 0 none; + float: none; + padding: 5px 8px; +} + +#side-sortables #postcustom #postcustomstuff .submit { + padding: 0 5px; +} + +#side-sortables #postcustom #postcustomstuff td.left input { + margin: 3px 3px 0; +} + +#side-sortables #postcustom #postcustomstuff #the-list textarea { + height: 85px; + margin: 3px; +} + +#postcustomstuff table { + margin: 0; + width: 100%; + border-width: 1px; + border-style: solid; + border-spacing: 0; +} + +#postcustomstuff table input, +#postcustomstuff table select, +#postcustomstuff table textarea { + width: 95%; + margin: 8px 0 8px 8px; +} + +#postcustomstuff th.left, +#postcustomstuff td.left { + width: 38%; +} + +#postcustomstuff .submit input { + width: auto; +} + +#postcustomstuff #newmeta .submit { + padding: 0 8px; +} + +#postcustomstuff table #addmetasub { + width: auto; +} + +#postcustomstuff #newmetaleft { + vertical-align: top; +} + +#postcustomstuff #newmetaleft a { + padding: 0 10px; + text-decoration: none; +} + + +/*------------------------------------------------------------------------------ + 11.2 - Post Revisions +------------------------------------------------------------------------------*/ + +table.diff { + width: 100%; +} + +table.diff col.content { + width: 50%; +} + +table.diff tr { + background-color: transparent; +} + +table.diff td, table.diff th { + padding: .5em; + font-family: Consolas, Monaco, monospace; + border: none; +} + +table.diff .diff-deletedline del, table.diff .diff-addedline ins { + text-decoration: none; +} + + +/*------------------------------------------------------------------------------ + 12.0 - Categories +------------------------------------------------------------------------------*/ + +.category-adder { + margin-left: 120px; + padding: 4px 0; +} + +.category-adder h4 { + margin: 0 0 8px; +} + +#side-sortables .category-adder { + margin: 0; +} + +#post-body .category-add input, .category-add select { + width: 30%; +} + +#side-sortables .category-add select { + width: 100%; +} + +#side-sortables .category-add input.category-add-sumbit, #post-body .category-add input.category-add input.category-add-sumbit { + width: auto; +} + +#post-body ul.category-tabs, +#post-body ul.add-menu-item-tabs { + float: left; + width: 120px; + text-align: right; + /* Negative margin for the sake of those without JS: all tabs display */ + margin: 0 -120px 0 5px; + padding: 0; +} + +#post-body ul.category-tabs li, +#post-body ul.add-menu-item-tabs li { + padding: 8px; +} + +#post-body ul.category-tabs li.tabs, +#post-body ul.add-menu-item-tabs li.tabs { + -moz-border-radius: 3px 0 0 3px; + -webkit-border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -khtml-border-top-left-radius: 3px; + -khtml-border-bottom-left-radius: 3px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +#post-body ul.category-tabs li.tabs a, +#post-body ul.add-menu-item-tabs li.tabs a { + font-weight: bold; + text-decoration: none; +} + +.categorydiv div.tabs-panel, +.customlinkdiv div.tabs-panel, +.posttypediv div.tabs-panel, +.taxonomydiv div.tabs-panel, +#linkcategorydiv div.tabs-panel { + height: 200px; + overflow: auto; + padding: 0.5em 0.9em; + border-style: solid; + border-width: 1px; +} + +.nav-menus-php .customlinkdiv div.tabs-panel, +.nav-menus-php .posttypediv div.tabs-panel, +.nav-menus-php .taxonomydiv div.tabs-panel { + height: auto; + max-height: 205px; +} + +div.tabs-panel-active { + display:block; +} + +div.tabs-panel-inactive { + display:none; +} + +#post-body .categorydiv div.tabs-panel, +.taxonomy div.tabs-panel, +#post-body #linkcategorydiv div.tabs-panel { + margin: 0 5px 0 125px; +} + +.categorydiv ul, +.customlinkdiv ul, +.posttypediv ul, +.taxonomydiv ul, +#linkcategorydiv ul { + list-style: none; + padding: 0; + margin: 0; +} + +#front-page-warning, +#front-static-pages ul, +ul.export-filters, +.inline-editor ul.cat-checklist ul, +.categorydiv ul.categorychecklist ul, +.customlinkdiv ul.categorychecklist ul, +.posttypediv ul.categorychecklist ul, +.taxonomydiv ul.categorychecklist ul, +#linkcategorydiv ul.categorychecklist ul { + margin-left: 18px; +} + +ul.categorychecklist li { + margin: 0; + padding: 0; + line-height: 19px; + word-wrap: break-word; +} + +.categorydiv .tabs-panel, +.customlinkdiv .tabs-panel, +.posttypediv .tabs-panel, +.taxonomydiv .tabs-panel { + border-width: 3px; + border-style: solid; +} + +ul.category-tabs, +ul.add-menu-item-tabs { + margin-top: 12px; +} + +ul.category-tabs li.tabs, +ul.add-menu-item-tabs li.tabs { + border-style: solid solid none; + border-width: 1px 1px 0; +} + +#post-body .category-tabs li.tabs, +#post-body .add-menu-item-tabs li.tabs { + border-style: solid none solid solid; + border-width: 1px 0 1px 1px; + margin-right: -1px; +} + +ul.category-tabs li, +ul.add-menu-item-tabs li { + padding: 5px; + -moz-border-radius: 3px 3px 0 0; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + -khtml-border-top-left-radius: 3px; + -khtml-border-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.form-wrap { + margin: 10px 0; + width: 97%; +} + +.form-wrap p, +.form-wrap label { + font-size: 11px; +} + +.form-wrap label { + display: block; + padding: 2px; + font-size: 12px; +} + +.form-field input, +.form-field textarea { + border-style: solid; + border-width: 1px; + width: 95%; +} + +p.description, +.form-wrap p { + margin: 2px 0 5px; +} + +p.help, +p.description, +span.description, +.form-wrap p { + font-size: 12px; + font-style: italic; + font-family: sans-serif; +} + +.form-wrap .form-field { + margin: 0 0 10px; + padding: 8px; +} + +.col-wrap h3 { + margin: 12px 0; + font-size: 1.1em; +} + +.col-wrap p.submit { + margin-top: -10px; +} + + +/*------------------------------------------------------------------------------ + 13.0 - Tags +------------------------------------------------------------------------------*/ + +.taghint { + color: #aaa; + margin: 15px 0 -24px 12px; +} + +#poststuff .tagsdiv .howto { + margin: 0 0 6px 8px; +} + +.ajaxtag .newtag { + position: relative; +} + +.tagsdiv .newtag { + width: 180px; +} + +.tagsdiv .the-tags { + display: block; + height: 60px; + margin: 0 auto; + overflow: auto; + width: 260px; +} + +#post-body-content .tagsdiv .the-tags { + margin: 0 5px; +} + +p.popular-tags { + -moz-border-radius: 8px; + -khtml-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + border-width: 1px; + border-style: solid; + line-height: 2em; + padding: 8px 12px 12px; + text-align: justify; +} + +p.popular-tags a { + padding: 0 3px; +} + +.tagcloud { + width: 97%; + margin: 0 0 40px; + text-align: justify; +} + +.tagcloud h3 { + margin: 2px 0 12px; +} + +.ac_results { + padding: 0; + margin: 0; + list-style: none; + position: absolute; + z-index: 10000; + display: none; + border-width: 1px; + border-style: solid; +} + +.ac_results li { + padding: 2px 5px; + white-space: nowrap; + text-align: left; +} + +.ac_over { + cursor: pointer; +} + +.ac_match { + text-decoration: underline; +} + + +/*------------------------------------------------------------------------------ + 14.0 - Media Screen +------------------------------------------------------------------------------*/ + +#wpbody-content #media-items .describe { + border-collapse: collapse; + width: 100%; + border-top-style: solid; + border-top-width: 1px; + clear: both; + cursor: default; + padding: 5px; +} + +#wpbody-content .describe th { + vertical-align: top; + text-align: left; + padding: 10px; + width: 140px; +} + +#wpbody-content .describe .media-item-info tr { + background-color: transparent; +} + +#wpbody-content .describe .media-item-info td { + padding: 4px 10px 0; +} + +.describe .media-item-info .A1B1 { + padding: 0 0 0 10px; +} + +#wpbody-content .filename { + padding: 0 10px; +} + +#wpbody-content .media-item .thumbnail { + max-height: 128px; + max-width: 128px; +} + +#wpbody-content #async-upload-wrap a { + display: none; +} + +.media-upload-form td label { + margin-right: 6px; + margin-left: 2px; +} + +.media-upload-form .align .field label { + display: inline; + padding: 0 0 0 22px; + margin: 0 1em 0 0; + font-weight: bold; +} + +.media-upload-form tr.image-size label { + margin: 0 0 0 3px; + font-weight: bold; +} + +.media-upload-form th.label label { + font-weight: bold; + margin: 0.5em; + font-size: 13px; +} + +.media-upload-form th.label label span { + padding: 0 5px; +} + +abbr.required { + border: medium none; + text-decoration: none; +} + +#wpbody-content .describe input[type="text"], +#wpbody-content .describe textarea { + width: 460px; +} + +#wpbody-content .describe p.help { + margin: 0; + padding: 0 0 0 5px; +} + +.media-item .error-div a.dismiss, +.describe-toggle-on, +.describe-toggle-off { + display: block; + line-height: 36px; + float: right; + margin-right: 20px; +} + +.describe-toggle-off { + display: none; +} + +#wpbody-content .media-item { + border-bottom-style: solid; + border-bottom-width: 1px; + min-height: 36px; + position: relative; + width: 100%; +} + +#wpbody-content .media-single .media-item { + border-bottom-style: none; + border-bottom-width: 0; +} + +#wpbody-content #media-items { + border-style: solid solid none; + border-width: 1px; + width: 670px; +} + +#wpbody-content #media-items .filename { + line-height: 36px; + overflow: hidden; +} + +.media-item .error-div { + padding-left: 10px; +} + +.media-item .pinkynail { + float: left; + margin: 2px; + max-width: 40px; + max-height: 32px; +} + +.media-item .startopen, +.media-item .startclosed { + display: none; +} + +.media-item .original { + position: relative; + height: 34px; + width: 503px; +} + +.media-item .percent { + font-weight: bold; +} + +.crunching { + display: block; + line-height: 32px; + text-align: right; + margin-right: 5px; +} + +.progress { + position: relative; + margin-bottom: -36px; + height: 36px; +} + +.bar { + width: 0; + height: 100%; + border-right-width: 3px; + border-right-style: solid; +} + +.upload-php .fixed .column-parent { + width: 25%; +} + + +/*------------------------------------------------------------------------------ + 14.1 - Media Uploader +------------------------------------------------------------------------------*/ + +.find-box { + width: 500px; + height: 300px; + overflow: hidden; + padding: 33px 5px 40px; + position: absolute; + z-index: 1000; +} + +.find-box-head { + cursor: move; + font-weight: bold; + height: 2em; + line-height: 2em; + padding: 1px 12px; + position: absolute; + top: 5px; + width: 100%; +} + +.find-box-inside { + overflow: auto; + width: 100%; + height: 100%; +} + +.find-box-search { + padding: 12px; + border-width: 1px; + border-style: none none solid; +} + +#find-posts-response { + margin: 8px 0; + padding: 0 1px; +} + +#find-posts-response table { + width: 100%; +} + +#find-posts-response .found-radio { + padding: 5px 0 0 8px; + width: 15px; +} + +.find-box-buttons { + width: 480px; + margin: 8px; +} + +.find-box-search label { + padding-right: 6px; +} + +.find-box #resize-se { + position: absolute; + right: 1px; + bottom: 1px; +} + +ul#dismissed-updates { + display: none; +} + +form.upgrade { + margin-top: 8px; +} + +form.upgrade .hint { + font-style: italic; + font-size: 85%; + margin: -0.5em 0 2em 0; +} + +#poststuff .inside .the-tagcloud { + margin: 5px 0 10px; + padding: 8px; + border-width: 1px; + border-style: solid; + line-height: 1.8em; + word-spacing: 3px; + -moz-border-radius: 6px; + -khtml-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; +} + +br.clear { + height: 2px; + line-height: 2px; +} + +.swfupload { + margin: 5px 10px; + vertical-align: middle; +} + + +/*------------------------------------------------------------------------------ + 14.2 - Image Editor +------------------------------------------------------------------------------*/ + +.describe .image-editor { + vertical-align: top; +} + +.imgedit-wrap { + position: relative; +} + +.imgedit-settings p { + margin: 8px 0; +} + +.describe .imgedit-wrap table td { + vertical-align: top; + padding-top: 0; +} + +.imgedit-wrap p, +.describe .imgedit-wrap table td { + font-size: 11px; + line-height: 18px; +} + +.describe .imgedit-wrap table td.imgedit-settings { + padding: 0 5px; +} + +td.imgedit-settings input { + vertical-align: middle; +} + +.imgedit-wait { + position: absolute; + top: 0; + background: #FFFFFF url(../images/wpspin_light.gif) no-repeat scroll 22px 10px; + opacity: 0.7; + filter: alpha(opacity=70); + width: 100%; + height: 500px; + display: none; +} + +.media-disabled, +.imgedit-settings .disabled { + color: grey; +} + +.imgedit-wait-spin { + padding: 0 4px 4px; + vertical-align: bottom; + visibility: hidden; +} + +.imgedit-menu { + margin: 0 0 12px; + min-width: 300px; +} + +.imgedit-menu div { + float: left; + width: 32px; + height: 32px; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border-width: 1px; + border-style: solid; +} + +.imgedit-crop-wrap { + position: relative; +} + +.imgedit-crop { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -9px -31px; + margin: 0 8px 0 0; +} + +.imgedit-crop.disabled:hover { + background-position: -9px -31px; +} + +.imgedit-crop:hover { + background-position: -9px -1px; +} + +.imgedit-rleft { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -46px -31px; + margin: 0 3px; +} + +.imgedit-rleft.disabled:hover { + background-position: -46px -31px; +} + +.imgedit-rleft:hover { + background-position: -46px -1px; +} + +.imgedit-rright { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -77px -31px; + margin: 0 8px 0 3px; +} + +.imgedit-rright.disabled:hover { + background-position: -77px -31px; +} + +.imgedit-rright:hover { + background-position: -77px -1px; +} + +.imgedit-flipv { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -115px -31px; + margin: 0 3px; +} + +.imgedit-flipv.disabled:hover { + background-position: -115px -31px; +} + +.imgedit-flipv:hover { + background-position: -115px -1px; +} + +.imgedit-fliph { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -147px -31px; + margin: 0 8px 0 3px; +} + +.imgedit-fliph.disabled:hover { + background-position: -147px -31px; +} + +.imgedit-fliph:hover { + background-position: -147px -1px; +} + +.imgedit-undo { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -184px -31px; + margin: 0 3px; +} + +.imgedit-undo.disabled:hover { + background-position: -184px -31px; +} + +.imgedit-undo:hover { + background-position: -184px -1px; +} + +.imgedit-redo { + background: transparent url(../images/imgedit-icons.png) no-repeat scroll -215px -31px; + margin: 0 8px 0 3px; +} + +.imgedit-redo.disabled:hover { + background-position: -215px -31px; +} + +.imgedit-redo:hover { + background-position: -215px -1px; +} + +.imgedit-applyto img { + margin: 0 8px 0 0; +} + +.imgedit-group-top { + margin: 5px 0; +} + +.imgedit-applyto .imgedit-label { + padding: 2px 0 0; + display: block; +} + +.imgedit-help { + display: none; + font-style: italic; + margin-bottom: 8px; +} + +.imgedit-help ul li { + font-size: 11px; +} + +a.imgedit-help-toggle { + text-decoration: none; +} + +#wpbody-content .imgedit-response div { + width: 600px; + margin: 8px; +} + +.form-table td.imgedit-response { + padding: 0; +} + +.imgedit-submit { + margin: 8px 0; +} + +.imgedit-submit-btn { + margin-left: 20px; +} + +.imgedit-wrap .nowrap { + white-space: nowrap; +} + +span.imgedit-scale-warn { + color: red; + font-size: 20px; + font-style: normal; + visibility: hidden; + vertical-align: middle; +} + +.imgedit-group { + border-width: 1px; + border-style: solid; + -moz-border-radius: 8px; + -khtml-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + margin-bottom: 8px; + padding: 2px 10px; +} + + +/*------------------------------------------------------------------------------ + 15.0 - Comments Screen +------------------------------------------------------------------------------*/ + +.form-table { + border-collapse: collapse; + margin-top: 0.5em; + width: 100%; + margin-bottom: -8px; + clear: both; +} + +.form-table td { + margin-bottom: 9px; + padding: 8px 10px; + line-height: 20px; + font-size: 12px; +} + +.form-table th, +.form-wrap label { + font-weight: normal; + text-shadow: rgba(255,255,255,1) 0 1px 0; +} + +.form-table th { + vertical-align: top; + text-align: left; + padding: 10px; + width: 200px; +} + +.form-table th.th-full { + width: auto; +} + +.form-table div.color-option { + display: block; + clear: both; + margin-top: 12px; +} + +.form-table input.tog { + margin-top: 2px; + margin-right: 2px; + float: left; +} + +.form-table td p { + margin-top: 4px; +} + +.form-table table.color-palette { + vertical-align: bottom; + float: left; + margin: -12px 3px 11px; +} + +.form-table .color-palette td { + border-width: 1px 1px 0; + border-style: solid solid none; + height: 10px; + line-height: 20px; + width: 10px; +} + +.commentlist li { + padding: 1em 1em .2em; + margin: 0; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.commentlist li li { + border-bottom: 0; + padding: 0; +} + +.commentlist p { + padding: 0; + margin: 0 0 .8em; +} + +/* reply to comments */ +#replyrow { + font-size: 11px; +} + +#replyrow input { + border-width: 1px; + border-style: solid; +} + +#replyrow td { + padding: 2px; +} + +#replyrow #editorcontainer { + border: 0 none; +} + +#replysubmit { + margin: 0; + padding: 3px 7px; + text-align:center; +} + +#replysubmit img.waiting, +.inline-edit-save img.waiting { + padding: 4px 10px 0; + vertical-align: top; + float: right; +} + +#replysubmit .button { + margin-right: 5px; +} + +#replysubmit .error { + color:red; + line-height:21px; + text-align:center; + vertical-align:center; +} + +#replyrow #editor-toolbar { + display: none; +} + +#replyhead { + font-size: 12px; + font-weight: bold; + padding: 2px 10px 4px; +} + +#edithead .inside { + float: left; + padding: 3px 0 2px 5px; + margin: 0; + text-align: center; + font-size: 11px; +} + +#edithead .inside input { + width: 180px; + font-size: 11px; +} + +#edithead label { + padding: 2px 0; +} + +#replycontainer { + padding: 5px; + border: 0 none; + height: 120px; + overflow: hidden; + position: relative; +} + +#replycontent { + resize: none; + margin: 0; + width: 100%; + height: 100%; + padding: 0; + line-height: 150%; + border: 0 none; + outline: none; + font-size: 12px; +} + +#replyrow #ed_reply_toolbar { + margin: 0; + padding: 2px 3px; +} + +.comment-ays { + margin-bottom: 0; + border-style: solid; + border-width: 1px; +} + +.comment-ays th { + border-right-style: solid; + border-right-width: 1px; +} + +.trash-undo-inside, +.spam-undo-inside { + margin: 1px 8px 1px 0; + line-height: 16px; +} + +.spam-undo-inside .avatar, +.trash-undo-inside .avatar { + height: 20px; + width: 20px; + margin-right: 8px; + vertical-align: middle; +} + +.stuffbox .editcomment { + clear: none; +} + +#comment-status-radio p { + margin: 3px 0 5px; +} + +#comment-status-radio input { + margin: 2px 3px 5px 0; + vertical-align: middle; +} + +#comment-status-radio label { + padding: 5px 0; +} + +.commentlist .avatar { + vertical-align: text-top; +} + + +/*------------------------------------------------------------------------------ + 16.0 - Themes +------------------------------------------------------------------------------*/ + +.theme-install-php .tablenav { + height:auto; +} + +table#availablethemes { + border-spacing: 0; + border-width: 1px 0; + border-style: solid none; + margin: 10px auto; + width: 100%; +} + +table#availablethemes .no-items td{ + border-width:0; + padding:5px; +} + +td.available-theme { + vertical-align: top; + width: 240px; + margin: 0; + padding: 20px; + text-align: left; +} + +table#availablethemes td { + border-width: 0 1px 1px; + border-style: none solid solid; +} + +table#availablethemes td.right, +table#availablethemes td.left { + border-right: 0 none; + border-left: 0 none; +} + +table#availablethemes td.bottom { + border-bottom: 0 none; +} + +.available-theme a.screenshot { + width: 240px; + height: 180px; + display: block; + border-width: 1px; + border-style: solid; + margin-bottom: 10px; + overflow: hidden; +} + +.available-theme img { + width: 240px; +} + +.available-theme h3 { + margin: 15px 0 5px; +} + +#current-theme { + margin: 1em 0 1.5em; +} + +#current-theme a { + border-bottom: none; +} + +#current-theme h3 { + font-size: 17px; + font-weight: normal; + margin: 0; +} + +#current-theme .theme-description { + margin-top: 5px; +} + +#current-theme img { + float: left; + border-width: 1px; + border-style: solid; + margin-right: 1em; + margin-bottom: 1.5em; + width: 150px; +} + +.theme-options span { + text-transform: uppercase; + font-size: 13px; +} + +.theme-options a { + font-size: 15px; +} + +#TB_window #TB_title a.tb-theme-preview-link, +#TB_window #TB_title a.tb-theme-preview-link:visited { + font-weight: bold; + text-decoration: none; +} + +#TB_window #TB_title { + background-color: #222; + color: #cfcfcf; +} + +#broken-themes { + text-align: left; + width: 50%; + border-spacing: 3px; + padding: 3px; +} + +.theme-install-php h4 { + margin: 2.5em 0 8px; +} + + +/*------------------------------------------------------------------------------ + 16.1 - Custom Header Screen +------------------------------------------------------------------------------*/ + +.appearance_page_custom-header #headimg { + border: 1px solid #DFDFDF; + min-height: 100px; + width: 100%; +} + +.appearance_page_custom-header #upload-form p label { + font-size: 12px; +} + +.appearance_page_custom-header .available-headers .default-header { + float: left; + margin: 0 20px 20px 0; +} + +.appearance_page_custom-header .random-header { + clear: both; + margin: 0 20px 20px 0; + vertical-align: middle; +} + +.appearance_page_custom-header .available-headers label input, +.appearance_page_custom-header .random-header label input { + margin-right: 10px; +} + +.appearance_page_custom-header .available-headers label img { + vertical-align: middle; +} + + +/*------------------------------------------------------------------------------ + 16.2 - Custom Background Screen +------------------------------------------------------------------------------*/ + +div#custom-background-image { + min-height: 100px; + border: 1px solid #dfdfdf; +} + +div#custom-background-image img { + max-width: 400px; + max-height: 300px; +} + + +/*------------------------------------------------------------------------------ + 16.3 - Tabbed Admin Screen Interface (Experimental) +------------------------------------------------------------------------------*/ + +.nav-tab { + border-style: solid; + border-color: #dfdfdf #dfdfdf #fff; + border-width: 1px 1px 0; + color: #aaa; + text-shadow: rgba(255,255,255,1) 0 1px 0; + font-size: 12px; + line-height: 16px; + display: inline-block; + padding: 4px 14px 6px; + text-decoration: none; + margin: 0 6px -1px 0; + -moz-border-radius: 3px 3px 0 0; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + -khtml-border-top-left-radius: 3px; + -khtml-border-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.nav-tab-active { + border-width: 1px; + color: #464646; +} + +.nav-tab:hover, +.nav-tab-active { + border-color: #ccc #ccc #fff; +} + +h2.nav-tab-wrapper, h3.nav-tab-wrapper { + border-bottom: 1px solid #ccc; + padding-bottom: 0; +} + +h2 .nav-tab { + padding: 4px 10px 6px; + font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", sans-serif; + font-weight: 200; + font-size: 20px; + line-height: 24px; + +} + + +/*------------------------------------------------------------------------------ + 17.0 - Plugins +------------------------------------------------------------------------------*/ + +.plugins .name, +#pass-strength-result.strong, +#pass-strength-result.short, +.button-highlighted, +input.button-highlighted, +#quicktags #ed_strong, +#ed_reply_toolbar #ed_reply_strong { + font-weight: bold; +} + +.plugins p { + margin: 0 4px; + padding: 0; +} + +.plugins .desc p { + margin: 0 0 8px; +} + +.plugins td.desc { + line-height: 1.5em; +} + +.plugins .desc ul, +.plugins .desc ol { + margin: 0 0 0 2em; +} + +.plugins .desc ul { + list-style-type: disc; +} + +.plugins .row-actions-visible { + padding: 0; +} + +.plugins tbody th.check-column { + padding: 7px 0; +} + +.plugins .inactive td, +.plugins .inactive th, +.plugins .active td, +.plugins .active th { + border-top-style: solid; + border-top-width: 1px; + padding: 5px 7px 0; +} + +#wpbody-content .plugins .plugin-title, #wpbody-content .plugins .theme-title { + padding-right: 12px; + white-space:nowrap; +} + +.plugins .second, .plugins .row-actions-visible { + padding: 0 0 5px; +} + +.plugins-php .widefat tfoot th, +.plugins-php .widefat tfoot td { + border-top-style: solid; + border-top-width: 1px; +} + +.plugin-update-tr .update-message { + margin: 5px; + padding: 3px 5px; + border-width: 1px; + border-style: solid; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.plugin-install-php h4 { + margin: 2.5em 0 8px; +} + + +/*------------------------------------------------------------------------------ + 18.0 - Users +------------------------------------------------------------------------------*/ + +#profile-page .form-table textarea { + width: 500px; + margin-bottom: 6px; +} + +#profile-page .form-table #rich_editing { + margin-right: 5px +} + +#your-profile legend { + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-size: 22px; +} + +#your-profile #rich_editing { + border: none; +} + +#display_name { + width: 15em; +} + +#createuser .form-field input { + width: 25em; +} + +/*------------------------------------------------------------------------------ + 19.0 - Tools +------------------------------------------------------------------------------*/ + +.pressthis { + margin: 20px 0; +} + +.pressthis a { + display: inline-block; + width: 113px; + position: relative; + cursor: move; + color: #333; + background: #dfdfdf; + -webkit-gradient( + linear, + left bottom, + left top, + color-stop(0.07, rgb(230,230,230)), + color-stop(0.77, rgb(216,216,216)) + ); + -moz-linear-gradient( + center bottom, + rgb(230,230,230) 7%, + rgb(216,216,216) 77% + ); + background-repeat: no-repeat; + background-image-position: 10px 8px; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -o-border-radius: 5px; + border: 1px #b4b4b4 solid; + font: normal normal normal 14px/16px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + text-decoration: none; + text-shadow: #fff 0 1px 0px; + -webkit-text-shadow: #fff 0 1px 0px; + -moz-text-shadow: #fff 0 1px 0px; + -o-text-shadow: #fff 0 1px 0px; +} + +.pressthis a:hover, +.pressthis a:active { + color: #333 +} + +.pressthis a:hover:after { + transform: skew(20deg) rotate(9deg); + -webkit-transform: skew(20deg) rotate(9deg); + -moz-transform: skew(20deg) rotate(9deg); + box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); + -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.7); +} + +.pressthis a span { + background: url(../images/press-this.png) no-repeat -45px 5px ; + padding: 8px 0 8px 32px; + display: inline-block; +} + +.pressthis a:after { + content: ''; + width: 70%; + height: 55%; + z-index: -1; + position: absolute; + right: 10px; + bottom: 9px; + background: transparent; + transform: skew(20deg) rotate(6deg); + -webkit-transform: skew(20deg) rotate(6deg); + -moz-transform: skew(20deg) rotate(6deg); + box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); + -webkit-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); + -moz-box-shadow: 0 10px 8px rgba(0, 0, 0, 0.6); +} + + +/*------------------------------------------------------------------------------ + 20.0 - Settings +------------------------------------------------------------------------------*/ + +#utc-time, #local-time { + padding-left: 25px; + font-style: italic; + font-family: sans-serif; +} + +.defaultavatarpicker .avatar { + margin: 2px 0; + vertical-align: middle; +} + + +/*------------------------------------------------------------------------------ + 21.0 - Admin Footer +------------------------------------------------------------------------------*/ + +#footer { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 10px 0; + margin-right: 20px; + border-top: 1px; + border-style: solid; +} + +#footer, +#footer a { + font-size: 12px; +} + +#footer p { + margin: 0; + line-height: 20px; +} + +#footer a { + text-decoration: none; +} + +#footer a:hover { + text-decoration: underline; +} + + +/*------------------------------------------------------------------------------ + 22.0 - Misc +------------------------------------------------------------------------------*/ + +#excerpt, .attachmentlinks { + margin: 0; + height: 4em; + width: 98%; +} + +#template div { + margin-right: 190px; +} + +p.pagenav { + margin: 0; + display: inline; +} + +.pagenav span { + font-weight: bold; + margin: 0 6px; +} + +.row-title { + font-size: 13px !important; + font-weight: bold; +} + +.column-author img, .column-username img { + float: left; + margin-right: 10px; + margin-top: 1px; +} + +.row-actions { + visibility: hidden; + padding: 2px 0 0; +} + +tr:hover .row-actions, +div.comment-item:hover .row-actions { + visibility: visible; +} + +.row-actions-visible { + padding: 2px 0 0; +} + +.form-table .pre { + padding: 8px; + margin: 0; +} + +table.form-table td .updated { + font-size: 13px; +} + + +.tagchecklist { + margin-left: 14px; + font-size: 12px; + overflow: auto; +} +.tagchecklist strong { + margin-left: -8px; + position: absolute; +} +.tagchecklist span { + margin-right: 25px; + display: block; + float: left; + font-size: 11px; + line-height: 1.8em; + white-space: nowrap; + cursor: default; +} +.tagchecklist span a { + margin: 6px 0pt 0pt -9px; + cursor: pointer; + width: 10px; + height: 10px; + display: block; + float: left; + text-indent: -9999px; + overflow: hidden; + position: absolute; +} + +#poststuff h2 { + margin-top: 20px; + font-size: 1.5em; + margin-bottom: 15px; + padding: 0 0 3px; + clear: left; +} + +#poststuff h3, +.metabox-holder h3 { + font-size: 15px; + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-weight: normal; + padding: 7px 10px; + margin: 0; + line-height: 1; +} + +#poststuff .inside, +#poststuff .inside p { + font-size: 12px; + margin: 6px 0 8px; +} + +#poststuff .inside .submitbox p { + margin: 1em 0; +} + +#post-visibility-select, #post-formats-select { + line-height: 1.5em; + margin-top: 3px; +} + +#poststuff #submitdiv .inside { + margin: 0; + padding: 0; +} + +#titlediv, #poststuff .postarea { + margin-bottom: 20px; +} + +td.post-title strong, td.plugin-title strong { + display: block; + margin-bottom: .2em; +} + +td.post-title p, td.plugin-title p { + margin: 6px 0; +} + +.wp-hidden-children .wp-hidden-child, +.ui-tabs-hide { + display: none; +} + +#templateside ul li a { + text-decoration: none; +} + +.tool-box { + margin: 15px 0 35px; +} +.tool-box .buttons { + margin: 15px 0; +} +.tool-box .title { + margin: 8px 0; + font: 18px/24px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; +} + +.pressthis a { + font-size: 1.2em; +} + +#sidemenu { + margin: -30px 15px 0 315px; + list-style: none; + position: relative; + float: right; + padding-left: 10px; + font-size: 12px; +} + +#sidemenu a { + padding: 0 7px; + display: block; + float: left; + line-height: 28px; + border-top-width: 1px; + border-top-style: solid; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +#sidemenu li { + display: inline; + line-height: 200%; + list-style: none; + text-align: center; + white-space: nowrap; + margin: 0; + padding: 0; +} + +#sidemenu a.current { + font-weight: normal; + padding-left: 6px; + padding-right: 6px; + -moz-border-radius: 3px 3px 0 0; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + -khtml-border-top-left-radius: 3px; + -khtml-border-top-right-radius: 3px; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + border-width: 1px; + border-style: solid; +} + +#sidemenu li a .count-0 { + display: none; +} + +#poststuff .inside .the-tagcloud { + margin: 5px 0 10px; + padding: 8px; + border-width: 1px; + border-style: solid; + line-height: 1.8em; + word-spacing: 3px; + -moz-border-radius: 3px; + -khtml-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.plugin-install #description, .plugin-install-network #description { + width: 60%; +} + +table .vers, +table .column-visible, +table .column-rating { + text-align: left; +} + + +/* Scrollbar fix for bulk upgrade iframe */ +body.iframe { + height: 98%; +} + + +/*------------------------------------------------------------------------------ + 23.0 - Dead +------------------------------------------------------------------------------*/ + +/* - Not used anywhere in WordPress - verify and then deprecate +------------------------------------------------------------------------------*/ +.anchors { + margin: 10px 20px 10px 20px; +} + +div.nav { + height: 2em; + padding: 7px 10px; + vertical-align: text-top; + margin: 5px 0; +} + +.nav .button-secondary { + padding: 2px 4px; +} + +.settings-toggle { + text-align: right; + margin: 5px 7px 15px 0; + font-size: 12px; +} + +.settings-toggle h3 { + margin: 0; +} + +form#tags-filter { + position: relative; +} + +/* - Only used once or twice in all of WP - deprecate for global style +------------------------------------------------------------------------------*/ +td.media-icon { + text-align: center; + width: 80px; + padding-top: 8px; + padding-bottom: 8px; +} + +td.media-icon img { + max-width: 80px; + max-height: 60px; +} + +.screen-per-page { + width: 3em; +} + +.list-ajax-loading { + float: right; + margin-right: 9px; + margin-top: -1px; +} + +.tablenav .list-ajax-loading { + margin-top: 7px; +} + +#howto { + font-size: 11px; + margin: 0 5px; + display: block; +} + +.import-system {font-size: 16px;} +#namediv table { + width: 100%; +} + +#namediv td.first { + width: 10px; + white-space: nowrap; +} + +#namediv input { + width: 98%; +} + +#namediv p { + margin: 10px 0; +} + +#submitdiv h3 { + margin-bottom: 0 !important; +} + +/* - Used - but could/should be deprecated with a CSS reset +------------------------------------------------------------------------------*/ +.zerosize { + height: 0; + width: 0; + margin: 0; + border: 0; + padding: 0; + overflow: hidden; + position: absolute; +} + +br.clear { + height: 2px; + line-height: 2px; +} + +.checkbox { + border: none; + margin: 0; + padding: 0; +} + +#content { + margin: 0; + width: 100%; +} + +fieldset { + border: 0; + padding: 0; + margin: 0; +} + +.post-categories { + display: inline; + margin: 0; + padding: 0; +} + +.post-categories li { + display: inline; +} diff --git a/src/wp-admin/custom-background.php b/src/wp-admin/custom-background.php new file mode 100644 index 0000000..62ebacf --- /dev/null +++ b/src/wp-admin/custom-background.php @@ -0,0 +1,361 @@ +admin_header_callback = $admin_header_callback; + $this->admin_image_div_callback = $admin_image_div_callback; + } + + /** + * Set up the hooks for the Custom Background admin page. + * + * @since 3.0.0 + */ + function init() { + if ( ! current_user_can('edit_theme_options') ) + return; + + $this->page = $page = add_theme_page(__('Background'), __('Background'), 'edit_theme_options', 'custom-background', array(&$this, 'admin_page')); + + add_action("load-$page", array(&$this, 'admin_load')); + add_action("load-$page", array(&$this, 'take_action'), 49); + add_action("load-$page", array(&$this, 'handle_upload'), 49); + + if ( $this->admin_header_callback ) + add_action("admin_head-$page", $this->admin_header_callback, 51); + } + + /** + * Set up the enqueue for the CSS & JavaScript files. + * + * @since 3.0.0 + */ + function admin_load() { + add_contextual_help( $this->page, '

' . __( 'You can customize the look of your site without touching any of your theme’s code by using a custom background. Your background can be an image or a color.' ) . '

' . + '

' . __( 'To use a background image, simply upload it, then choose your display options below. You can display a single instance of your image, or tile it to fill the screen. You can have your background fixed in place, so your site content moves on top of it, or you can have it scroll with your site.' ) . '

' . + '

' . __( 'You can also choose a background color. If you know the hexadecimal code for the color you want, enter it in the Color field. If not, click on the Select a Color link, and a color picker will allow you to choose the exact shade you want.' ) . '

' . + '

' . __( 'Don’t forget to click on the Save Changes button when you are finished.' ) . '

' . + '

' . __( 'For more information:' ) . '

' . + '

' . __( 'Documentation on Custom Background' ) . '

' . + '

' . __( 'Support Forums' ) . '

' ); + wp_enqueue_script('custom-background'); + wp_enqueue_style('farbtastic'); + } + + /** + * Execute custom background modification. + * + * @since 3.0.0 + */ + function take_action() { + + if ( empty($_POST) ) + return; + + if ( isset($_POST['reset-background']) ) { + check_admin_referer('custom-background-reset', '_wpnonce-custom-background-reset'); + remove_theme_mod('background_image'); + remove_theme_mod('background_image_thumb'); + $this->updated = true; + return; + } + + if ( isset($_POST['remove-background']) ) { + // @TODO: Uploaded files are not removed here. + check_admin_referer('custom-background-remove', '_wpnonce-custom-background-remove'); + set_theme_mod('background_image', ''); + set_theme_mod('background_image_thumb', ''); + $this->updated = true; + return; + } + + if ( isset($_POST['background-repeat']) ) { + check_admin_referer('custom-background'); + if ( in_array($_POST['background-repeat'], array('repeat', 'no-repeat', 'repeat-x', 'repeat-y')) ) + $repeat = $_POST['background-repeat']; + else + $repeat = 'repeat'; + set_theme_mod('background_repeat', $repeat); + } + + if ( isset($_POST['background-position-x']) ) { + check_admin_referer('custom-background'); + if ( in_array($_POST['background-position-x'], array('center', 'right', 'left')) ) + $position = $_POST['background-position-x']; + else + $position = 'left'; + set_theme_mod('background_position_x', $position); + } + + if ( isset($_POST['background-attachment']) ) { + check_admin_referer('custom-background'); + if ( in_array($_POST['background-attachment'], array('fixed', 'scroll')) ) + $attachment = $_POST['background-attachment']; + else + $attachment = 'fixed'; + set_theme_mod('background_attachment', $attachment); + } + + if ( isset($_POST['background-color']) ) { + check_admin_referer('custom-background'); + $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['background-color']); + if ( strlen($color) == 6 || strlen($color) == 3 ) + set_theme_mod('background_color', $color); + else + set_theme_mod('background_color', ''); + } + + $this->updated = true; + } + + /** + * Display the custom background page. + * + * @since 3.0.0 + */ + function admin_page() { +?> +
+ +

+updated) ) { ?> +
+

Visit your site to see how it looks.' ), home_url( '/' ) ); ?>

+
+admin_image_div_callback ) { + call_user_func($this->admin_image_div_callback); + } else { +?> +

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + +
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + + +
+
+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + +
+ + +
+ + + class="hide-if-no-js" id="clearcolor"> () + +
+ + + +
+ +
+ false); + $file = wp_handle_upload($_FILES['import'], $overrides); + + if ( isset($file['error']) ) + wp_die( $file['error'] ); + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $filename = basename($file); + + // Construct the object array + $object = array( + 'post_title' => $filename, + 'post_content' => $url, + 'post_mime_type' => $type, + 'guid' => $url, + 'context' => 'custom-background' + ); + + // Save the data + $id = wp_insert_attachment($object, $file); + + // Add the meta-data + wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); + update_post_meta( $id, '_wp_attachment_is_custom_background', get_option('stylesheet' ) ); + + set_theme_mod('background_image', esc_url($url)); + + $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' ); + set_theme_mod('background_image_thumb', esc_url( $thumbnail[0] ) ); + + do_action('wp_create_file_in_uploads', $file, $id); // For replication + $this->updated = true; + } + +} +?> diff --git a/src/wp-admin/custom-header.php b/src/wp-admin/custom-header.php new file mode 100644 index 0000000..24ec9b8 --- /dev/null +++ b/src/wp-admin/custom-header.php @@ -0,0 +1,791 @@ +admin_header_callback = $admin_header_callback; + $this->admin_image_div_callback = $admin_image_div_callback; + } + + /** + * Set up the hooks for the Custom Header admin page. + * + * @since 2.1.0 + */ + function init() { + if ( ! current_user_can('edit_theme_options') ) + return; + + $this->page = $page = add_theme_page(__('Header'), __('Header'), 'edit_theme_options', 'custom-header', array(&$this, 'admin_page')); + + add_action("admin_print_scripts-$page", array(&$this, 'js_includes')); + add_action("admin_print_styles-$page", array(&$this, 'css_includes')); + add_action("admin_head-$page", array(&$this, 'help') ); + add_action("admin_head-$page", array(&$this, 'take_action'), 50); + add_action("admin_head-$page", array(&$this, 'js'), 50); + add_action("admin_head-$page", $this->admin_header_callback, 51); + } + + /** + * Adds contextual help. + * + * @since 3.0.0 + */ + function help() { + add_contextual_help( $this->page, '

' . __( 'You can set a custom image header for your site. Simply upload the image and crop it, and the new header will go live immediately.' ) . '

' . + '

' . __( 'If you want to discard your custom header and go back to the default included in your theme, click on the buttons to remove the custom image and restore the original header image.' ) . '

' . + '

' . __( 'Some themes come with additional header images bundled. If you see multiple images displayed, select the one you’d like and click the Save Changes button.' ) . '

' . + '

' . __( 'For more information:' ) . '

' . + '

' . __( 'Documentation on Custom Header' ) . '

' . + '

' . __( 'Support Forums' ) . '

' ); + } + + /** + * Get the current step. + * + * @since 2.6.0 + * + * @return int Current step + */ + function step() { + if ( ! isset( $_GET['step'] ) ) + return 1; + + $step = (int) $_GET['step']; + if ( $step < 1 || 3 < $step ) + $step = 1; + + return $step; + } + + /** + * Set up the enqueue for the JavaScript files. + * + * @since 2.1.0 + */ + function js_includes() { + $step = $this->step(); + + if ( ( 1 == $step || 3 == $step ) && $this->header_text() ) + wp_enqueue_script('farbtastic'); + elseif ( 2 == $step ) + wp_enqueue_script('imgareaselect'); + } + + /** + * Set up the enqueue for the CSS files + * + * @since 2.7 + */ + function css_includes() { + $step = $this->step(); + + if ( ( 1 == $step || 3 == $step ) && $this->header_text() ) + wp_enqueue_style('farbtastic'); + elseif ( 2 == $step ) + wp_enqueue_style('imgareaselect'); + } + + /** + * Check if header text is allowed + * + * @since 3.0.0 + */ + function header_text() { + if ( defined( 'NO_HEADER_TEXT' ) && NO_HEADER_TEXT ) + return false; + + return true; + } + + /** + * Execute custom header modification. + * + * @since 2.6.0 + */ + function take_action() { + if ( ! current_user_can('edit_theme_options') ) + return; + + if ( empty( $_POST ) ) + return; + + $this->updated = true; + + if ( isset( $_POST['resetheader'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + remove_theme_mod( 'header_image' ); + return; + } + + if ( isset( $_POST['resettext'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + remove_theme_mod('header_textcolor'); + return; + } + + if ( isset( $_POST['removeheader'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + set_theme_mod( 'header_image', 'remove-header' ); + return; + } + + if ( isset( $_POST['text-color'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + $_POST['text-color'] = str_replace( '#', '', $_POST['text-color'] ); + if ( 'blank' == $_POST['text-color'] ) { + set_theme_mod( 'header_textcolor', 'blank' ); + } else { + $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['text-color']); + if ( strlen($color) == 6 || strlen($color) == 3 ) + set_theme_mod('header_textcolor', $color); + } + } + + if ( isset( $_POST['default-header'] ) ) { + check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); + if ( 'random-default-image' == $_POST['default-header'] ) { + set_theme_mod( 'header_image', 'random-default-image' ); + } elseif ( 'random-uploaded-image' == $_POST['default-header'] ) { + set_theme_mod( 'header_image', 'random-uploaded-image' ); + } else { + $this->process_default_headers(); + $uploaded = get_uploaded_header_images(); + if ( isset( $uploaded[$_POST['default-header']] ) ) + set_theme_mod( 'header_image', esc_url( $uploaded[$_POST['default-header']]['url'] ) ); + elseif ( isset( $this->default_headers[$_POST['default-header']] ) ) + set_theme_mod( 'header_image', esc_url( $this->default_headers[$_POST['default-header']]['url'] ) ); + } + } + } + + /** + * Process the default headers + * + * @since 3.0.0 + */ + function process_default_headers() { + global $_wp_default_headers; + + if ( !empty($this->headers) ) + return; + + if ( !isset($_wp_default_headers) ) + return; + + $this->default_headers = $_wp_default_headers; + foreach ( array_keys($this->default_headers) as $header ) { + $this->default_headers[$header]['url'] = sprintf( $this->default_headers[$header]['url'], get_template_directory_uri(), get_stylesheet_directory_uri() ); + $this->default_headers[$header]['thumbnail_url'] = sprintf( $this->default_headers[$header]['thumbnail_url'], get_template_directory_uri(), get_stylesheet_directory_uri() ); + } + + } + + /** + * Display UI for selecting one of several default headers. + * + * Show the random image option if this theme has multiple header images. + * Random image option is on by default if no header has been set. + * + * @since 3.0.0 + */ + function show_header_selector( $type = 'default' ) { + if ( 'default' == $type ) { + $headers = $this->default_headers; + } else { + $headers = get_uploaded_header_images(); + $type = 'uploaded'; + } + + if ( 1 < count( $headers ) ) { + echo '
'; + echo ''; + echo '
'; + } + + echo '
'; + foreach ( $headers as $header_key => $header ) { + $header_thumbnail = $header['thumbnail_url']; + $header_url = $header['url']; + $header_desc = empty( $header['description'] ) ? '' : $header['description']; + echo '
'; + echo ''; + echo '
'; + } + echo '
'; + } + + /** + * Execute Javascript depending on step. + * + * @since 2.1.0 + */ + function js() { + $step = $this->step(); + if ( ( 1 == $step || 3 == $step ) && $this->header_text() ) + $this->js_1(); + elseif ( 2 == $step ) + $this->js_2(); + } + + /** + * Display Javascript based on Step 1 and 3. + * + * @since 2.6.0 + */ + function js_1() { ?> + + + +process_default_headers(); +?> + +
+ +

+ +updated ) ) { ?> +
+

Visit your site to see how it looks.' ), home_url( '/' ) ); ?>

+
+ + + + + + + + + + + + + + + + + +
+ admin_image_div_callback ) { + call_user_func( $this->admin_image_div_callback ); + } else { + ?> +
+ header_text() ) + $style = ' style="display:none;"'; + else + $style = ' style="color:#' . get_theme_mod( 'header_textcolor', HEADER_TEXTCOLOR ) . ';"'; + ?> +

onclick="return false;" href="">

+
>
+
+ +
+


+ %1$d × %2$d pixels will be used as-is.' ), HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT ); ?>

+
+

+
+ + + + +

+
+
+ +
+ + + + + + + + default_headers ) ) : ?> + + + + + + + + + + + + + + + + +
+

+ show_header_selector( 'uploaded' ); + ?> +
+ +

+ +

+ + show_header_selector( 'default' ); + ?> +
+

+ +
+

+ +
+ + header_text() ) : ?> + + + + + + + + + + + + + + + + + + + + +
+

+ + + +

+
+

+ + #blank as text color.' );?> + +

+ +
+

+ +
+ + + +
+
+ + false); + $file = wp_handle_upload($_FILES['import'], $overrides); + + if ( isset($file['error']) ) + wp_die( $file['error'], __( 'Image Upload Error' ) ); + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $filename = basename($file); + + // Construct the object array + $object = array( + 'post_title' => $filename, + 'post_content' => $url, + 'post_mime_type' => $type, + 'guid' => $url, + 'context' => 'custom-header' + ); + + // Save the data + $id = wp_insert_attachment($object, $file); + + list($width, $height, $type, $attr) = getimagesize( $file ); + + if ( $width == HEADER_IMAGE_WIDTH && $height == HEADER_IMAGE_HEIGHT ) { + // Add the meta-data + wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); + update_post_meta( $id, '_wp_attachment_is_custom_header', get_option('stylesheet' ) ); + + set_theme_mod('header_image', esc_url($url)); + do_action('wp_create_file_in_uploads', $file, $id); // For replication + return $this->finished(); + } elseif ( $width > HEADER_IMAGE_WIDTH ) { + $oitar = $width / HEADER_IMAGE_WIDTH; + $image = wp_crop_image($file, 0, 0, $width, $height, HEADER_IMAGE_WIDTH, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file)); + if ( is_wp_error( $image ) ) + wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); + + $image = apply_filters('wp_create_file_in_uploads', $image, $id); // For replication + + $url = str_replace(basename($url), basename($image), $url); + $width = $width / $oitar; + $height = $height / $oitar; + } else { + $oitar = 1; + } + ?> + +
+ +

+ +
+

+

+ +
+ +
+ + + + + + + + + + +

+
+
+ 1 ) { + $_POST['x1'] = $_POST['x1'] * $_POST['oitar']; + $_POST['y1'] = $_POST['y1'] * $_POST['oitar']; + $_POST['width'] = $_POST['width'] * $_POST['oitar']; + $_POST['height'] = $_POST['height'] * $_POST['oitar']; + } + + $attachment_id = absint( $_POST['attachment_id'] ); + $original = get_attached_file($attachment_id); + + $cropped = wp_crop_image( $attachment_id, (int) $_POST['x1'], (int) $_POST['y1'], (int) $_POST['width'], (int) $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT ); + if ( is_wp_error( $cropped ) ) + wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); + + $cropped = apply_filters('wp_create_file_in_uploads', $cropped, $attachment_id); // For replication + + $parent = get_post($attachment_id); + $parent_url = $parent->guid; + $url = str_replace(basename($parent_url), basename($cropped), $parent_url); + + // Construct the object array + $object = array( + 'ID' => $attachment_id, + 'post_title' => basename($cropped), + 'post_content' => $url, + 'post_mime_type' => 'image/jpeg', + 'guid' => $url, + 'context' => 'custom-header' + ); + + // Update the attachment + wp_insert_attachment($object, $cropped); + wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $cropped ) ); + update_post_meta( $attachment_id, '_wp_attachment_is_custom_header', get_option('stylesheet' ) ); + + set_theme_mod('header_image', $url); + + // cleanup + $medium = str_replace(basename($original), 'midsize-'.basename($original), $original); + @unlink( apply_filters( 'wp_delete_file', $medium ) ); + @unlink( apply_filters( 'wp_delete_file', $original ) ); + + return $this->finished(); + } + + /** + * Display last step of custom header image page. + * + * @since 2.1.0 + */ + function finished() { + $this->updated = true; + $this->step_1(); + } + + /** + * Display the page based on the current step. + * + * @since 2.1.0 + */ + function admin_page() { + if ( ! current_user_can('edit_theme_options') ) + wp_die(__('You do not have permission to customize headers.')); + $step = $this->step(); + if ( 1 == $step ) + $this->step_1(); + elseif ( 2 == $step ) + $this->step_2(); + elseif ( 3 == $step ) + $this->step_3(); + } + +} +?> diff --git a/src/wp-admin/edit-comments.php b/src/wp-admin/edit-comments.php new file mode 100644 index 0000000..cce196b --- /dev/null +++ b/src/wp-admin/edit-comments.php @@ -0,0 +1,242 @@ +get_pagenum(); + +$doaction = $wp_list_table->current_action(); + +if ( $doaction ) { + check_admin_referer( 'bulk-comments' ); + + if ( 'delete_all' == $doaction && !empty( $_REQUEST['pagegen_timestamp'] ) ) { + $comment_status = $wpdb->escape( $_REQUEST['comment_status'] ); + $delete_time = $wpdb->escape( $_REQUEST['pagegen_timestamp'] ); + $comment_ids = $wpdb->get_col( "SELECT comment_ID FROM $wpdb->comments WHERE comment_approved = '$comment_status' AND '$delete_time' > comment_date_gmt" ); + $doaction = 'delete'; + } elseif ( isset( $_REQUEST['delete_comments'] ) ) { + $comment_ids = $_REQUEST['delete_comments']; + $doaction = ( $_REQUEST['action'] != -1 ) ? $_REQUEST['action'] : $_REQUEST['action2']; + } elseif ( isset( $_REQUEST['ids'] ) ) { + $comment_ids = array_map( 'absint', explode( ',', $_REQUEST['ids'] ) ); + } elseif ( wp_get_referer() ) { + wp_redirect( wp_get_referer() ); + exit; + } + + $approved = $unapproved = $spammed = $unspammed = $trashed = $untrashed = $deleted = 0; + + $redirect_to = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'spammed', 'unspammed', 'approved', 'unapproved', 'ids' ), wp_get_referer() ); + $redirect_to = add_query_arg( 'paged', $pagenum, $redirect_to ); + + foreach ( $comment_ids as $comment_id ) { // Check the permissions on each + if ( !current_user_can( 'edit_comment', $comment_id ) ) + continue; + + switch ( $doaction ) { + case 'approve' : + wp_set_comment_status( $comment_id, 'approve' ); + $approved++; + break; + case 'unapprove' : + wp_set_comment_status( $comment_id, 'hold' ); + $unapproved++; + break; + case 'spam' : + wp_spam_comment( $comment_id ); + $spammed++; + break; + case 'unspam' : + wp_unspam_comment( $comment_id ); + $unspammed++; + break; + case 'trash' : + wp_trash_comment( $comment_id ); + $trashed++; + break; + case 'untrash' : + wp_untrash_comment( $comment_id ); + $untrashed++; + break; + case 'delete' : + wp_delete_comment( $comment_id ); + $deleted++; + break; + } + } + + if ( $approved ) + $redirect_to = add_query_arg( 'approved', $approved, $redirect_to ); + if ( $unapproved ) + $redirect_to = add_query_arg( 'unapproved', $unapproved, $redirect_to ); + if ( $spammed ) + $redirect_to = add_query_arg( 'spammed', $spammed, $redirect_to ); + if ( $unspammed ) + $redirect_to = add_query_arg( 'unspammed', $unspammed, $redirect_to ); + if ( $trashed ) + $redirect_to = add_query_arg( 'trashed', $trashed, $redirect_to ); + if ( $untrashed ) + $redirect_to = add_query_arg( 'untrashed', $untrashed, $redirect_to ); + if ( $deleted ) + $redirect_to = add_query_arg( 'deleted', $deleted, $redirect_to ); + if ( $trashed || $spammed ) + $redirect_to = add_query_arg( 'ids', join( ',', $comment_ids ), $redirect_to ); + + wp_redirect( $redirect_to ); + exit; +} elseif ( ! empty( $_GET['_wp_http_referer'] ) ) { + wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), stripslashes( $_SERVER['REQUEST_URI'] ) ) ); + exit; +} + +$wp_list_table->prepare_items(); + +wp_enqueue_script('admin-comments'); +enqueue_comment_hotkeys_js(); + +if ( $post_id ) + $title = sprintf(__('Comments on “%s”'), wp_html_excerpt(_draft_or_post_title($post_id), 50)); +else + $title = __('Comments'); + +add_screen_option( 'per_page', array('label' => _x( 'Comments', 'comments per page (screen options)' )) ); + +add_contextual_help( $current_screen, '

' . __( 'You can manage comments made on your site similar to the way you manage Posts and other content. This screen is customizable in the same ways as other management screens, and you can act on comments using the on-hover action links or the Bulk Actions.' ) . '

' . + '

' . __( 'A yellow row means the comment is waiting for you to moderate it.' ) . '

' . + '

' . __( 'In the Author column, in addition to the author’s name, email address, and blog URL, the commenter’s IP address is shown. Clicking on this link will show you all the comments made from this IP address.' ) . '

' . + '

' . __( 'In the Comment column, above each comment it says “Submitted on,” followed by the date and time the comment was left on your site. Clicking on the date/time link will take you to that comment on your live site. Hovering over any comment gives you options to approve, reply (and approve), quick edit, edit, spam mark, or trash that comment.' ) . '

' . + '

' . __( 'In the In Response To column, there are three elements. The text is the name of the post that inspired the comment, and links to the post editor for that entry. The “#” permalink symbol below leads to that post on your live site. The small bubble with the number in it shows how many comments that post has received. If the bubble is gray, you have moderated all comments for that post. If it is blue, there are pending comments. Clicking the bubble will filter the comments screen to show only comments on that post.' ) . '

' . + '

' . __( 'Many people take advantage of keyboard shortcuts to moderate their comments more quickly. Use the link below to learn more.' ) . '

' . + '

' . __( 'For more information:' ) . '

' . + '

' . __( 'Documentation on Comments' ) . '

' . + '

' . __( 'Documentation on Comment Spam' ) . '

' . + '

' . __( 'Documentation on Keyboard Shortcuts' ) . '

' . + '

' . __( 'Support Forums' ) . '

' +); +require_once('./admin-header.php'); +?> + +
+ +

%s', + get_edit_post_link($post_id), + wp_html_excerpt(_draft_or_post_title($post_id), 50) + ) + ); +else + echo __('Comments'); + +if ( isset($_REQUEST['s']) && $_REQUEST['s'] ) + printf( '' . sprintf( __( 'Search results for “%s”' ), wp_html_excerpt( esc_html( stripslashes( $_REQUEST['s'] ) ), 50 ) ) . '' ); ?> +

+ +

' . $error_msg . '

'; +} + +if ( isset($_REQUEST['approved']) || isset($_REQUEST['deleted']) || isset($_REQUEST['trashed']) || isset($_REQUEST['untrashed']) || isset($_REQUEST['spammed']) || isset($_REQUEST['unspammed']) || isset($_REQUEST['same']) ) { + $approved = isset( $_REQUEST['approved'] ) ? (int) $_REQUEST['approved'] : 0; + $deleted = isset( $_REQUEST['deleted'] ) ? (int) $_REQUEST['deleted'] : 0; + $trashed = isset( $_REQUEST['trashed'] ) ? (int) $_REQUEST['trashed'] : 0; + $untrashed = isset( $_REQUEST['untrashed'] ) ? (int) $_REQUEST['untrashed'] : 0; + $spammed = isset( $_REQUEST['spammed'] ) ? (int) $_REQUEST['spammed'] : 0; + $unspammed = isset( $_REQUEST['unspammed'] ) ? (int) $_REQUEST['unspammed'] : 0; + $same = isset( $_REQUEST['same'] ) ? (int) $_REQUEST['same'] : 0; + + if ( $approved > 0 || $deleted > 0 || $trashed > 0 || $untrashed > 0 || $spammed > 0 || $unspammed > 0 || $same > 0 ) { + if ( $approved > 0 ) + $messages[] = sprintf( _n( '%s comment approved', '%s comments approved', $approved ), $approved ); + + if ( $spammed > 0 ) { + $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0; + $messages[] = sprintf( _n( '%s comment marked as spam.', '%s comments marked as spam.', $spammed ), $spammed ) . ' ' . __('Undo') . '
'; + } + + if ( $unspammed > 0 ) + $messages[] = sprintf( _n( '%s comment restored from the spam', '%s comments restored from the spam', $unspammed ), $unspammed ); + + if ( $trashed > 0 ) { + $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0; + $messages[] = sprintf( _n( '%s comment moved to the Trash.', '%s comments moved to the Trash.', $trashed ), $trashed ) . ' ' . __('Undo') . '
'; + } + + if ( $untrashed > 0 ) + $messages[] = sprintf( _n( '%s comment restored from the Trash', '%s comments restored from the Trash', $untrashed ), $untrashed ); + + if ( $deleted > 0 ) + $messages[] = sprintf( _n( '%s comment permanently deleted', '%s comments permanently deleted', $deleted ), $deleted ); + + if ( $same > 0 && $comment = get_comment( $same ) ) { + switch ( $comment->comment_approved ) { + case '1' : + $messages[] = __('This comment is already approved.') . ' ' . __( 'Edit comment' ) . ''; + break; + case 'trash' : + $messages[] = __( 'This comment is already in the Trash.' ) . ' ' . __( 'View Trash' ) . ''; + break; + case 'spam' : + $messages[] = __( 'This comment is already marked as spam.' ) . ' ' . __( 'Edit comment' ) . ''; + break; + } + } + + echo '

' . implode( "
\n", $messages ) . '

'; + } +} +?> + +views(); ?> + +
+ +search_box( __( 'Search Comments' ), 'comment' ); ?> + + + + + + + + + + + + + + + +display(); ?> +
+
+ +
+ + diff --git a/src/wp-admin/edit-form-advanced.php b/src/wp-admin/edit-form-advanced.php new file mode 100644 index 0000000..aed7b64 --- /dev/null +++ b/src/wp-admin/edit-form-advanced.php @@ -0,0 +1,315 @@ + '', // Unused. Messages start at index 1. + 1 => sprintf( __('Post updated. View post'), esc_url( get_permalink($post_ID) ) ), + 2 => __('Custom field updated.'), + 3 => __('Custom field deleted.'), + 4 => __('Post updated.'), + /* translators: %s: date and time of the revision */ + 5 => isset($_GET['revision']) ? sprintf( __('Post restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, + 6 => sprintf( __('Post published. View post'), esc_url( get_permalink($post_ID) ) ), + 7 => __('Post saved.'), + 8 => sprintf( __('Post submitted. Preview post'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), + 9 => sprintf( __('Post scheduled for: %1$s. Preview post'), + // translators: Publish box date format, see http://php.net/date + date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ), + 10 => sprintf( __('Post draft updated. Preview post'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), +); +$messages['page'] = array( + 0 => '', // Unused. Messages start at index 1. + 1 => sprintf( __('Page updated. View page'), esc_url( get_permalink($post_ID) ) ), + 2 => __('Custom field updated.'), + 3 => __('Custom field deleted.'), + 4 => __('Page updated.'), + 5 => isset($_GET['revision']) ? sprintf( __('Page restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, + 6 => sprintf( __('Page published. View page'), esc_url( get_permalink($post_ID) ) ), + 7 => __('Page saved.'), + 8 => sprintf( __('Page submitted. Preview page'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), + 9 => sprintf( __('Page scheduled for: %1$s. Preview page'), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ), + 10 => sprintf( __('Page draft updated. Preview page'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), +); + +$messages = apply_filters( 'post_updated_messages', $messages ); + +$message = false; +if ( isset($_GET['message']) ) { + $_GET['message'] = absint( $_GET['message'] ); + if ( isset($messages[$post_type][$_GET['message']]) ) + $message = $messages[$post_type][$_GET['message']]; + elseif ( !isset($messages[$post_type]) && isset($messages['post'][$_GET['message']]) ) + $message = $messages['post'][$_GET['message']]; +} + +$notice = false; +$form_extra = ''; +if ( 'auto-draft' == $post->post_status ) { + if ( 'edit' == $action ) + $post->post_title = ''; + $autosave = false; + $form_extra .= ""; +} else { + $autosave = wp_get_post_autosave( $post_ID ); +} + +$form_action = 'editpost'; +$nonce_action = 'update-' . $post_type . '_' . $post_ID; +$form_extra .= ""; + +// Detect if there exists an autosave newer than the post and if that autosave is different than the post +if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) { + foreach ( _wp_post_revision_fields() as $autosave_field => $_autosave_field ) { + if ( normalize_whitespace( $autosave->$autosave_field ) != normalize_whitespace( $post->$autosave_field ) ) { + $notice = sprintf( __( 'There is an autosave of this post that is more recent than the version below. View the autosave' ), get_edit_post_link( $autosave->ID ) ); + break; + } + } + unset($autosave_field, $_autosave_field); +} + +$post_type_object = get_post_type_object($post_type); + +// All meta boxes should be defined and added before the first do_meta_boxes() call (or potentially during the do_meta_boxes action). +require_once('./includes/meta-boxes.php'); + +add_meta_box('submitdiv', __('Publish'), 'post_submit_meta_box', $post_type, 'side', 'core'); + +if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post_type, 'post-formats' ) ) + add_meta_box( 'formatdiv', _x( 'Format', 'post format' ), 'post_format_meta_box', $post_type, 'side', 'core' ); + +// all taxonomies +foreach ( get_object_taxonomies($post_type) as $tax_name ) { + $taxonomy = get_taxonomy($tax_name); + if ( ! $taxonomy->show_ui ) + continue; + + $label = $taxonomy->labels->name; + + if ( !is_taxonomy_hierarchical($tax_name) ) + add_meta_box('tagsdiv-' . $tax_name, $label, 'post_tags_meta_box', $post_type, 'side', 'core', array( 'taxonomy' => $tax_name )); + else + add_meta_box($tax_name . 'div', $label, 'post_categories_meta_box', $post_type, 'side', 'core', array( 'taxonomy' => $tax_name )); +} + +if ( post_type_supports($post_type, 'page-attributes') ) + add_meta_box('pageparentdiv', 'page' == $post_type ? __('Page Attributes') : __('Attributes'), 'page_attributes_meta_box', $post_type, 'side', 'core'); + +if ( current_theme_supports( 'post-thumbnails', $post_type ) && post_type_supports( $post_type, 'thumbnail' ) + && ( ! is_multisite() || ( ( $mu_media_buttons = get_site_option( 'mu_media_buttons', array() ) ) && ! empty( $mu_media_buttons['image'] ) ) ) ) + add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', $post_type, 'side', 'low'); + +if ( post_type_supports($post_type, 'excerpt') ) + add_meta_box('postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', $post_type, 'normal', 'core'); + +if ( post_type_supports($post_type, 'trackbacks') ) + add_meta_box('trackbacksdiv', __('Send Trackbacks'), 'post_trackback_meta_box', $post_type, 'normal', 'core'); + +if ( post_type_supports($post_type, 'custom-fields') ) + add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', $post_type, 'normal', 'core'); + +do_action('dbx_post_advanced'); +if ( post_type_supports($post_type, 'comments') ) + add_meta_box('commentstatusdiv', __('Discussion'), 'post_comment_status_meta_box', $post_type, 'normal', 'core'); + +if ( ('publish' == $post->post_status || 'private' == $post->post_status) && post_type_supports($post_type, 'comments') ) + add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', $post_type, 'normal', 'core'); + +if ( !( 'pending' == $post->post_status && !current_user_can( $post_type_object->cap->publish_posts ) ) ) + add_meta_box('slugdiv', __('Slug'), 'post_slug_meta_box', $post_type, 'normal', 'core'); + +if ( post_type_supports($post_type, 'author') ) { + if ( is_super_admin() || current_user_can( $post_type_object->cap->edit_others_posts ) ) + add_meta_box('authordiv', __('Author'), 'post_author_meta_box', $post_type, 'normal', 'core'); +} + +if ( post_type_supports($post_type, 'revisions') && 0 < $post_ID && wp_get_post_revisions( $post_ID ) ) + add_meta_box('revisionsdiv', __('Revisions'), 'post_revisions_meta_box', $post_type, 'normal', 'core'); + +do_action('add_meta_boxes', $post_type, $post); +do_action('add_meta_boxes_' . $post_type, $post); + +do_action('do_meta_boxes', $post_type, 'normal', $post); +do_action('do_meta_boxes', $post_type, 'advanced', $post); +do_action('do_meta_boxes', $post_type, 'side', $post); + +add_screen_option('layout_columns', array('max' => 2) ); + +if ( 'post' == $post_type ) { + add_contextual_help($current_screen, + '

' . __('The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop, and can minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen.') . '

' . + '

' . __('Title - Enter a title for your post. After you enter a title, you’ll see the permalink below, which you can edit.') . '

' . + '

' . __('Post editor - Enter the text for your post. There are two modes of editing: Visual and HTML. Choose the mode by clicking on the appropriate tab. Visual mode gives you a WYSIWYG editor. Click the last icon in the row to get a second row of controls. The HTML mode allows you to enter raw HTML along with your post text. You can insert media files by clicking the icons above the post editor and following the directions. You can go the distraction-free writing screen, new in 3.2, via the Fullscreen icon in Visual mode (second to last in the top row) or the Fullscreen button in HTML mode (last in the row). Once there, you can make buttons visible by hovering over the top area. Exit Fullscreen back to the regular post editor.') . '

' . + '

' . __('Publish - You can set the terms of publishing your post in the Publish box. For Status, Visibility, and Publish (immediately), click on the Edit link to reveal more options. Visibility includes options for password-protecting a post or making it stay at the top of your blog indefinitely (sticky). Publish (immediately) allows you to set a future or past date and time, so you can schedule a post to be published in the future or backdate a post.') . '

' . + ( ( current_theme_supports( 'post-formats' ) && post_type_supports( 'post', 'post-formats' ) ) ? '

' . __( 'Post Format - This designates how your theme will display a specific post. For example, you could have a standard blog post with a title and paragraphs, or a short aside that omits the title and contains a short text blurb. Please refer to the Codex for descriptions of each post format. Your theme could enable all or some of 10 possible formats.' ) . '

' : '' ) . + '

' . __('Featured Image - This allows you to associate an image with your post without inserting it. This is usually useful only if your theme makes use of the featured image as a post thumbnail on the home page, a custom header, etc.') . '

' . + '

' . __('Send Trackbacks - Trackbacks are a way to notify legacy blog systems that you’ve linked to them. Enter the URL(s) you want to send trackbacks. If you link to other WordPress sites they’ll be notified automatically using pingbacks, and this field is unnecessary.') . '

' . + '

' . __('Discussion - You can turn comments and pings on or off, and if there are comments on the post, you can see them here and moderate them.') . '

' . + '

' . sprintf(__('You can also create posts with the Press This bookmarklet.'), 'options-writing.php') . '

' . + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Writing and Editing Posts') . '

' . + '

' . __('Support Forums') . '

' + ); +} elseif ( 'page' == $post_type ) { + add_contextual_help($current_screen, '

' . __('Pages are similar to Posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest Pages under other Pages by making one the “Parent” of the other, creating a group of Pages.') . '

' . + '

' . __('Creating a Page is very similar to creating a Post, and the screens can be customized in the same way using drag and drop, the Screen Options tab, and expanding/collapsing boxes as you choose. This screen also has the new in 3.2 distraction-free writing space, available in both the Visual and HTML modes via the Fullscreen buttons. The Page editor mostly works the same as the Post editor, but there are some Page-specific features in the Page Attributes box:') . '

' . + '

' . __('Parent - You can arrange your pages in hierarchies. For example, you could have an “About” page that has “Life Story” and “My Dog” pages under it. There are no limits to how many levels you can nest pages.') . '

' . + '

' . __('Template - Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you’ll see them in this dropdown menu.') . '

' . + '

' . __('Order - Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field.') . '

' . + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Adding New Pages') . '

' . + '

' . __('Documentation on Editing Pages') . '

' . + '

' . __('Support Forums') . '

' + ); +} + +require_once('./admin-header.php'); +?> + +
+ +

labels->add_new); ?>

+ +

+ + +

+ +
> + + + + + + + + +post_status ) + wp_original_referer_field(true, 'previous'); + +echo $form_extra; + +wp_nonce_field( 'autosave', 'autosavenonce', false ); +wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); +wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); +?> + +
+
+ + +
+ +
+
+ +
+
+ + +
+
+public ? get_sample_permalink_html($post->ID) : ''; +$shortlink = wp_get_shortlink($post->ID, 'post'); +if ( !empty($shortlink) ) + $sample_permalink_html .= '' . __('Get Shortlink') . ''; + +if ( $post_type_object->public && ! ( 'pending' == $post->post_status && !current_user_can( $post_type_object->cap->publish_posts ) ) ) { ?> +
+ ID) && ! empty($sample_permalink_html) && 'auto-draft' != $post->post_status ) + echo $sample_permalink_html; + ?> +
+ +
+ +
+ + + +
+ +post_content); ?> + + + + +
0' ); ?> +   +post_status ) { + echo ''; + if ( $last_id = get_post_meta($post_ID, '_edit_last', true) ) { + $last_user = get_userdata($last_id); + printf(__('Last edited by %1$s on %2$s at %3$s'), esc_html( $last_user->display_name ), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified)); + } else { + printf(__('Last edited on %1$s at %2$s'), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified)); + } + echo ''; + } ?> +
+ +
+ + + +
+
+
+
+
+
+ + + +post_title) && '' == $post->post_title) || (isset($_GET['message']) && 2 > $_GET['message'])) : ?> + + diff --git a/src/wp-admin/edit-form-comment.php b/src/wp-admin/edit-form-comment.php new file mode 100644 index 0000000..6767ffe --- /dev/null +++ b/src/wp-admin/edit-form-comment.php @@ -0,0 +1,147 @@ +comment_ID); +$form_action = 'editedcomment'; +$form_extra = "' />\n\ncomment_ID) ?> +
+ +

+ +
+ + + +
+
+

+
+
+
+ +
+
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+%1$s'); +$date = date_i18n( $datef, strtotime( $comment->comment_date ) ); +?> +  +
+
+
+
+
+ +
+
+comment_ID&_wp_original_http_referer=" . urlencode(wp_get_referer()), 'delete-comment_' . $comment->comment_ID) . "'>" . ( !EMPTY_TRASH_DAYS ? __('Delete Permanently') : __('Move to Trash') ) . "\n"; ?> +
+
+ '4' ) ); ?> +
+
+
+
+
+
+
+ +
+
+
+

+
+ + + + + + + + + + + + + + + +
+ comment_author_email ) { + printf( __( 'E-mail (%s):' ), get_comment_author_email_link( __( 'send e-mail' ), '', '' ) ); + } else { + _e( 'E-mail:' ); + } +?>
+ comment_author_url ) && 'http://' != $comment->comment_author_url ) { + $link = '' . __('visit site') . ''; + printf( __( 'URL (%s):' ), apply_filters('get_comment_author_link', $link ) ); + } else { + _e( 'URL:' ); + } ?>
+
+
+
+ +
+comment_content, 'content', 'newcomment_author_url', false, 4, false); ?> + +
+ + + + + + + + +
+
+
+
+ + + diff --git a/src/wp-admin/edit-link-form.php b/src/wp-admin/edit-link-form.php new file mode 100644 index 0000000..2835787 --- /dev/null +++ b/src/wp-admin/edit-link-form.php @@ -0,0 +1,129 @@ +Links / Edit Link' ), 'link-manager.php' ); + $submit_text = __('Update Link'); + $form = ' diff --git a/src/wp-admin/edit-tag-form.php b/src/wp-admin/edit-tag-form.php new file mode 100644 index 0000000..92f074a --- /dev/null +++ b/src/wp-admin/edit-tag-form.php @@ -0,0 +1,93 @@ + +

+ + +
+ +

labels->edit_item; ?>

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+

+ 0, 'hide_if_empty' => false, 'name' => 'parent', 'orderby' => 'name', 'taxonomy' => $taxonomy, 'selected' => $tag->parent, 'exclude_tree' => $tag->term_id, 'hierarchical' => true, 'show_option_none' => __('None'))); ?>
+ + + +

+
+ +
+
diff --git a/src/wp-admin/edit-tags.php b/src/wp-admin/edit-tags.php new file mode 100644 index 0000000..12867a2 --- /dev/null +++ b/src/wp-admin/edit-tags.php @@ -0,0 +1,394 @@ +cap->manage_terms ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + +$wp_list_table = _get_list_table('WP_Terms_List_Table'); +$pagenum = $wp_list_table->get_pagenum(); + +$title = $tax->labels->name; + +if ( 'post' != $post_type ) { + $parent_file = "edit.php?post_type=$post_type"; + $submenu_file = "edit-tags.php?taxonomy=$taxonomy&post_type=$post_type"; +} else if ( 'link_category' == $tax->name ) { + $parent_file = 'link-manager.php'; + $submenu_file = 'edit-tags.php?taxonomy=link_category'; +} else { + $parent_file = 'edit.php'; + $submenu_file = "edit-tags.php?taxonomy=$taxonomy"; +} + +add_screen_option( 'per_page', array('label' => $title, 'default' => 20, 'option' => 'edit_' . $tax->name . '_per_page') ); + +switch ( $wp_list_table->current_action() ) { + +case 'add-tag': + + check_admin_referer( 'add-tag', '_wpnonce_add-tag' ); + + if ( !current_user_can( $tax->cap->edit_terms ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + + $ret = wp_insert_term( $_POST['tag-name'], $taxonomy, $_POST ); + $location = 'edit-tags.php?taxonomy=' . $taxonomy; + if ( 'post' != $post_type ) + $location .= '&post_type=' . $post_type; + + if ( $referer = wp_get_original_referer() ) { + if ( false !== strpos( $referer, 'edit-tags.php' ) ) + $location = $referer; + } + + if ( $ret && !is_wp_error( $ret ) ) + $location = add_query_arg( 'message', 1, $location ); + else + $location = add_query_arg( 'message', 4, $location ); + wp_redirect( $location ); + exit; +break; + +case 'delete': + $location = 'edit-tags.php?taxonomy=' . $taxonomy; + if ( 'post' != $post_type ) + $location .= '&post_type=' . $post_type; + if ( $referer = wp_get_referer() ) { + if ( false !== strpos( $referer, 'edit-tags.php' ) ) + $location = $referer; + } + + if ( !isset( $_REQUEST['tag_ID'] ) ) { + wp_redirect( $location ); + exit; + } + + $tag_ID = (int) $_REQUEST['tag_ID']; + check_admin_referer( 'delete-tag_' . $tag_ID ); + + if ( !current_user_can( $tax->cap->delete_terms ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + + wp_delete_term( $tag_ID, $taxonomy ); + + $location = add_query_arg( 'message', 2, $location ); + wp_redirect( $location ); + exit; + +break; + +case 'bulk-delete': + check_admin_referer( 'bulk-tags' ); + + if ( !current_user_can( $tax->cap->delete_terms ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + + $tags = (array) $_REQUEST['delete_tags']; + foreach ( $tags as $tag_ID ) { + wp_delete_term( $tag_ID, $taxonomy ); + } + + $location = 'edit-tags.php?taxonomy=' . $taxonomy; + if ( 'post' != $post_type ) + $location .= '&post_type=' . $post_type; + if ( $referer = wp_get_referer() ) { + if ( false !== strpos( $referer, 'edit-tags.php' ) ) + $location = $referer; + } + + $location = add_query_arg( 'message', 6, $location ); + wp_redirect( $location ); + exit; + +break; + +case 'edit': + $title = $tax->labels->edit_item; + + require_once ( 'admin-header.php' ); + $tag_ID = (int) $_REQUEST['tag_ID']; + + $tag = get_term( $tag_ID, $taxonomy, OBJECT, 'edit' ); + include( './edit-tag-form.php' ); + +break; + +case 'editedtag': + $tag_ID = (int) $_POST['tag_ID']; + check_admin_referer( 'update-tag_' . $tag_ID ); + + if ( !current_user_can( $tax->cap->edit_terms ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + + $ret = wp_update_term( $tag_ID, $taxonomy, $_POST ); + + $location = 'edit-tags.php?taxonomy=' . $taxonomy; + if ( 'post' != $post_type ) + $location .= '&post_type=' . $post_type; + + if ( $referer = wp_get_original_referer() ) { + if ( false !== strpos( $referer, 'edit-tags.php' ) ) + $location = $referer; + } + + if ( $ret && !is_wp_error( $ret ) ) + $location = add_query_arg( 'message', 3, $location ); + else + $location = add_query_arg( 'message', 5, $location ); + + wp_redirect( $location ); + exit; +break; + +default: +if ( ! empty($_REQUEST['_wp_http_referer']) ) { + $location = remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ); + + if ( ! empty( $_REQUEST['paged'] ) ) + $location = add_query_arg( 'paged', (int) $_REQUEST['paged'] ); + + wp_redirect( $location ); + exit; +} + +$wp_list_table->prepare_items(); +$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); + +if ( $pagenum > $total_pages && $total_pages > 0 ) { + wp_redirect( add_query_arg( 'paged', $total_pages ) ); + exit; +} + +wp_enqueue_script('admin-tags'); +if ( current_user_can($tax->cap->edit_terms) ) + wp_enqueue_script('inline-edit-tax'); + +if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $taxonomy ) { + $help =''; + if ( 'category' == $taxonomy ) + $help = '

' . sprintf(__( 'You can use categories to define sections of your site and group related posts. The default category is “Uncategorized” until you change it in your writing settings.' ) , 'options-writing.php' ) . '

'; + elseif ( 'link_category' == $taxonomy ) + $help = '

' . __( 'You can create groups of links by using link categories. Link category names must be unique and link categories are separate from the categories you use for posts.' ) . '

'; + else + $help = '

' . __( 'You can assign keywords to your posts using Post Tags. Unlike categories, tags have no hierarchy, meaning there’s no relationship from one tag to another.' ) . '

'; + + if ( 'link_category' == $taxonomy ) + $help .= '

' . __( 'You can delete link categories in the Bulk Action pulldown, but that action does not delete the links within the category. Instead, it moves them to the default link category.' ) . '

'; + else + $help .='

' . __( 'What’s the difference between categories and tags? Normally, tags are ad-hoc keywords that identify important information in your post (names, subjects, etc) that may or may not recur in other posts, while categories are pre-determined sections. If you think of your site like a book, the categories are like the Table of Contents and the tags are like the terms in the index.' ) . '

'; + + if ( 'category' == $taxonomy ) + $help .= '

' . __( 'When adding a new category on this screen, you’ll fill in the following fields:' ) . '

'; + elseif ( 'post_tag' == $taxonomy ) + $help .= '

' . __( 'When adding a new tag on this screen, you’ll fill in the following fields:' ) . '

'; + + if ( 'category' == $taxonomy || 'post_tag' == $taxonomy ) + + $help .= '
    ' . + '
  • ' . __( 'Name - The name is how it appears on your site.' ) . '
  • '; + + if ( ! global_terms_enabled() ) + if ( 'category' == $taxonomy || 'post_tag' == $taxonomy ) + $help .= '
  • ' . __( 'Slug - The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ) . '
  • '; + + if ( 'category' == $taxonomy ) + $help .= '
  • ' . __( 'Parent - Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown.' ) . '
  • '; + + if ( 'category' == $taxonomy || 'post_tag' == $taxonomy ) + $help .= '
  • ' . __( 'Description - The description is not prominent by default; however, some themes may display it.' ) . '
  • ' . + '
' . + '

' . __( 'You can change the display of this screen using the Screen Options tab to set how many items are displayed per screen and to display/hide columns in the table.' ) . '

' . + '

' . __( 'For more information:' ) . '

'; + + if ( 'category' == $taxonomy ) + $help .= '

' . __( 'Documentation on Categories' ) . '

'; + elseif ( 'link_category' == $taxonomy ) + $help .= '

' . __( 'Documentation on Link Categories' ) . '

'; + else + $help .= '

' . __( 'Documentation on Post Tags' ) . '

'; + + $help .= '

' . __('Support Forums') . '

'; + + add_contextual_help($current_screen, $help); + unset($help); +} + +require_once ('admin-header.php'); + +if ( !current_user_can($tax->cap->edit_terms) ) + wp_die( __('You are not allowed to edit this item.') ); + +$messages[1] = __('Item added.'); +$messages[2] = __('Item deleted.'); +$messages[3] = __('Item updated.'); +$messages[4] = __('Item not added.'); +$messages[5] = __('Item not updated.'); +$messages[6] = __('Items deleted.'); + +?> + +
+ +

' . __('Search results for “%s”') . '', esc_html( stripslashes($_REQUEST['s']) ) ); ?> +

+ + +

+ +
+ +
+ + + +search_box( $tax->labels->search_items, 'tag' ); ?> + +
+
+ +
+ +
+
+
+ + + +display(); ?> + +
+
+ + +
+

Note:
Deleting a category does not delete the posts in that category. Instead, posts that were only assigned to the deleted category are set to the category %s.'), apply_filters('the_category', get_cat_name(get_option('default_category')))) ?>

+ +

category to tag converter.'), 'import.php') ?>

+ +
+ +
+

tag to category converter'), 'import.php') ;?>.

+
+ + +
+
+ +
+
+ +labels->popular_items ) ) { + if ( current_user_can( $tax->cap->edit_terms ) ) + $tag_cloud = wp_tag_cloud( array( 'taxonomy' => $taxonomy, 'echo' => false, 'link' => 'edit' ) ); + else + $tag_cloud = wp_tag_cloud( array( 'taxonomy' => $taxonomy, 'echo' => false ) ); + + if ( $tag_cloud ) : + ?> +
+

labels->popular_items; ?>

+ +
+cap->edit_terms) ) { + // Back compat hooks. Deprecated in preference to {$taxonomy}_pre_add_form + if ( 'category' == $taxonomy ) + do_action('add_category_form_pre', (object)array('parent' => 0) ); + elseif ( 'link_category' == $taxonomy ) + do_action('add_link_category_form_pre', (object)array('parent' => 0) ); + else + do_action('add_tag_form_pre', $taxonomy); + + do_action($taxonomy . '_pre_add_form', $taxonomy); +?> + +
+

labels->add_new_item; ?>

+
+ + + + + + +
+ + +

+
+ +
+ + +

+
+ + +
+ + 0, 'hide_if_empty' => false, 'taxonomy' => $taxonomy, 'name' => 'parent', 'orderby' => 'name', 'hierarchical' => true, 'show_option_none' => __('None'))); ?> + +

+ +
+ +
+ + +

+
+ +labels->add_new_item, 'button' ); + +// Back compat hooks. Deprecated in preference to {$taxonomy}_add_form +if ( 'category' == $taxonomy ) + do_action('edit_category_form', (object)array('parent' => 0) ); +elseif ( 'link_category' == $taxonomy ) + do_action('edit_link_category_form', (object)array('parent' => 0) ); +else + do_action('add_tag_form', $taxonomy); + +do_action($taxonomy . '_add_form', $taxonomy); +?> +
+ + +
+
+ +
+
+ +inline_edit(); ?> + + diff --git a/src/wp-admin/edit.php b/src/wp-admin/edit.php new file mode 100644 index 0000000..933219e --- /dev/null +++ b/src/wp-admin/edit.php @@ -0,0 +1,263 @@ + true ) ) ) ) + $post_type = $_GET['post_type']; +else + wp_die( __('Invalid post type') ); + +$_GET['post_type'] = $post_type; + +$post_type_object = get_post_type_object( $post_type ); + +if ( !current_user_can($post_type_object->cap->edit_posts) ) + wp_die(__('Cheatin’ uh?')); + +$wp_list_table = _get_list_table('WP_Posts_List_Table'); +$pagenum = $wp_list_table->get_pagenum(); + +// Back-compat for viewing comments of an entry +foreach ( array( 'p', 'attachment_id', 'page_id' ) as $_redirect ) { + if ( ! empty( $_REQUEST[ $_redirect ] ) ) { + wp_redirect( admin_url( 'edit-comments.php?p=' . absint( $_REQUEST[ $_redirect ] ) ) ); + exit; + } +} +unset( $_redirect ); + +if ( 'post' != $post_type ) { + $parent_file = "edit.php?post_type=$post_type"; + $submenu_file = "edit.php?post_type=$post_type"; + $post_new_file = "post-new.php?post_type=$post_type"; +} else { + $parent_file = 'edit.php'; + $submenu_file = 'edit.php'; + $post_new_file = 'post-new.php'; +} + +$doaction = $wp_list_table->current_action(); + +if ( $doaction ) { + check_admin_referer('bulk-posts'); + + $sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), wp_get_referer() ); + $sendback = add_query_arg( 'paged', $pagenum, $sendback ); + if ( strpos($sendback, 'post.php') !== false ) + $sendback = admin_url($post_new_file); + + if ( 'delete_all' == $doaction ) { + $post_status = preg_replace('/[^a-z0-9_-]+/i', '', $_REQUEST['post_status']); + if ( get_post_status_object($post_status) ) // Check the post status exists first + $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type=%s AND post_status = %s", $post_type, $post_status ) ); + $doaction = 'delete'; + } elseif ( isset( $_REQUEST['media'] ) ) { + $post_ids = $_REQUEST['media']; + } elseif ( isset( $_REQUEST['ids'] ) ) { + $post_ids = explode( ',', $_REQUEST['ids'] ); + } elseif ( !empty( $_REQUEST['post'] ) ) { + $post_ids = array_map('intval', $_REQUEST['post']); + } + + if ( !isset( $post_ids ) ) { + wp_redirect( $sendback ); + exit; + } + + switch ( $doaction ) { + case 'trash': + $trashed = 0; + foreach( (array) $post_ids as $post_id ) { + if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) + wp_die( __('You are not allowed to move this item to the Trash.') ); + + if ( !wp_trash_post($post_id) ) + wp_die( __('Error in moving to Trash.') ); + + $trashed++; + } + $sendback = add_query_arg( array('trashed' => $trashed, 'ids' => join(',', $post_ids) ), $sendback ); + break; + case 'untrash': + $untrashed = 0; + foreach( (array) $post_ids as $post_id ) { + if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) + wp_die( __('You are not allowed to restore this item from the Trash.') ); + + if ( !wp_untrash_post($post_id) ) + wp_die( __('Error in restoring from Trash.') ); + + $untrashed++; + } + $sendback = add_query_arg('untrashed', $untrashed, $sendback); + break; + case 'delete': + $deleted = 0; + foreach( (array) $post_ids as $post_id ) { + $post_del = & get_post($post_id); + + if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) + wp_die( __('You are not allowed to delete this item.') ); + + if ( $post_del->post_type == 'attachment' ) { + if ( ! wp_delete_attachment($post_id) ) + wp_die( __('Error in deleting...') ); + } else { + if ( !wp_delete_post($post_id) ) + wp_die( __('Error in deleting...') ); + } + $deleted++; + } + $sendback = add_query_arg('deleted', $deleted, $sendback); + break; + case 'edit': + if ( isset($_REQUEST['bulk_edit']) ) { + $done = bulk_edit_posts($_REQUEST); + + if ( is_array($done) ) { + $done['updated'] = count( $done['updated'] ); + $done['skipped'] = count( $done['skipped'] ); + $done['locked'] = count( $done['locked'] ); + $sendback = add_query_arg( $done, $sendback ); + } + } + break; + } + + $sendback = remove_query_arg( array('action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status', 'post', 'bulk_edit', 'post_view'), $sendback ); + + wp_redirect($sendback); + exit(); +} elseif ( ! empty($_REQUEST['_wp_http_referer']) ) { + wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) ); + exit; +} + +$wp_list_table->prepare_items(); + +wp_enqueue_script('inline-edit-post'); + +$title = $post_type_object->labels->name; + +if ( 'post' == $post_type ) { + add_contextual_help($current_screen, + '

' . __('You can customize the display of this screen in a number of ways:') . '

' . + '
    ' . + '
  • ' . __('You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab.') . '
  • ' . + '
  • ' . __('You can filter the list of posts by post status using the text links in the upper left to show All, Published, Draft, or Trashed posts. The default view is to show all posts.') . '
  • ' . + '
  • ' . __('You can view posts in a simple title list or with an excerpt. Choose the view you prefer by clicking on the icons at the top of the list on the right.') . '
  • ' . + '
  • ' . __('You can refine the list to show only posts in a specific category or from a specific month by using the dropdown menus above the posts list. Click the Filter button after making your selection. You also can refine the list by clicking on the post author, category or tag in the posts list.') . '
  • ' . + '
' . + '

' . __('Hovering over a row in the posts list will display action links that allow you to manage your post. You can perform the following actions:') . '

' . + '
    ' . + '
  • ' . __('Edit takes you to the editing screen for that post. You can also reach that screen by clicking on the post title.') . '
  • ' . + '
  • ' . __('Quick Edit provides inline access to the metadata of your post, allowing you to update post details without leaving this screen.') . '
  • ' . + '
  • ' . __('Trash removes your post from this list and places it in the trash, from which you can permanently delete it.') . '
  • ' . + '
  • ' . __('Preview will show you what your draft post will look like if you publish it. View will take you to your live site to view the post. Which link is available depends on your post’s status.') . '
  • ' . + '
' . + '

' . __('You can also edit multiple posts at once. Select the posts you want to edit using the checkboxes, select Edit from the Bulk Actions menu and click Apply. You will be able to change the metadata (categories, author, etc.) for all selected posts at once. To remove a post from the grouping, just click the x next to its name in the Bulk Edit area that appears.') . '

' . + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Managing Posts') . '

' . + '

' . __('Support Forums') . '

' + ); +} elseif ( 'page' == $post_type ) { + add_contextual_help($current_screen, + '

' . __('Pages are similar to Posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest Pages under other Pages by making one the “Parent” of the other, creating a group of Pages.') . '

' . + '

' . __('Managing Pages is very similar to managing Posts, and the screens can be customized in the same way.') . '

' . + '

' . __('You can also perform the same types of actions, including narrowing the list by using the filters, acting on a Page using the action links that appear when you hover over a row, or using the Bulk Actions menu to edit the metadata for multiple Pages at once.') . '

' . + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Managing Pages') . '

' . + '

' . __('Support Forums') . '

' + ); +} + +add_screen_option( 'per_page', array('label' => $title, 'default' => 20) ); + +require_once('./admin-header.php'); +?> +
+ +

labels->name ); ?> labels->add_new); ?> ' . __('Search results for “%s”') . '', get_search_query() ); ?> +

+ + +

|

+ + + +

+' . __('Undo') . '
'; + unset($_REQUEST['trashed']); +} + +if ( isset($_REQUEST['untrashed']) && (int) $_REQUEST['untrashed'] ) { + printf( _n( 'Item restored from the Trash.', '%s items restored from the Trash.', $_REQUEST['untrashed'] ), number_format_i18n( $_REQUEST['untrashed'] ) ); + unset($_REQUEST['undeleted']); +} + +$_SERVER['REQUEST_URI'] = remove_query_arg( array('locked', 'skipped', 'updated', 'deleted', 'trashed', 'untrashed'), $_SERVER['REQUEST_URI'] ); +?> +

+ + +views(); ?> + +
+ +search_box( $post_type_object->labels->search_items, 'post' ); ?> + + + + + + + +display(); ?> + +
+ +has_items() ) + $wp_list_table->inline_edit(); +?> + +
+
+
+ + + +' . __('You can export a file of your site’s content in order to import it into another installation or platform. The export file will be an XML file format called WXR. Posts, pages, comments, custom fields, categories, and tags can be included. You can choose for the WXR file to include only certain posts or pages by setting the dropdown filters to limit the export by category, author, date range by month, or publishing status.') . '

' . + '

' . __('Once generated, your WXR file can be imported by another WordPress site or by another blogging platform able to access this format.') . '

' . + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Export') . '

' . + '

' . __('Support Forums') . '

' +); + +if ( isset( $_GET['download'] ) ) { + $args = array(); + + if ( ! isset( $_GET['content'] ) || 'all' == $_GET['content'] ) { + $args['content'] = 'all'; + } else if ( 'posts' == $_GET['content'] ) { + $args['content'] = 'post'; + + if ( $_GET['cat'] ) + $args['category'] = (int) $_GET['cat']; + + if ( $_GET['post_author'] ) + $args['author'] = (int) $_GET['post_author']; + + if ( $_GET['post_start_date'] || $_GET['post_end_date'] ) { + $args['start_date'] = $_GET['post_start_date']; + $args['end_date'] = $_GET['post_end_date']; + } + + if ( $_GET['post_status'] ) + $args['status'] = $_GET['post_status']; + } else if ( 'pages' == $_GET['content'] ) { + $args['content'] = 'page'; + + if ( $_GET['page_author'] ) + $args['author'] = (int) $_GET['page_author']; + + if ( $_GET['page_start_date'] || $_GET['page_end_date'] ) { + $args['start_date'] = $_GET['page_start_date']; + $args['end_date'] = $_GET['page_end_date']; + } + + if ( $_GET['page_status'] ) + $args['status'] = $_GET['page_status']; + } else { + $args['content'] = $_GET['content']; + } + + export_wp( $args ); + die(); +} + +require_once ('admin-header.php'); + +function export_date_options() { + global $wpdb, $wp_locale; + + $months = $wpdb->get_results( " + SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month + FROM $wpdb->posts + WHERE post_type = 'post' AND post_status != 'auto-draft' + ORDER BY post_date DESC + " ); + + $month_count = count( $months ); + if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) ) + return; + + foreach ( $months as $date ) { + if ( 0 == $date->year ) + continue; + + $month = zeroise( $date->month, 2 ); + echo ''; + } +} +?> + +
+ +

+ +

+

+

+ +

+
+ +

+

+ +

+
    +
  • + + __('All') ) ); ?> +
  • +
  • + +get_col( "SELECT DISTINCT post_author FROM {$wpdb->posts} WHERE post_type = 'post'" ); + wp_dropdown_users( array( 'include' => $authors, 'name' => 'post_author', 'multi' => true, 'show_option_all' => __('All') ) ); +?> +
  • +
  • + + + +
  • +
  • + + +
  • +
+ +

+
    +
  • + +get_col( "SELECT DISTINCT post_author FROM {$wpdb->posts} WHERE post_type = 'page'" ); + wp_dropdown_users( array( 'include' => $authors, 'name' => 'page_author', 'multi' => true, 'show_option_all' => __('All') ) ); +?> +
  • +
  • + + + +
  • +
  • + + +
  • +
+ + false, 'can_export' => true ), 'objects' ) as $post_type ) : ?> +

+ + + +
+
+ + diff --git a/src/wp-admin/freedoms.php b/src/wp-admin/freedoms.php new file mode 100644 index 0000000..cf7309a --- /dev/null +++ b/src/wp-admin/freedoms.php @@ -0,0 +1,42 @@ + +
+ +

+ +

license, the GPL.' ), 'http://wordpress.org/about/license/' ); ?>

+ +
    +
  1. +
  2. +
  3. +
  4. +
+ +

check out our trademark guidelines first.' ), 'http://wordpressfoundation.org/trademark-policy/' ); ?>

+ +

plugins and themes there. If you get a plugin or theme from another source, make sure to ask them if it’s GPL first. If they don’t respect the WordPress license, we don’t recommend them.' ), $plugins_url, $themes_url, 'http://wordpress.org/about/license/' ); ?>

+ +

Free Software Foundation.' ); ?>

+ +
+ diff --git a/src/wp-admin/gears-manifest.php b/src/wp-admin/gears-manifest.php new file mode 100644 index 0000000..8feb485 --- /dev/null +++ b/src/wp-admin/gears-manifest.php @@ -0,0 +1,51 @@ + +{ +"betaManifestVersion" : 1, +"version" : "", +"entries" : [ + + +]} diff --git a/src/wp-admin/images/align-center.png b/src/wp-admin/images/align-center.png new file mode 100644 index 0000000000000000000000000000000000000000..a41222687508d27e34408a55f758ee5a7c7e87b5 GIT binary patch literal 571 zcmV-B0>u4^P)+l22fn_=%Z0Zt$l>hXZBPAuASQ=9On+Ja+>?&+J4ME6zIdtX*h zZg4rfN`48em{K3A2OWuX!U0Woy+zN9aLXIKeTDg9rZ{KjB0d}rJ*o8WX83R?Q&VLk zrcbOA(C7x)X6JN3IrjBe*L0zO@~C#SO+-28^Ye2e@?8i*6_J16?$@q*{^A+&&IaTb zU$%Hl$izSc-ZBf-rc<{!-HS2q?(Uiy5qXf@V-oQA<%mE;7XX4>RI$13yQ&&ciX1z> zUVMv@yiFz(0JH*v!`WwG`L=!iZg0N_pjaZAEul~V8EV&x1au3aZQHhO0nF!f0F-k+ zIXS_v4^zr@l!oKuV*s9+%kII!K}w04%Xq4)qQ6lZMx)V>I;C`Wc6L`k=ll=-mBHfL zhY-51BckbaDk4qOlq-tPpO_glkH_OOe*$oHbaXels^UMG&1L`?KnS5^F80zwToKw})(^Cw1-Zo&VAwLdZE2k-PgDim`Pke*=JX?mMd669~tvV$}cu002ov JPDHLkV1ln<0GR*) literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/align-left.png b/src/wp-admin/images/align-left.png new file mode 100644 index 0000000000000000000000000000000000000000..2e433fc3e3d227013516a83c51cfeb267f048d9d GIT binary patch literal 587 zcmV-R0<`^!P)sQax`IK@^;~AHK6q5&=SrWNJDp{)CYtl!k&|NI?OL zWC=Qc04+UI967S32#9^>yWRJOV&O;;=M}Hno!Ob4K}(YRq?zQFWRnxgp3G#^s4|mG zOe7Okl_W_s8@6!2{r>KiXe(%}nuKJH`I?j8=&R}U<@;|mC(b)S2nYa}nTUu8Nf8PA zYC7%QR;p?=P7S-z*5bwe93dZXw?9@lPuglX&FtG4HRm8A-g{LQ5mlYdW}zl_?lx3a z_v_Y;Pohd1#iLy>^`kWEUz{Ebs;RgPOwa=3^0Ju$*lacc0%U7Gs%bbH3q(2|bzL_( z(Ugp1F~Z~XhfiTLNzz1&a?TF=T3 z147E>LCf{^HOWwzN=O$M7bIhhB=41AW+4Ps_1@3t^PID)qEIfE%fV_9a%fa_5VBk@ zNxHwm{3~oq$$Nk3BS<>u2Gs=;hR(0o>zs24q3gPbS;}cqWM)!q7a?UI0{`!lNO`yv Z><_up5e&-FS?>S<002ovPDHLkV1iJT2eAME literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/align-none.png b/src/wp-admin/images/align-none.png new file mode 100644 index 0000000000000000000000000000000000000000..5fb9af2e0c6cc72482867a84a1c62c8f2e682ddc GIT binary patch literal 453 zcmV;$0XqJPP)+kv(n{K@f#s{qzjGA-l2`B2o_FEBK0>fkSWxGK&OD z_JBly&CYaJJ%U-yCT+>3N?NL~-s@LFGBZi4s)zsxH1sOqhS@H!f>f}1W=_+zZ2{o4 zE}v1v{>~*-95Y?V4U0rVF_P>5zu$f8>i^oGZohov&VU*yZC)0nU+swi$js2b|C{F@7&EH5HJE_2 v|8@dI|9&qf`$`s(z-&1p+RAsQ-&p?vA$H`g`ToR900000NkvXXu0mjfmh8)_ literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/align-right.png b/src/wp-admin/images/align-right.png new file mode 100644 index 0000000000000000000000000000000000000000..9b92578fb5867463d5a88a0d8a072a62e772749a GIT binary patch literal 556 zcmV+{0@MA8P)+lR<71K@df&s;fPd*hv&AQdTTD0t?QNERq$6AMMgqk#9OqwM^p3v{HkVmXJ&c<01+|sw0S0))xz4PN}kEM z<*J^INW@E%o&m($Q9!=~fceMAcW-9}b1yp;$>fJa*8ZTarS8r94+`Mv>4}I$#LTAR zlv1sgnRz_D9LjLP`{$wKc`JrKd(9_EYoa#K&<|Rc2=9o12>iK2M8krJYDKKP6=Go$YwP z;O?A-baH-we@{eamQsq<-9?1RzZ;#Ey`S}T=rJop8RoMSrD5j_!Z!x6-EOb1ub0bZ zY5rEZd1;CGBW&m1icp;u_Hk&vq z5vi(~Etg9=LPT3@O(}^8GvD6cipZ}&ZLMv$+kdzSso2C?YYi81)Ra<0@c8)nR}0KM zj$_~V;lkag?4z4xX6yAD$C>oaEK-O#!aD#Jkr<(4#MH+GPF)v~T5CAcP}poXe_oKl u-9y97V&0;p>$>@)2@Oj(-0000{( zJaZG%Q-e|yQz{EjrrH1%u?6^qxc>kD|K7cOYgq5F0YyYTT^vIyZY3qSF!J>9Xe4kH cF*5Nm2;M1& literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/arrows-dark-vs.png b/src/wp-admin/images/arrows-dark-vs.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1dc7adaddcae26915f927c0a6bd6a435ad9ad8 GIT binary patch literal 1376 zcmeAS@N?(olHy`uVBq!ia0vp^{6JjI!3HE(r{0|6H_V+Po~;1FfgZOhD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Keo`G(%fti7VnW3Jc zv5C34xsHO7fuVuEfswwUk*=Y+m9dePfq?=PC;@FNN=dT{a&d#&1?1T(Wt5Z@Sn2DR zmzV368|&p4rRy77T3Uk4Ff!5ws?aU2%qvN((9J7WhMC}!TAW;zSx}OhpQivaF)=B> zw8T~k=u(ImatnNY;RfdwLjwvJWcn3}1^R}12Ku?VAb){X7ncO3BAkI$b#X{#L8^XG zYH@yPQ8F+-(v)GEfnkT=B9KC$Ypnc>GJ%njnB$V4T$-DjSK{ens|1wMOUX>Ja&t6y zGc+_eF)%kWFtac;bTYHFbTYRza&t2^aC9*;hM9p)udAV{p@pNVlevL0&eeb6IW9MS65exAZ!`CVki~RNfjFwL<5krs#ZGensu{1hr=eH;R4a0^8*fxc?W5QkaclXuSr@Ii6xM!-OMA_RLtL9rg!|eyT{-jV?X$>zOD@d*vMbln zm^~)JdHp1o-EuBIXJevl>(*-k*-MtWOJ3Z3q*kK6Vp8gh+rAujPOJ-JZ%_TdSpBD1 Z0)xW5(--Ed@9+kdd7iF*F6*2UngIEM^4$Oc literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/arrows-dark.png b/src/wp-admin/images/arrows-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..29f814d2982a8925ab0ec46d171a2f95239f99f1 GIT binary patch literal 495 zcmVdKT6w)|Qy|2w^fkMVpU2)< zny+zYtu+KSDf%*c9)u!m0R46eEgd?<58&@fg>w~eez&&K#7Ja6K=peLtKVw@IF|AvWSgYLyX@h;4$RtMW1OQ_LShr$Xgtgylgv&c7HJ%ZHC z^6lnXzNFBbjJj|6H_V+Po~;1FfgZOhD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Keo`G(%fti7VnW3Jc zv5C34xsHO7fuVuEfswwUk*=Y+m9dePfq?=PC;@FNN=dT{a&d#&1?1T(Wt5Z@Sn2DR zmzV368|&p4rRy77T3Uk4Ff!5ws?aU2%qvN((9J7WhMC}!TAW;zSx}OhpQivaF)=B> zw8T~k=u(ImatnNY;RfdwLjwvJWcn3}1^R}12Ku?VAb){X7ncO3BAkI$b#X{#L8^XG zYH@yPQ8F+-(v)GEfnkT=B9KC$Ypnc>GJ%njnB$V4T$-DjSK{ens|1wMOUX>Ja&t6y zGc+_eF)%kWFtac;bTYHFbTYRza&t2^aC9*;hM9p)udAD>tE;(-nVGARv7wT~doO%TiO^it=+6z~O6^iN$^cLkk0Be_I+FSh|>+ zyEvL#IJr4G8Yw~brjQe6`as9%gAxZ)Vu1+(Qy_>5Px?R(JoBXH0dq_dFl(H$$~(fq zz&Od%#WAGf)|;7zeuo_dT(3LGF40hT2oYJigQ07Z-E@a0ty+!8_e4D`S-!ZmaPK(C z8v1~RL-WhEPwu~tWdlQZ`no4NJc7g_da?2r2ox&Lc?{%Ws_ z#nU2&+QNOiCFajLZuI}R66M^^=>rPw;JSm12cTo~NQpQ^_pbxi5ywuzDqwo^F&3^^oPp-JOC}H9KCWh1dwsw?fyx474;`mO&WxizJbI%&_ zlILGMdoDl9yl-Hbb7AWZ^?R)^uf9syoy<4&)~f)Zt3XZ@`?+bQ`-EAM`|jR3Jzb<~ za@=;^v}K1_^InEdO1R$Kv2y36u>SknTnE>&uY4Kk_C=>q{+Qyt6v1C*!cFA?d@mNh gJ@xV!Z literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/arrows.png b/src/wp-admin/images/arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..775a7a0329ea8be6b070b9491f3b4acaaac653f8 GIT binary patch literal 494 zcmVIgLeA?vW(qBo;jqds^)#aXZmg{tgylgEBwna>h!$t z_h798I7Rq?W+<_rLo;t^D>j2NBkLu?9y+BnxaunKq0A*g!&oNWHnJ`~Gb3ZcSYd?~RycNo)Md6m;(Zd&T9hpG$J8dvlqTlZu@>bAwq>~VoddX*&D^&nzu?xfY@_liQW>p@z2lo>rs+=p?9Cs~EQ-Gtx+ kQ~-MEyYheZB;NuI0Le(%7<(?}lK=n!07*qoM6N<$g7DGi(EtDd literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/blue-grad.png b/src/wp-admin/images/blue-grad.png new file mode 100644 index 0000000000000000000000000000000000000000..868a657cca2e16c23e59c0b5050d49c817c9cff3 GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^tUxT!!3-oN{(RR0Qq09po*^6@9Je3(KLB!L1AIbU z-~agk4v4=0d;9I*n{R(#fBp0F%kNiT{=E47>-nc&&p!Tq`r*gp_un7A`}Xkd*9ULD z+f| zw`*NMi#Q8BB8wRqxP?HN@zUM8KR`jz64!_l=c3falFa-(g^SG zFdW$M@ZGxq^F7_T_dB#G32pRnQ45;b?KEYP(AEqWZL5pjjy*|2niAVZMb+lDua-}^{^G;_{rhjF*cx|lI&f``~Uxc28w~= zPZmZ722BPXkVzmvF|e&YFr~mlN2>qClA@D2R`V~cDDhe=$KRAQjq_68bcyv1k((-J zPbr?fpw?`kpN>g#XV;n^d+N@=|NXySkfFKRhr6ZKo2!GtN4=@Vm%qc0Z=zp&ufOap zKOw?6mq*;jgxujqPz#w~v0JN#KW0u@)E vJAdKgr5YZ#Yu9{KuHW$1xXtDxbKh6}w%@%wzML<8uLcM|2$1q{WUvMR|7)rM literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/bubble_bg.gif b/src/wp-admin/images/bubble_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..315ab527fa270f2b4ffdc10f7fc80d692a763d03 GIT binary patch literal 395 zcmZ?wbhEHb6kiAVZMb+lDua-}^{^G;_{rhjF*cx|lI&f``~Uxc28w~= zPZm}Y22BPXkVzmvF|e&TFr~mlN2>qClA@D2R`V~cDDhgW#~Sgbapuvc9kDzT*_yqq zQ_`kAIAS)h>Fwo7ja_Sg?5R8d{`da|7l!6$L7$dp?)DC@?pF0a27ccbKEF8U}fi7AzZCsS>Jijo6-LR^(A7b=&{RVtpT*|STdYr8`3B(;WBa;fc#1=Cb( zmnoOeSFKy2QnN(8ZIed(W{r-m@)=#~EgKZ`r>Hfrlh5ptO>R{zny%KkMzedTQps$E zoC)$-eJWLp<=Dgtl~wT^I6WDD%_T#_W#x#DQ*eP@m>i-dZ2bgr-Hj;3=*6-!(rN`mv#O3D+9QW<;`lZ*0mQ&Tb%72Gn5Qp@v;vWpc=^bB69 zsh0v3i-8n77o{eaWaj57gk|<;~5n^BH+J z82mXdkeu-I|9|;q3Wx1;nr?*rJD#Q%_I65?OVi{HQ7v!I{ck?+8M5Vt{Vp$|8kWny e=P&T`ab$Sa{( zJaZG%Q-e|yQz{EjrrH1%u?6^qxVpKy6%`ddyzBc0D8g7064+e@qSr{1@*co&ffB>YH zf!U-&Yr*a19*Wvi8wD0xt55n?8Fgds+|GHE9`4(4QR?u6YwvybZ(IG{I{snX>aQgm NV^UA*s4y^C0{~v-E<^&p!UV{`CE;FTZa*dw=Ee+lvog-FyAz=JOBd@4tNb_UomGudh6Q^W^>aTQ5Go z`ts+^x4(B^eZKJE)uVUcEMS_LF8UXK^jxy)rl9Mwn%LP*puyzuCjPMwJ95JKF>j+PKsXg_GsnhtD8 zh=^TCB+KZ+w1O@i>_T)@BanhF!iyL+Vms&T{MtEZJ7;Iq>;Dih&-?H^?}zX6eBpgE zG}u$CKdlD<)Vh0}!!XywXhAgaPSf^0Oxh{bg97mO^W~b@aosrU8k@a3GdX+De+L6- za3+9R-8cPH*f8b~KDeF6Iv|7(4UD)7Bq<02RVXNmg6H!LO&2+?R4U1`OcDggapiKE zFY+wIunf!d#VW*b2^}-T9V2H+?-(*rOF(SfEtt}NrEU;s|w4ql}aU_%l$QMw*#Qsc019L z`$qxet-2wzufeA~GdF29GQ(3k#HwpP=Tp5>sTUs~bbFp^79H8|jwMGn{Nu=E4WHV@ z<`Pj1OGKNZ!frxXz@l>r$fB|FiN4r)-$3m7_{6|c6Ou{+s8EME>s@=BuaUFM*eAr; zY2XyDLos!9uJm+8Ui3todx6%dF|QjeX0yfetkJS=SZ+O-Jgk9eC?1L*hC<0?DEZSH ziYJrFcpRuw8!vzFO2-wvIO)u`0SmbDZ3PihhCn+Q-Xj2f-scY3wf=tci0 Zqyhce4|i>ku8hL(3f!(i=T4U|@(=9Ekd*)c literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/fav-arrow-rtl.gif b/src/wp-admin/images/fav-arrow-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..e9aeba050766144782ae9eee56a70346df262d62 GIT binary patch literal 243 zcmV}Nk%w1VG#fz0K^{v=H}+)(;^N%g+<}3C>FMds&CTE6-;gwuUU0vPX-PF|7 zo}QkMkB{Ty(;^N%g+<}3C>FMds&CTE6-;gwuUU0vPX-PF|7 zo}QkMkB{TyF!Nj4FkwPVOG{&8V_jWcZEbB^TU&W~c}Yo0QBhHTetvFlZdO)SMn*KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=00004XF*Lt006O$eEU(80000WV@Og>004R=004l4008;_004mL004C` z008P>0026e000+nl3&F}0009QNkl&jz|)ZgZ0JtH*VkC8s4$DH6&JSu9=A^ki_(P zeNT(E=kI=Xwt4n>r?Q@%~4#t zy~ycKg!T`T}gaFvI~@jBg!ib0fcK3v6X|pMQJ9 z?+fZY)q0OZqj7fi_|va6ob_ift*sHg6T_9q57t@%ngYQX;&ByWC4rwWx1D6@{x6&u zJbkjIy=B<_5GhqdEUv+9&NiL+Y@1bpSShMnED?$(k=BW{P7uI?dHJYb^1LJCa^$5-M2A#>HPHO9n*Ajz!l?{jlFb_YixCT*wN+XtveC! zKk_F#yS(fj2s5|3{&40lD`T^wbjhn(B2Xwlf#sD&a9$q)X#fDmA4E~M(1zl<`7jIv z$<_R5*c%C7Qy8SLJ$Pltr859s+y+7k|Tzd$ngKFEC@oL z)v>EF;BsDqm~FYz()mTMG%Lp-kW8f~9h+8v2r-*-@eAvN*N?qPGBQ==$DwxjPj~+s zQrLGl%K2*#T%CzGqX2*>i);3^7uW1-2T(8*@6iC8LI*&2pDh6Z0000QK$!8;-MT+OLB$f+h?3y^w370~qErUo#N?v<+|-oJLS?6Fq}h zYU-sx#bO}E&PAz-C7Jno3L%-fsSJh&`bH-D1{RuptA7JkXnMLhhE&W+uKE2FVdQ&MBb@00ad; Aj{pDw literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/gray-star.png b/src/wp-admin/images/gray-star.png new file mode 100644 index 0000000000000000000000000000000000000000..a32b058bab68d77648dc1d8189b0d459b43dfc6c GIT binary patch literal 625 zcmV-%0*?KOP)J;xrTZQ^}xFMK%n-1FtD=iZ|`%jHr7!NNM^^LfZ-vtY4UL{iw%Gpkf88`D%O zB{VaF&Z^hzT?|p=1DYL)w7a6>cs!<{BA;n9olfDu&04J%g)2_q%d-4$W~ z+wBhW@%enPD@hVqt=4ZIkB2V#K4L{&NZ=16;QS%ii9?sm^$5FBZ8qD_(HM91yA7b7EQt{x7&S|PNxkUvvrS}_C1ryoO25&$X9{U9z9Gj7<`aSCbti5wOWN* ztyaeEV}aRaI2=yIVlnY+dc9r>l1_^f>%?a5cAJ8%V#x(=MJ3-BpO5S2&00000 LNkvXXu0mjfO&A>k literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/icons32-vs.png b/src/wp-admin/images/icons32-vs.png new file mode 100644 index 0000000000000000000000000000000000000000..d910bc1b499c0d05d9d8f70573a4ab88401e5ece GIT binary patch literal 14927 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 D`A)G& literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/icons32.png b/src/wp-admin/images/icons32.png new file mode 100644 index 0000000000000000000000000000000000000000..d94e38af1dcd961531b5f8cfc53b66c680f59469 GIT binary patch literal 14649 zcmb`ts%45tF20aOM?pl0D-!il0E>Sp&sA!V1pmeitv!% zj~5(IHB)Z@z$5+d1p=}^Pyqn0jS#JF}Ru?vYx|)!l2m-%Cfr0pU zWIw8Jb%Pfcj?3%`K(OmyFnZrHfq<(}X=$#fU0B}$kpDCuHqfP&)5T90^FXwxko6pd zcmwM4c_*%kjUWSHfk_Ib089mh$jxLm017Yw>tQ?FbwHN~ux1O}ng$TLS6M+Iz&wqS z98~ZQfRfrHl>jFxpmO|KoHAg-50E)%q9lMh9)Mrn*g*~W(hPKsLGbDTY+ zPw3=5H(xysLJEvQ6qr%p6(9<@FA#LEtT`$p6xgFjztD49^ZkI)3wP-` zMW=ca@_sjJA(ZhXy0O8|>t=5c$H9;vz$Ud}TtI?s<4l;6uqm^mt{A)3Fi7H=p@T>= zy{DS*MAQWI;|!rjYV@Zvuh1l7o~wL)Cp7>FM%+fXs|uur*Xhapz;9G+Ef=GCqw*1N z;)Rbub}~gl&cv$*8kq#q!tIIAPDBgIvWoruT{~1*La3MgynQ_iwc^}3sdmG)Pb=|1 z_tAWLR*Bvgdu}&g>xV%SuH1zqis7dKwPBD~Gl83E F|>6nFy7jVRI(BJ5NXM37j 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 Wsp literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/imgedit-icons.png b/src/wp-admin/images/imgedit-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..5f1f5851199320cccc0f6187155706a84eeeeb76 GIT binary patch literal 9607 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 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/loading.gif b/src/wp-admin/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..85b99d46b9911ba53a792d716d9f688f3bb3c784 GIT binary patch literal 2530 zcmb8xdrVVT90%}oAH9#>bK6p?cF>G=h0@JhTLdf!(gIdN1QeV+L;)2XD9^zNN@xod zwcvQjRvj8}y3J)yFv=3A2@i*l5Fc|hs2f3R;^QAN{$aL%*eO}IEP(~izxV$0$@lmB zp0hT=YKq8{00}@xHO(cjNl%Njq^=3k8whNA8mRstISPn@&imc_Tf_3@%d4xaj~qF2 z`t<3uXU|@|c=5`WE2E>Mw{G3KfB*i(#Kf~_&tAQH_4e)C>6t?woVxLBCtLOMhuB(t zGPLP@xf$T%5Zyz3iOuKI^?SO*zNFJ?wrL@=YKNznIpw!L(PPjKYQ7%}eBCama_c91pIJ1~(b1Kal`fZSz8V+OJY|r^QHxE6+WMoDB(^~{XdW=!#+uo_ zaF>U{k0Hho~yN%NrSyV`soxiBvd>cj#}5&$KDA)3{S^?ffCPkeDi5Vo>T8sy}Wj_Hf}N$J0Hz& zv|)_<-f+~-Hi-jgzIkG5vY*T|>7-8J0U*@$d8~ScFqA)f4R7yaDBs3j(<2>@V?*ZD zy6{Vy+~KLc_m5He=9(fsy~0c&4a-*{&i)i(02j`@8?In8dBM!Y(Znu4jtn@VMj|y5 zrTNa5ki}vtEiGN(#07>Rk#HaVI5ZB4@@yk%765mBN(yieTXgm{oK}vXn!h0oZG3gj;>>W?MbZnG6Q_cX~h&<^+R)8g9 zSd!4lZEm4K#ma0{aTpMHv%wr`1VF@rrKl5H7Hyn$;=;nh3JVMEcKbqhXnqO(3z}-# zu=v1OV7q%OY`*dVI>Y}97i4s2yl$S zmSto?fO|=u8h;vSPKY2zqaEs;LlhJgv~%aqwzjtUie_4FUNiT>r-& zOO#{4cBb6f^ zov;AUp?UAne>@_GHz5+(221Xlve$OHK)tvvi!~l<%)zr4PhU@ z(CY^us$O5!${6Pje5gy?*WtA2j>{<;$_PvVQNKa&69IX)a|Fw5>C&=WQ6s37gabVh SjHs`-`=fdj^ILtus=om5Wbpz3 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/logo-ghost.png b/src/wp-admin/images/logo-ghost.png new file mode 100644 index 0000000000000000000000000000000000000000..58335f7f58627d214ae9723f6e9827eb8bf2c57b GIT binary patch literal 559 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj;43C9V-A!TD(=<%vb942~)JNvR5+ zxryniL8*x;m4zo$ZGeir1AIbUSFT*SYSk(qAD_s`$oTm92@@t%R8&lxHf{0Z#a&%p zsi~=Tb#*N*EpzA2U9x0JP*6~IcJ{=H6Q@s~URYRIR8-X6-5nepoRgE|=H_OgCYA)Y zJIF8iKMugaXu`Fffq^m9)5S5Q;#SC{?n#FgI9w}#n7K_hdHeUje(afLw{?yAn%#G5 z2-qz8^W>n!3Lywjtj;^O?m*A9_KJ5)sX=W6~uTRmUHXQE7xjnSG_y%pDNB&_>#i`L`m!a$NmWHQeC5RITa98DPi)~oB$T51<% zDycHU==Lj?>jE>Fe{D1fwOBjl$<#H!w0BJ}$2~8_D literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/logo-login.png b/src/wp-admin/images/logo-login.png new file mode 100644 index 0000000000000000000000000000000000000000..497f683cf239c7f52f09d8270352bca2f84a4aea GIT binary patch literal 8891 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 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/logo.gif b/src/wp-admin/images/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..8024d4807622702e0e65f4234d1822be138bc332 GIT binary patch literal 1289 zcma)#|2xxp0Kng$Py5RFeCB)^q0QG}9I5C$vCY~zt=Lx5Mf21db%d5&SJ&p447J3G zdV1O_DVJ`m>``5U0)h10w)jF1Mqj zBO@b2qtPrbF3Mywi^bB~+A0tT>gwtS1_q>3snu#VnM|pvsTCC!&CSjKYT$oEo5x@s z0U0p7YZaLV#uo}*dBoU=hCJvA6VaLD-njyrM zBP6-M4GahcRcL*M`r9Qq36x@QQ!9?fl0-N}bCr!%2uV7CZzAJkP*LkOBO5s{#77f% zr`;jwF?P|Wz8J#YjnPPFT$iBj=}1iTbAUWLIeg~TE7)ukeJkz_cs(^`A10cU6{X}5 zLdB(5-1IB#R;AovS%wWoBQ}#XW}K!HY)>O+!aZ)fHT7=&-BMdNZyqZZ3)>oEi7T^dd!~M6h zMCbyU*m)TO)anyL=g!Ss2f$HW2 zl98q8f)AZa+N)&31<0BxbD`d7kPI@UTI*8i&s4>xMKo=$^w;dGhy9ivcm(AR7cskQ zJc8{ME;J{~ERR{@Vj~B|)?zko!CV}e|F;Q^8FtM*_G(~B()@`7t zNOkzDs&fO2(vEmbVe*7y`q%^Wm#1&w3<-CN;TP56U(F3Q_Eu&s%e}-=nIsxYz(rx= z!Q=+*I8pn&%qtWpr0bijX^n5BWbP z)Kk4175zD0==b+w!&=?5{lBDF-jVX3c@};aad9Co=HEl?8 z_;Dm*Qe#^q@)P-H2a8V=>gfe7G&^re%H~+-;P5IfjPG*jcO_Qqg2Bunc9uv?=jGj; z$l)a1bJGUB4T)F*4aKUb^JWH|V-RL^?;L-|f@r3L=)o)Ht=!d)jp}E|ND^!q~f1PjbsE zcOYiUf>b4=+bEv33JAL}zE7sABO6xzWUOaygAQE#z`$J4QeQUpTJZxTqTBEN3g2s% z@UV^z24G9L5x+jo#J(^3`Dm{4?r_#Ao@ZZF40ood7Ug=QjuB+9a%w1eJE-Sq0nxpi sCdB&~jsWYqqs0(PI>@*6Xo_H7dG}qLlS4NgMm>W?WbnrjG7O^r0emP8LI3~& literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/marker.png b/src/wp-admin/images/marker.png new file mode 100644 index 0000000000000000000000000000000000000000..3929bbb51dd950802bb9bf12a397d1ac1e140610 GIT binary patch literal 652 zcmV;70(1R|P)WdL?^ATcx`YISTNGB7YUATcvKGch_cGaxH4F)%P5@Y>T zK`Rsr}kV+VsK4r03&T_dN z37_`#A}MZSsZ=7H&Gr{5`4jIqW3d>C;2mRQVuQC)s?}<&*X!MgmKw!nwOZ}3XY?Yx z1ZKC}8S0jW4@NQJa5(yFMK4kTYB(HbPN(w+)?NbvF1{X#MEdVndQW6J-p7BJ3*__perLFn{87XL ziu@ni?KWkzS&BxZ!L_t(|+U;H2Qsg=eY^etR|BH|J2?_?=>XzhWIK@;^%f>gUTQ@tI z0Q`Mk?qh%Y{3&r#4*S0lYA-a`9pmlA`d)U0-b2PdfxGLy%k402=K1` zO42&VT(L&GlDj^3aQzI3W72MiWRd2z24Jhgv2#||?&@>Nwa0-(p8?<`XeY@%qSsvl z+F|9N!xN+D%jk0__^$#&)Mif=S7ZRQv64)x1!a}BWPb#6DBzBbOoN=)ipEEcS4g=+ zpsUxYjJLpmRz_h9ud`jES2jg<(eEaBO&0;I94z_H%J4X_Pq3o5F?~BiW5yHg0J)}+ zf{q0WN_MVU0oe{1Uzrpmgk``~fmaF2w9RB3n?5R0mg$q(Jem-?T7*o@o0;DhzoT)@ z6e*RX{FA`F!rUk2{PwRkS$vnGmIyt+`QK^VS5H~(SkblEi;T?}%1N2Gq%cPf3{h8u z81*%x*sw&TI7Zfrl;>lI5hz$COG&y$&hd4_7F~YB2790h>7tw|*&@=AqBBZ?BM7+G}o#g@yeCqM*xRV8|ogsk!G`m4rCkrL$z zRv0Cuu^TystOy{VkUGmJ9*|!F-ZJ6Kf}`mH?FN}Dyd^_{CoH)lBMQGS=V8N_5ocLe zXv?&-WbP^~-;g@kIv-O> zv<6Z<0LTmEsbon+t&Ulk$_Wk0_zFNWq_A>kJR_9<5mZfsC<2%qf&+y3Q^k}`tW{FF zLNA@@cb1?WT|`PiAP!9)Myo_IcT|7Au44^rNe@m8ajKL~JCFG3P<~P z3mWH(@d)!)#U{D*)vUVZ;M4PUzVYCO`KnZ;J`OS~ikkIa%4Lm5vk1IjVRn z`J~H0rv=K6l+y_iA~25pe!__pVHQwNmeVZR6e%cL#;(N7l$Mziw(A(h3vvU(G0U3> zuCka1)sjO$pXw$OjgbJtn!Y3Dov0MhY!!~$IZ<`|>a475?^2TK!&54!n%&3UD}!*M zfA=Y`H|w{{XVdV7CQv(%yE8}cND$Tuc2?dIc?zRwbX1ZB0mS+!kapK?WiWRh-!6FK zUS5y`n@4nK zFHiW9=(}E*F{?%xQXtAuB`#y>o_s=-^`hm`J%})dCO1aG{UHEe@&1lBcD-r%LeiR4 zC9x?JJJtkISg7+V4=4KO8Ms~B4^KhCk~_y%f$x0N5Q_S#vQ10k>_PzlPOXlYq$%T& z2!9=h7J1ClQ{EE-DFU!BX{!K%q7KR!CIptQt-_a`TvTYgLLQa~yGX{NogKYZXowc-J_)7z+Bz)UiOOgM4ylp6c*|RMh!vi*o+J(^&hiDpP3j9Aa_}6=e!kz z%o@PdQ@R1|0)x#V9mGF>&vOU{QN;q!`xKB$caeev#?Vc^8ZoM}eG6Y1r5Q_$#_n8x z)qf-uA7YqRfsb+!{Wk=@dP>G>x~#9;iZkt_7#6$6e0oZkVjb}?dyleMou9&y|fee8ossFdLuV^6Sir6Gr zrHvs4g|Teg9czqdQX=J}3TD?=8H)k|RiIVl+f6 z;w#!ujokq}uE6E%=CLAtRNAuh@50__Ao=coOy3ca66FtO!9kXxAl6{zr~-HAI4XQy zDbUIJtYPf9K;N<2r@Z3FZZL*BKEnX~hriEDef|N;IdkP@&ox^B0000({UH^75LRnn#Zw-Mo3Tu(0s!*RLNxe*E#{$G30aK7amv z{`~n>t5)sXx9`}oW81cE+puB7zkmPUy?giP&!6n<>^E=TG&D3Y;0B66S-_GyAQEIJ z1FQD})xMO-xfxYmL9h3%t&s7_y}o&cM!@^;)`3bNHKe+o1(_~pSk3nCW?(3YSRb}Z j!Qf@p{<{u}PI|LXvUXLSO_SDQK9uCA&ZE^Pz+epkWp`Pm literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/media-button-music.gif b/src/wp-admin/images/media-button-music.gif new file mode 100644 index 0000000000000000000000000000000000000000..0254a0881101b767577c82b30a7f6a7f522e6dad GIT binary patch literal 205 zcmV;;05bnaNk%w1VGIBa0K^{vm6et1>gt!5m#?p{v9YoH`}_3t^w-zdd3kxXw6ueR zgUZUvfq{Xir>C>Cv(nPiSy@@XzrU)gs)>n-`T6V!YA^8LW0018VEC2ui01N;O000F_;3s|sc6f=@ZR5AS@Y`-q`?j{W z@$vEO?Cj^~=l}ozA^8LW0018VEC2ui01W^Q000GY;3tY2F`lPjLFh+q0b~IVv~83q zT*w1(fXC&M5Cs^TLIqGMWFi=mN3!r(tpmqE^e`+sU~oqDQCt=Wj#@pKToeKaK{F`W vHJ*f{$Wcu)fEo@41t$^>8xb2A5iJM^3;>T8BL@ut1O^zJ1_S^d1t9=C?A334 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/media-button-video.gif b/src/wp-admin/images/media-button-video.gif new file mode 100644 index 0000000000000000000000000000000000000000..50ac6e0283a959c8afe2d49dcc04ce12f5be6015 GIT binary patch literal 139 zcmZ?wbhEHblp9uU@UGsd@0=!TIy&>+0&V zv$K~kU*6Er@c;jR1_lPjpDaL4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_00JjTL_t(I z5v7$qj}lQ7hOf)2>j!?U9}ALQ;|DR?Y-3`9|3EFM{25zP*|E`TYuY6gG}}^;&|48B zoymrT20~#7tUzSg@p(t?2n;)$b#C%xX5gH2?|t7pXN(&%CXR=F;5@~_aF`% z5F^!?kbJk*YJHE#<1YwK!2`Gh*Wof;Qh_yYR*vy_Y>LI={$MZ|6EL0O%&w=J*h@TX z1&v1Ih=6DC2=2pexCZOs&FZWHY_P@voGwi1cND}p85L%0hP?h5!zw*?kN#5Pl{Ru4Lz&XC|!ka$+O zDM^2Y<41q!M?0F$=2!lB4qCcwlW+^R5$o??_x=h-qtUcbDD0E)8|>`XzSXl6=xb1~ z*AIC-*S6&qcm;aB-p@=X^O^$IHVG%&B;0~+fdaA(;l2BES*mO;*I-30ogT~T|Mgvl$fEzcOf(??9ZrMFcPs+seEFR{}YjYx{+*D z0gXrpNd<<(p_9wyKCqP?NPv34O$hV=!u|KbKguc+>1ARjlS-xDluD)d-0BFcb%_|r z?$wrS=J`QGIlf3kS=fRKMQ&*-5~-=GfJUUYt^#x@H=oacM7+naY^(QKBkW&CQquC^ x)Ao&I^~j5V+DJ0=iCtdxcidWAWvRup^$%HPF5Qg1(2f8A002ovPDHLkV1j2lpA-N9 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/menu-arrow-frame.png b/src/wp-admin/images/menu-arrow-frame.png new file mode 100644 index 0000000000000000000000000000000000000000..33d19d8547050470dfea18c81469816b60807abf GIT binary patch literal 564 zcmV-40?Yl0P)m~si4bLP?ANsP$=9C27{?0j+Y`*L05qw5mZr>!)CMj#!|w#sFt9uR%@v1 z`g=GWKEW6>2|BXXPi-Zo>{YAP2i6RJWI7%zi7Ibv%x8m(gV58+sXYY}s~ z+%=1cnD&K__Js`W7>1#>+wJDGX8P5SH0$&^U=dgYHUK4+N}ct3J#*Fu%*})yPRDdA z@f0zW$(#m*!DANNrVW%b%S8IqNE->~qrzFXC6h_L)9HLTT`aE0x_tv~f^DI6I-ThE z`|hqbVq2|NdvvM)j$~<` zXsT+4}mD7t=sRRqTrZZ;{SkkEo41`hKECgJcx{qKNKz)j+2y?mY0~Bnwy-R zo}ZwhqNAjxrl+W>s;jK6uCK7Mva__cwzs&sy1Tr+zQ4f1!o$SH#>dFX%FE2n&d<=% z($mx`kQas3n~E>l+Lzpm-X_`@_4D`7 cQn_;j0~E9ruG>O}W4t|VbWMOH1rY!MJ3-d0FaQ7m literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/menu-bits-rtl-vs.gif b/src/wp-admin/images/menu-bits-rtl-vs.gif new file mode 100644 index 0000000000000000000000000000000000000000..422cc8df25c6ff1ba125c941ea1aa5999dcbf720 GIT binary patch literal 1555 zcmdUti9Ztx0LN#JoV~n`_1@D%I^-xmItVY4P*J^J=zUVu=XID$C>pUglzZhl$_|+# z$~o7@Cdx$R7|k`?%x3ptW@EFx`ZM0|FZg~x-(Nt`ad(d>FF=YO#~+~6>CR`>jIhN@ zrE*TZEL>g_Eo(=a0vcaVnG=pM`5f7bSgD=iEpiuEnIgsbyl7UiBv$E$8GM04Gfd}A zab@4wVuo;Oj3u1lNO*EJe@QbhQBE#MB`O_Tsse+-8jX5oWksviDijKhMiUbggU93J z;^LrCD2>BctJPy;V@M>jxVU(Hmc`(Sr&!zxCR?RaNu^RAk2k^KOtBWKs;cG$lDxb; zI#+~7qgPi~Cz$gzj_`R4d47JLN@qzVlJ7cz|J7_)4DK{!2>vT{644$5m z`S?jzc7}CcegWd?v%-Ii5I>hbe^G`+p)uuU=Ge+tudAxx)YQH*4R=#v2_j_BXujO*hzn0vXs?@iAws+n*`jjaYJl zjbFA^(4t*tq5ZjM zY6i^wAeRB(aNM4mzA5wuGh^$uYG$U@eJ=B{O{V?alO4r3Pyqc6Pb#watZ%Q#aW+*| zEbsc7Ei;UDC-d|5WYU~jR!a?@t=HgybyuC5w zi&5J!-=uff&{Xjw8hV1aE5dqG@bVpcir1Kjo?du=3q8Xg2}aXcOlR~gQ)Ypt)AhtC z2F>y-iaBjthnkyo%}24QzPC~H<7Y!q?DJ*8)|?Phwc}fg{OVsg;#`#hOzn0&fCYmw!hp_=!$j#SyHJXaLPej>uFbjBagJIi%Am3NHhA z0WNBb*tB&^mw|fWK6(ccP-8cSzNNdbVJPB}WkRHpZNH1jZ3N637isJ|;cHQhfNzj9 ZOslq%f++!?d|R8=;-(N_vz{B-{0Tn=H{4~n9R(~`T6Cd={r&Or@w~jenwpy1+uN|Pu-@L@!otG2xw-oK`pwPF{QUg$ z^Yh%?+_tv1*x141e4~>qGkdcy;l$DST zn35+iRlPFWFT*~l!rrsD3pjnkqDHDKcVQ8iaoK&lZ%YWrxlDk(U_Bs@kOR% zWjkipV`o2x7G!BdrncCTNG7S|l1w(~WK;nVkXDpaN{JSgS6X=%mRo9R7MEXoSr(XM zib)okXPP+{nro^l7MpLn85W##$_W;ociQ0f=_ML8g;F^}?Ya*re%G8IT|W2qBmn>Qg94V8BhMK2<>q zIMw>pc(lHnm9AI;dzG+O5nGk9R3ST+vQjY%rLVz4JFK+DQhThm$zr>#w#{<;Y?a_< z8E%*3hFNZz=cbweZky}I*>0Wh<{59F^9EXPSI$C}?^F9a)o)Y(J}L0PgAJgT!D%6k zmcnN-Y?i}iK}?p!V^J)Y#bIF#md0Ok?3Kq|fy|Z2T2Zi_Su7lofCgrXV1NJ=P(aoN z2`F$u%rc90Kmjq}95Y!O0KkCHWnrKI0vh~mRs{$=@F`j?EO7AD2~)kW)eU3)u+|ZC zJ+apngMG2s8I!%S*&U<(vDzWCJ+j+dk*t;6S<#J^-B;mlmEKkHO_kqM0WOu`Q4tQ6 z;ZGs%l;TY>&XnUzL9UeKNl}iJ^gMqG--rp zCLScFn1+_CC|V+*aw!(uqN0hSfCrbL9IyByh=3?;{Tcgw`+a=o_r#w&bL8kR$AL#4 z^QQr~+dVqBDBv@%JSW?1Hoe6;sWl0ehA|bWGq28>>{GfW$nKuen`akS#B+oBN%jOLb1Z8Dqp-?Cmi)A*OXFT7m1{N30@YHlI7Hif)zr*u$h^viC`@q@u&!>O+{R4x7A^y%0;pmuXd_pW4+b}gfBaqX7+@yWxiPEbO* zAs`x8(Z*@U9Z){Z?uKSUG5)X%9LAEmA0M#wBZq0x3L6sZF7&Xhpp=%W_}s&`K}sGL zcCnY^u;@gsX(PQoPMb+BsJqDRU3c0opkjo}{gT_pa3$J%=Pl(EpS{gW%;xWO%Dio7 z!d3Y@e!8W48hEo=RSLhVW8sGx}yBvWL@zyIYC#7bxC!& zvd|!XIsRmdzM^VNhOVg)MQ$b)V+_sBxbldWmWsC-Eo1_fe49kcy*k@Q7iWO)81rQC zkrxn?-p*Y;2B+}+BHNQ=&UyQJhd-`3fpYZ}E?az?=lJu$r zU6WVvxK6-xTQJ-gNg2NP7*QM(>x*(HJ&+;$;C)+N#uKsfC-^?k>70!hj-ay|LX-X%shbBZQcjNTpR3~$n8Er F^narM@oWG9 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/menu-bits.gif b/src/wp-admin/images/menu-bits.gif new file mode 100644 index 0000000000000000000000000000000000000000..218e184d350fd762ddd69933bdb35ec066ee0a88 GIT binary patch literal 1139 zcmV-(1dRJfNk%w1VLSkQ0o5`9;Naln+0(2<>lq=?d|F5 z>Ehzz=H}+As;c+*_vGZ{=;-L*-`~v4%$S&%`T6p;_4W1e@bK^N@297y z)6>(=&d&7o^qHBN{r&x&ot@3i&Ck!z@$vDxy1Lld*z)r7yu7^g^Yh-`-onDd`uh5| zwzjaau-)C={QUge+uQ&D{{R300000000000000000000000000000000000000000 z00000A^8LW001%oEC2ui06YME0RRU7K!I>bEE41e3XP7Bkdcy;l$Dm3 zn3&YwMR1wC4{R???UXGOhQHCEQIEt`-)yS9W5 z7p7vyAi_570#rGx@Xf(OaLp__*v>%MbAj41tb(?{L4t@1(nV*GK;SCs7rC>?H16GX z`NZfOr;oh8a{J8hJI4<_zjXc7_gm+Wz5l%W|Lg(io`CQXD4&7!A!wh1_%W!TgZx40 zUw{-2IM{_4W~kwY9CqmcVN?wWAXbPYiWnA&Cz=QriYu!46^k#r=oO4J%Gec+H`>S* zjyvkO6^}pqs1=Yy3Yis=M;eJ0l1nOi6_ZaoX%&qwOkm}e6NG@BR5T9o0hU&dKoyQC zfVlw(W7_CJ2v~NP=1U`7*}{}Mg0R5^A23%HkOWMyLXZquYk}9dGl%i^>s+h8>sjHmA>S?GS)@tjm zG6gV}u43^Tmakv|`<1X>5!;oqTp_!avRW~lm9tnudzG|SQCpR@R24vhSQPATVfG3#8ENt_UBj z@UICoyl}7$L;Uct5mP*Iu@z%{@v#|mym7J}gZ%NbA(K3Evn8W^^0O(kymGWH!~F8J zG1EMAwKd~>^R+qiyfanUP8GCNLq}CKR7XFRv{Oqr)ihI2<0|#kR99Wq5?E)gwGu%9 F06RqDYEJ+F literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/menu-dark-rtl-vs.gif b/src/wp-admin/images/menu-dark-rtl-vs.gif new file mode 100644 index 0000000000000000000000000000000000000000..14ed2ab4f1a2fcce547e62b0ee92a0f6846ca508 GIT binary patch literal 245 zcmZ?wbhEHbCMAjqHt(gCuQfwd?>rBBeY?^)!k z)wAZkKXGKDgT!Jd5pEGvb|)q$78VW;rNA#YzSbzuPAo{W$WY4RK6a^UcS86KZN16o zm#nw6Op#`T6a6TVnE`KmK0X*w9?t)Y?+t-qqQYRoB>c~iBXk=oR_Aw|>Xkg{yR`B3( zFk)h2=kb^%67i7n_*7FxY53B=i5(T51hI3{`0q!*Y2IU@nF~S^X*G_ z>^yev#oG_3uHWlewrl&5)1jTK{{R2aKr~SN$->CMAjqHt(gCuQfwf3Mq&G!n+T+eu zs@}Ua8{L>g7BmPruyg+5>}V4F`BzM!{o(Rv6St0AZ@*61nx>|sV|}}7>w~-s(|uj% zQ?^*1joTfcx+Ch|vi-q@e`4aF-``o=P#<62RMuYC(bn11-Ph7Mp}Deu%A~I8y)&n_ M&Ym}IiXwwG0FC8n_y7O^ literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/menu-dark.gif b/src/wp-admin/images/menu-dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..739b888f32573b02c0e4535df814bf949f068745 GIT binary patch literal 245 zcmZ?wbhEHb|{~2%t#h)yU3=Con zIv^z=I~iDu6cT!us7`y_xk}Z0*UE+{R>K7c6Mc9k{|KFEO8WU%g3sm2^6C(`u3K-X zPS~2JrlVthyK3u$yb9BOUFTD_Se}jB9iO@*>fW;b!G(Wf;-BB&S=&$_U)@yJUf0pq e+0)(E(m0{HvVY2?uIarqr?$?XH*Ja{gEas%y?Uzv literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/menu-shadow-rtl.png b/src/wp-admin/images/menu-shadow-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..a7507719fc9580fdc7c4edf06eddd97ff471aa24 GIT binary patch literal 891 zcmV->1BCpEP)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_001*dL_t(I z5o2axU=RmlP9SClViq7~1Y!mz5P=PhN??S_XpoEs2|NTw69YUbV2l9`5&+J*0FWo) R!BYSL002ovPDHLkV1f=gnf?F( literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/menu-shadow.png b/src/wp-admin/images/menu-shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..b0883a8cb7309236dc8d403bf87618be8478c17b GIT binary patch literal 131 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 e_<>~v(J_V+5Elus>=4@@}UQaQ%J;BX+^ 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 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/no.png b/src/wp-admin/images/no.png new file mode 100644 index 0000000000000000000000000000000000000000..e2db55f22d6752e10a57f07e286081ebebacfea5 GIT binary patch literal 792 zcmV+z1LypSP)AsU_?Zci9d!A_6x~Insr^bw(It`ecQh8*8@Fx_eq|^b9kOS$wyR`|06NPhocs8 zU?v>-=-EnfdDG!10kVJ}=mfmL3x4C3JD#r5^Se7=<^gXYh=3bt;e*loYJQ%@zqp#o zc)ieEZw~|j12}i_vg*D#!8fNTYH-)p(SZRifR{fXpPVOOg5)8_Pfax}pxL$sOiaI_ z9663WbAXxGGQR;QY}-bF{nj_X{Nr6+f*aSdgArUWy~x7#3tYQ*U;M!9W0N|Xd56Y> zdw6NVP@4PMEslKs#fSj7!@bq{RDZ|F(lUi+9ee>|JyA+;y-hurBRMxmp;CdWNzChE zEgUAbv5jI00Q-_DfCrBwQLTgC1pOJbJebx(GO4#fZ-Z7r7eRrwu3!}WegvSSe~?;s zg&54uc6CmaclX!;Ty0b?pa&4c#fOgla1%y+p#)Z=f~-xR;Wr)XE6PJrdB<@ zkX^(65AWw<3BGfCZc8qEVwk5llHC!E4clf5C;=vLa<_ciGWRF}HJ|~Mfr?dU+T}WK zwsR5K0^D`Sq1rBg5bskfzs`!nAt2Vip96}O9S)jR-j65r$IZL|SSUu*ZczvKR4}MU zA;+G=VV*iLHje+;F`frfK+$f}Su8OX4QUMmEk`k$jYjm7Pd{sRn(48RUTuLs23_h7>hH;3oe{xsP*g;=fdj*7t_=_KYN7DNh9L(*MX+IPs+eE= zDxM&f=%ZXQal{bBz)%Dm!3LQf+RwS^Q`pLYql&h1ISRI;>9a!ve49Rq1EL~0BK!+x WVm^3T=Dr&M0000TFc>z(#^19x7NJRw-;!TiYWnT&-4jbvoVqbzKLLohrK zX+ED1Mxzm3WMqxg>7*?(i7*R@rYwNs^?K*P=motHtItRBBLR^$cfB0vaygnpE|&|= z&dw-%5EO^Qu{PdhGR=WOrd&vbHLxdJfaTI12m~lYkTH1O@Aqk+=lQ+%F>6 zzhTCt|38z-P_adpkkSmrVi6{j3Ao+voxtEj9iWJcOxQDRnBMG#!{LQK(G=Q}GQIIT z3P~DNg^Khy_ht?h>B1(HN$B-@5RFD55{b}?gst2oL3iJB%W4`erxI2rl}ZK2$H#OJ zgL7DUa7?botfZ6-yJVd)sZ@%#p->3Y=`^iMD7@lMR}L^@O6>%PWwuDI(P+TY(b4Q- z2^h#4(ORw6#zQB+K`*M(9q?ThU1Fchi5p_D6sL0N@(g$clwe*#H0l07*qoM6N<$g0pad1poj5 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/required.gif b/src/wp-admin/images/required.gif new file mode 100644 index 0000000000000000000000000000000000000000..119350fc3abe01785061fbbc3db359a4acc1c4a4 GIT binary patch literal 62 zcmZ?wbhEHb6krfwXkcLY4@Cd}EB<6*6=7gx&|v@qkPHKpXixvj({I@iaBuWVPp_-~ N#ozYGLyeWe8UP0l5)S|X literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/resize-rtl.gif b/src/wp-admin/images/resize-rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..95e7b32a4ae89140c2fa2001deb443dc402f1d5e GIT binary patch literal 1418 zcmah}QD_ub6g{&}v9h61(8T0J#!^ZsNtoDT6GcsSlPp`)?Xo7ZicmJQZ^QR< zO$bF|OTXGCrT8nge&nOzU&x1oU)q8aLDNzQ{#&t#0YMrW&zsroP9*4qd3)yG^X@(O z&EA_z4|H|sYe+5cl5mDSTPNlu*)v( z+E*t|YTN%IwV6>`5YHQ))0@o>$}o}}gxj<|{|kyV+;897zlr?%OT6G26M*tA5PMb- zo&juIC#f_>A%H6L?L1d@%ET8Wc0>Cw5|4&>A+QhSlH^<`e$Q}R$-hI~WsK(wtWza! z8}lQi(FmTfDoh-#_qjI+d-xcCKcc8_gx6oi%4{Luca-)H3jVhs`ud66h!=|HK$^If z&uY;f7!I-Wu~|+Jg*Y~1TbaQs-ffR&z9eRRMRm%FTouoHlgDJtzW}AIDy?_%J@=K7~i1UUV1Hz(K^8=D2iG)`0Y`3MSHHL z=Fwyh;eVfb9w}2qQnh200cF{;{7GVqZz4#zkxojfr>b8cxwmJo@2>f@6?N&<{f65! zQ8^U9adxAu@Tz55(W^Hiyy#^Mb&uMqrqwRB8=87V?NJY_eSABp4%SW#Q=y4-)a_Dz zo;BE*qPMEm-*meO`;C7Z_EJjN!Zi&|&Va02Dw>uE9O3pBcZB&SC}&IPKUo2O_kgBP z>$bIAFh`We<+`o>1#sv;&V+k)TPs^)*JWU7zfo}~tN9e=E>ITd+4n%Qx_t)5i+kXaL&inrV xSA75FZxpc#+_YrJgR?Qt=4$%($L32nez29uw#Izd`QmhQt09M@?LjV8( literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/screen-options-toggle-vs.gif b/src/wp-admin/images/screen-options-toggle-vs.gif new file mode 100644 index 0000000000000000000000000000000000000000..3b9b8af34ff9141d9498c77e879a1ca3a10b26b2 GIT binary patch literal 152 zcmV;J0B8S4Nk%w1VG{r@0J8u9|NsBO!ot43zPh@)uCA`Cs;Zuzo|>APl9G~+j*g0o zih_cId3kwtb#-xZaR2}SA^8LW2LJ#7EC2ui022T%000C<5XecZy*TU5yZ>M)j+Ww_ z=Mro~gE~Zapou3iPBVOkV}ytmX-F&@kI1BQ$!t0SK~V2!!|6P;Q;pMl#Wtpw>Paq} GBLF)FctMQ- literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/screen-options-toggle.gif b/src/wp-admin/images/screen-options-toggle.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed0a5fd373f283a2bdfe038db842375ef2ce9780 GIT binary patch literal 205 zcmZ?wbhEHb6lTz4IKsg2=+UD+d-gnh`0)Dm>lZFuICt*c!Gj0y-Me?-z=7k(k3V?u zVDH|&ckkZaw{PFIYu8SnK7IA-)srVro;`c^#EBCOL;%H~EQ}y!Iv@gMCj+aOfvCT2E6_QgCUj@J;+iu}?9E|}=7pL9jmI9catb8%%jSBmjaq+WP1)(URg6L_ cPd}`Yo$Rfscj?vNChgn)-`C!LugG8x0KEZN(EtDd literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/se.png b/src/wp-admin/images/se.png new file mode 100644 index 0000000000000000000000000000000000000000..c9d8fdd0bb2734fbb717405a43fbab9c5a89ad46 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2xGmzZ=C-xtZVhivIasB`Qe{*x&q9e1dfFg_~ zL4Lsu4$p3+0XgcPE{-7;ajXX%IT;iLSPlptoX)CuywvFUwGEROwn!L8zFCpMr=MqM XsmH3P(RWoFsD;7P)z4*}Q$iB}ibN&J literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/sort.gif b/src/wp-admin/images/sort.gif new file mode 100644 index 0000000000000000000000000000000000000000..2a5a6e8ceb3bbeef9993896ee8ed3b787823a1a7 GIT binary patch literal 54 zcmZ?wbhEHb-!L- z=z77M@Y?J3K1-!i_Frb)0ew#syA0Q7J;yjLg`960bj|e9eUZa zIwFw>+3j}Xo8ugHKkx>4EA)S_27j;8=`<;dLV-YlVzJnj2Ue+6sMqV!bULM6E=NwM x^JnAYm$F%?$4G)kq?AGIF>3;<0oQa>Q4jOPFV002ovPDHLkV1k Z#k2O7)%uN-lirtHGA#4X&|+n<1_0g~6@LH# literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/upload-classic.png b/src/wp-admin/images/upload-classic.png new file mode 100644 index 0000000000000000000000000000000000000000..beda3e4369ac07423c2afb1b678cc42a057066fb GIT binary patch literal 1631 zcmZXVdpy%?9LLv5+sJayt*u;&txlM&R4x_EWk}}Q787#Gbvvt7+e9u!7nF9KLoUS> zW-&11@8|vfe4cY&p3X280~HVm1aoz9 z@&?XSV3D9;V6Q>KKY&2sO|DLReCTf{3tjOf5AAe$P2L8V1e3ViIoazs1fEqvMW<+{ zyyKnI0%x4o?>60AfNh_&J?hE0b+f&nx#}u6!0fDvDvzQE@ozJ zcX&MVdIwg0ZLO7bafRE8l*6v1v^@FBKURqADfA5*dszx%g4t`1rU~-X>9VZ8hr?>h)M!M4r8V-SO0d zA~xY7_+)4D?dzTg#9{#40@uf65ky{fiNdG-bDE@;+>)yI`t7)5XCEZ9Lfw(g`I4H%n z-g_Safk3ulFk#9#6-AkW_R!8Zr!E zBJw53-ZHcTy~)fBYvYNFOs(+}8slmJ}d$ipZ-&16mdl`OnvfFL2_BXw0nl)GZeXW9nyp9=`R zv$L}bNejdf4);B|<3ozkmXNQ-BAQ4njx!IpPx?M^&7K*331N3TH&+vxmI4Qg34P*z z^}C!05Bd=fteEQRYQ=aL=N+ol@9T}(mAmwWn&rH-#1b>yHK6s_Qwmvr1E1gD({nZV z84mS}TXnTZWmQ#ud%Gv>FRf++pdD+ajrf7r-Q8u{x2>DkDd-y_pre=B7Qv{P2_IhD z%4T&4WWg^e2+{s6DuJP*po1(-0g3(m{WXU zS1>y0x$3z&T4hBAFV%R}7#d^Vh>N~eUoX;h``ZnUhgzhXrF!>j);R?R1|Ea$DJ1S8 z3@syj{5$s4AmC5e>A9h*$Z!PnOp`KW->tbWy!={0fC ziqSf?q~8)B8Oh7Z$w`o9u^@ACNahbxU68h^z=VVosiWdy?U<3$nRdPJmHsuDNKYjx zF?1f~{$-21&Up#peh=u2wk-bf6wkjQub3HRJz5tB|Uq&ckvAm-Seom z^03_3o0rEhO?-KJzaxoMkg=WnN^@vnK(+cn^x)SU3tB_s)r93yqB=05(lA z3P`;Dl-yb3&E5YaO;YWUHB((pA9a*tT(uPC1>ysSef%jttpjO>B*ZZ^pxYrmN{Hw&&oMu*~?@_G1-} zQ@Alh=203AOUyW%=cXvxxoQ%i<%h($ literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/upload-fresh.png b/src/wp-admin/images/upload-fresh.png new file mode 100644 index 0000000000000000000000000000000000000000..92fd355c82ed81690fdc75dec27e0ddeeaa1a361 GIT binary patch literal 1051 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 literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/white-grad-active.png b/src/wp-admin/images/white-grad-active.png new file mode 100644 index 0000000000000000000000000000000000000000..04780150b1687255e4f6c7a58184ce0f29e1b4b4 GIT binary patch literal 223 zcmV<503iQ~P);3=*6-!(rN`mv#O3D+9QW<;`lZ*0mQ&Tb%72Gn5Qp@v;vWpc=^bB69 zsh0v3i-8n77o{eaWaj57gklFzshE@e=l}oz^=u{w sTJ#QpK$ELt*};X2YFF$i{?RJL(9C0{cF)_y5vYN|)78&qol`;+0C9#ulK=n! literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/widgets-arrow-vs.gif b/src/wp-admin/images/widgets-arrow-vs.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6398e6775b2e9cfd8a9561f77a7d5f9316ed131 GIT binary patch literal 213 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 Ef*Kab<^TWy literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/wp-logo-vs.png b/src/wp-admin/images/wp-logo-vs.png new file mode 100644 index 0000000000000000000000000000000000000000..13f3fa64dd7aee3835861516bd4a5e51de297ac7 GIT binary patch literal 958 zcmV;v13~$dbKQO*@ZEgH%pcb<}T*4%`BNe6J0dK zFh~cw0i`ieDg8CpgV1)grBK>)_I^h$%ue#0obUaf=Q;2DeecWJ&-CGcPcz{o!d}9b zwb%qL}N`Q_PZT$+iPaJ`)(=mR5nQb zw+VT{xa%!u@Rg(5@XD2s4_nV)9X1a>3}YdagRB4?$0LfYI^|7O6aZfZ+Quu9^QpoGy`NsSrGUV=cTzuuo!*W=N7Fb&f(1G~Gf+CCDRM|2^B z7PAq$GA%ek1J6txilSiOCJP+~k60?J8Vm>K(6phlfj(>1BB>@$)U3n6^b=?V9($V1 zfFi?IrBwxO^(K@H3f5O>5t&aTG?#?Hb8Jgs2GK`SB4{<~;fW;a^AYD;R&AqV)85)n>v(AcEhA z{sH^f8(SQ3+AJ6to5G$}E0~7DcbP%&ZC}XUUSIjhT2&5DIH9Kf$?I+SJ2Z!2VhPD? z4x6nT@GP5$QLn>+t*w5hA=)Ko;G?_$`TgFTnKS#EGV#S_S$7w^56InmdjCC!ga%dgEu&y19sJNEU}*vV~{KtTqkrA6qC>rrE=gOrn5OQOSW z3LO9TW`uD`bCwC!SzyETQ}=c>oc&H6rh`tK_ucju-A>2LHb(LUo`ioHonE}{3%l7c z1uuMf@%ZHj&xeWi4xya&3&B|7-0iAxbsiB7CRZVyu&5(jQTe!#dN!G!9J-eF4Np>t gwPcEr`A>iW0C727`Ns`5r2qf`07*qoM6N<$fB zoSc-AcqJST)A8{!l}aUQZEYnGlHG2PEG;cna=Ba#`8R>zs^Q^bCU|HvncP!TQ=O}; ztLEL^T~ZWo?f*KjQp zbVGLc!NCEg(`n)s>g(&pi7-=;xm+$P6^oQPJrxAeZ&7M)ZnojpB3H*G)zs7wJI^O^ z8(auuML}0r7uD%>)SzpiR4OH=!)@VGF+u#~NHCCzvIxIn zf{O@9z(D4bq-4!Dp=Jb8MJ0I5?%;R(z&Vkie-sTU%Q%VB!u!ybu{c b`6IvpNzqsrv0+8800000NkvXXu0mjf%yy4m literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/wpspin_dark.gif b/src/wp-admin/images/wpspin_dark.gif new file mode 100644 index 0000000000000000000000000000000000000000..daebe0dbefc8ff3e9ed10f0eb2e0c671a0aabaef GIT binary patch literal 2547 zcmcJQ{Zkb89mn@}ZwAK3kNZ=b&FnzYtVh=YbvOKb=CJVcJ;F4jRfrcRZEFzTd4 ze28tQMLZ5gOau&qfD(&U6HIbyo0!H_gC=7&TBA9EBqo@SHf^WYeQ*N-r6|bsV zx^!ttNr~&a1qB7OXU|68$Nrx){XSO~TK1#h!dPg|tUSVp{x$tyekKcZuw3uI9wtT| zE!-s~N7w&w|0U{)wW|wur_Q|Iy*@v3VZ-dl0YxnOO?A#Q`HcVF&q>Z7TJ?1Minb@a z&;GvgvkJfnC8}D)_>V%?dM6V6d-2KA z;KHd0j!zKOFR&*F=7YufmF~6q5$?NJi%WA-E{;OO~OkhRG1PWI{>c^@^YYd_D%+q9DN9U>w7UKJmy)mC%Rb5GqHE7v1dyM#Hcq zDKNFo)>x`sgR&%p7v9zb3V@}{Wm&lj)PSa!xN#GV0jFj2fj6M8-qwsWkzi=?l5k{7 zj`U=Xt`>KEz~fl_bw#N{CvoCiD2D%tvmI*Dsi33AHO{I$h!Qa+OEH`3c#C ziYOY0LL~?m+EO1>D=h*i_sTgr`v!2FfDp)So$dolQ&$ufzL+v;%qN9kQ-HejEfyh% z9n%EBQ8i6wa9_C_k2MEA22x`G?$g?>sC_(wD6USe#;cPlv?W{b4%FvIcE~sD@>MqU zsHeu>_lL)S(y09Nk@TZm7C4DIVoNM{o}MEq%T+bXQRy9p;!*=T{HdI>l0ocq_TD$vz&on5EKB=~t9F?VnEfV#LQ>C&b#e|*Jz6`P* zLH;Sw;KWsGWR&nT<@=7AIqVoKpPayWh?QQSjIsAZ!aZNus|s1cmrB2#v+ZnMPRE56 zjQ^|W>gJvmYJWMpen4*dBK_&w8IEClv9?g@s2dfUH;ppARf0B&;TGy9$Z`B09K-r5 zAj@)_XrB*sAfa9np(*)rroH*6JQ6T$lK830DvqYvDyN?C5J(D17;-CBIx{lHYKKpl zGCRg8?f)y)liR5v%$@t{TK?mfKvnymnxV9&xv>Q3$o~4V_QHJgW(s>QF~9%$TKvmR zt*D&2pQ+0%l;;qneHbVY8ipXq&?a!7m2g$qCHC~<`<6qV7d9jRFDuizY$+z=1Z$#5 zSR%)%VUr^KY@kx(S(cC2sAL8q&`3u8S*Jo{$dNII-?ZPUSNJgjSRIjd4{fIhcj7-S zJ6HW9*?9%s3GV%+bbem<;f;@d62lv@(C}bvMlb*DRZ<&*e@T4yJ=c%ZCK96@1zI;D z)0iqVyy~?51d%{eh@D+zPp{iA?1zvg$pCVk2f0}u;3JReRO;Ma?S-P0bi&m)_ zIEx67a2&tm;AQSwW<<~johT48qGP=lY4|Sz`Hf3AITdrIMFWMS69lVhi0bA0+U*|@Li-7o8J0tbd@u|dt3uy0%$5(G;g(bS+XdFLM+YjdW|j#@BPXNBN03X;lt>VrSqd7^Sord z;`|kepGff&Uco-(Otcp6sxQtpzSFwJ@r`N=wPc}$_TTn=Ixp5VgbgQyivZ1Vb=5t^ zx!vP~u^9M)d9mirJnd%4QtMqhi;6k`tacch-o694sH&o-qU;2Fgb*rSMRzTZWd|H+ zDAHiu)x8yYK@`(vA>qxp-j@GRq)LLIXveo-cBZ^y-|$IiXyw2z?}}x0b_@Qd#)WHg zX7SDVxGDH&nm3D9=FL1|NjRphod;-|^ZK9h5vB=+CJkA^5=9-_EW>!QMVZ!m&~p1K zA$n!;u-@TDQwJM4PPBgAG6bBcW(nEo5g}|;PQy}DM~e%hgwCC!!M!Mq24^54Dqc(VWi literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/wpspin_light.gif b/src/wp-admin/images/wpspin_light.gif new file mode 100644 index 0000000000000000000000000000000000000000..e10b97ff9d84d7ff8d7efe5c4c09783dd390e338 GIT binary patch literal 2193 zcmai#eNYtl8ON7(yJ6M6J=n0lMb_k8_Sd=PxP4*6q$V@fTkd$f1L8|!_`^Xw3?Nkk zC~rnNUV;$tr4l4p@CCR74h~C3V$$*262*vAVuOO9F=^{`jLEdlbka`yN0YrH{R4+i zKYO$L&)&@Qd4Au0p44>vi$C3^hxE`L2>MRrpJD#C#9u-@(0)tI%{|brFf(B$XJ#ff z!neubWH8KlFgU(MU_3BB9$3Qb4TP?MS0jA$c6+;*=;+X%9bwwSG`6)hhN%rx9zrV( z`hOU|Ta#tmwpHDnW0Ni7stE0U8AyT5q5p<7A@qYyo)eU5%q72Sl1mQe^)ydB z`SS9{o7alJO>^Lgb;EdZWTwCI-|IkR2DcbLR~R4Xo1bpfM@9-Z_5djw3Bo8~hYg%S z9p#NqBNqW-7U?J<>6|(Vf?!D^_2uVOT@nGE5ey`m(4iVdp5iSW7^kII2u23Llu=I2 z(B=VwodQXuV*iw881{Dcn@X+_N8f*NTPnzsc=mIUkhH^TwOP`B>rgj`RDSf7%7tYr z`F-gdqQ3f_rqcRCk=ci;YFH(8H?AWcno4r@%NtC0r&Cz{TEX@TL5aqLMgc!ea{^70 zAr%0_nhJF?tkQ)@-4u29d>`x;)(x693l4%j9H8lJ<{*O+&r&I$o#^b`3DC}rZepD^l?;g@|32TV~aZNyQ4R*PCVW$pR6*xek#2p z*6)7>ix2yhh<$SUE+A zJl3Gd%yTT8f;Zg12&+D=Wo@O?_OKlFLm$VxKvIE2x{Qamm{6^{srfOJ~YD>iv@x*qQU^lWMR*DmuX zE&U%?6pY@QdN{${*!bnzL~uWOy=!rh%>N9u+wUo{!TT5O`MsmlPcRHuKvR|C)_Pr~ zDJbS9z8z((6%5H$au|ZPT15qcA$SNG&e%yngMQ4kPc&dd4VlZj`rkq-wXTA`cDZw= zH2t0SjXi5WtAA5U{q)h~miHX5s^84Uyb~}#Xelj_qfSfHf0jy;n*YA~W`EfiML1qz zQp`u{+zL-tRGKiX*n&Wjf`d3=l~!qn2XOR+Xk{bdp;ZWijyeE3G!np%oW@6#IInfZ zyp=8G?KNN48~w7**>_St^~V>TIYrIIW6zG|{K zZbu^wLFIOWIHF)s#J(n?zyQN`k;HM``?RN%jhu2b@%myx*{&)`BK5&5RgB z=vj^w(2o=#ioCu#YDnP#g3fDaevjZwm0S~kcL668Tv=jpfn-~qsy2Z3|Br-)4wl;b z2M37RdtIT|5;4*A?oI@%vlYj-zkKD#5qtA$e#X#=tp53(j)lQlDS46e-5Q^&D@5Ei zD&3@@?(H=)^)_DLpgAzsY+a3HASqzQvK5m`dSe_Y=Ere@@Fvs{!vTV7uo}scOO6#o zwqL8|A2;Hm_VZi1dNC*`v%IKmHC)$x~ecdHdeT3e3rlgwcr^{9j zSJe;040k{8u4am``YjNoxURu&F$eBo@9H~6eKfbYciUHOjw{C|Zi)UJ(D_6<;`xsi zt3Ol^7sNilPG+n>l94Kf+|CaF+O#SYFRF?pxPGi!S4i=)hq2#6@klklFH%S%)2*P)EP^gW#~vR42A literal 0 HcmV?d00001 diff --git a/src/wp-admin/images/xit.gif b/src/wp-admin/images/xit.gif new file mode 100644 index 0000000000000000000000000000000000000000..6f1cc4f4eb88426e7a54d185c0fbd3772aeb0163 GIT binary patch literal 181 zcmZ?wbhEHb6k*_E*v!E2;K73*Cr*6ZzWv0B6TfcUc=__>wQJWt&ztw`*|VRQFMpam z`Ou+5|NsAIfC0syEMTS%hy+j!W707LS1+Y=f-P)1DV!dSi`E_7V!+X9;O(g4 zvq-JSNupcQX@>!a$R3vrBUO4f*s#JWo)C=2NW(z=Pj2y|)=wUAF^X9) z4JKxy1u6j0)RIi|M|)sH*wG=?lkGp?mG>pB_MOq^I)2;MG~R$-+5s)qA?%3_N2eo} zXv=IwoqbWvE*4At)uq*@s1n7bC*oOgSF=+RwLNr5*I9GqvaR{^Jq*&<5EDB1n?fTb zm9i$Dus8s4icGE-l{gAN2=9q38c~p!Py4(B*$}~^&cCXrMFSPUdx{aWOhk+U~sJy}m-eUU844&0=2l-7&OZcb~TiB5r z0AlWV30J0SgN!1!`5SNM*CEVJV1gTiG6i&8eG$y5$Xq{AJQ~MOnYT)Dr*_ais&-j# z+G5;h%n*ox)FklyQdiJ%!fJW6w(}QwQIRtCsoTnXOA{Bur&;c)oZ*vSD>X|Aw&+rK yNc65bzq+rET@n6d=x-0l;`?bjil?RWQuz-0He^X1)ISyg0000' . __('This screen lists links to plugins to import data from blogging/content management platforms. Choose the platform you want to import from, and click Install Now when you are prompted in the popup window. If your platform is not listed, click the link to search the plugin directory for other importer plugins to see if there is one for your platform.') . '

' . + '

' . __('In previous versions of WordPress, all the importers were built-in, but they have been turned into plugins as of version 3.0 since most people only use them once or infrequently.') . '

' . + '

' . __('For more information:') . '

' . + '

' . __('Documentation on Import') . '

' . + '

' . __('Support Forums') . '

' +); + +$popular_importers = array(); +if ( current_user_can('install_plugins') ) + $popular_importers = array( + 'blogger' => array( __('Blogger'), __('Install the Blogger importer to import posts, comments, and users from a Blogger blog.'), 'install' ), + 'wpcat2tag' => array(__('Categories and Tags Converter'), __('Install the category/tag converter to convert existing categories to tags or tags to categories, selectively.'), 'install', 'wp-cat2tag' ), + 'livejournal' => array( __( 'LiveJournal' ), __( 'Install the LiveJournal importer to import posts from LiveJournal using their API.' ), 'install' ), + 'movabletype' => array( __('Movable Type and TypePad'), __('Install the Movable Type importer to import posts and comments from a Movable Type or TypePad blog.'), 'install', 'mt' ), + 'opml' => array( __('Blogroll'), __('Install the blogroll importer to import links in OPML format.'), 'install' ), + 'rss' => array( __('RSS'), __('Install the RSS importer to import posts from an RSS feed.'), 'install' ), + 'wordpress' => array( 'WordPress', __('Install the WordPress importer to import posts, pages, comments, custom fields, categories, and tags from a WordPress export file.'), 'install' ) + ); + +if ( ! empty( $_GET['invalid'] ) && !empty($popular_importers[$_GET['invalid']][3]) ) { + wp_redirect( admin_url('import.php?import=' . $popular_importers[$_GET['invalid']][3]) ); + exit; +} + +add_thickbox(); +wp_enqueue_script( 'plugin-install' ); +wp_admin_css( 'plugin-install' ); + +require_once ('admin-header.php'); +$parent_file = 'tools.php'; +?> + +
+ +

+ +

%s importer is invalid or is not installed.'), esc_html( $_GET['invalid'] ) ); ?>

+ +

+ + $pop_data ) { + if ( isset($importers[$pop_importer] ) ) + continue; + if ( isset( $pop_data[3] ) && isset( $importers[ $pop_data[3] ] ) ) + continue; + + $importers[$pop_importer] = $popular_importers[$pop_importer]; +} + +if (empty ($importers)) { + echo '

'.__('No importers are available.').'

'; // TODO: make more helpful +} else { + uasort($importers, create_function('$a, $b', 'return strcmp($a[0], $b[0]);')); +?> + + + $data) { + $style = ('class="alternate"' == $style || 'class="alternate active"' == $style) ? '' : 'alternate'; + $action = ''; + if ( 'install' == $data[2] ) { + $plugin_slug = $id . '-importer'; + if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_slug ) ) { + // Looks like Importer is installed, But not active + $plugins = get_plugins( '/' . $plugin_slug ); + if ( !empty($plugins) ) { + $keys = array_keys($plugins); + $plugin_file = $plugin_slug . '/' . $keys[0]; + $action = '' . $data[0] . ''; + } + } + if ( empty($action) ) + $action = '' . $data[0] . ''; + } else { + $action = "{$data[0]}"; + } + + if ($style != '') + $style = 'class="'.$style.'"'; + echo " + + + + "; + } +?> + +
$action{$data[1]}
+' . sprintf( __('If the importer you need is not listed, search the plugins directory to see if an importer is available.'), esc_url( network_admin_url( 'plugin-install.php?tab=search&type=tag&s=importer' ) ) ) . '

'; +?> + +
+ + diff --git a/src/wp-admin/includes/admin.php b/src/wp-admin/includes/admin.php new file mode 100644 index 0000000..37f5c8e --- /dev/null +++ b/src/wp-admin/includes/admin.php @@ -0,0 +1,64 @@ + diff --git a/src/wp-admin/includes/bookmark.php b/src/wp-admin/includes/bookmark.php new file mode 100644 index 0000000..0ed560c --- /dev/null +++ b/src/wp-admin/includes/bookmark.php @@ -0,0 +1,269 @@ +link_url = esc_url( $_GET['linkurl'] ); + else + $link->link_url = ''; + + if ( isset( $_GET['name'] ) ) + $link->link_name = esc_attr( $_GET['name'] ); + else + $link->link_name = ''; + + $link->link_visible = 'Y'; + + return $link; +} + +/** + * Delete link specified from database + * + * @since 2.0.0 + * + * @param int $link_id ID of the link to delete + * @return bool True + */ +function wp_delete_link( $link_id ) { + global $wpdb; + + do_action( 'delete_link', $link_id ); + + wp_delete_object_term_relationships( $link_id, 'link_category' ); + + $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->links WHERE link_id = %d", $link_id ) ); + + do_action( 'deleted_link', $link_id ); + + clean_bookmark_cache( $link_id ); + + return true; +} + +/** + * Retrieves the link categories associated with the link specified. + * + * @since 2.1.0 + * + * @param int $link_id Link ID to look up + * @return array The requested link's categories + */ +function wp_get_link_cats( $link_id = 0 ) { + + $cats = wp_get_object_terms( $link_id, 'link_category', array('fields' => 'ids') ); + + return array_unique( $cats ); +} + +/** + * Retrieve link data based on ID. + * + * @since 2.0.0 + * + * @param int $link_id ID of link to retrieve + * @return object Link for editing + */ +function get_link_to_edit( $link_id ) { + return get_bookmark( $link_id, OBJECT, 'edit' ); +} + +/** + * This function inserts/updates links into/in the database. + * + * @since 2.0.0 + * + * @param array $linkdata Elements that make up the link to insert. + * @param bool $wp_error Optional. If true return WP_Error object on failure. + * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success. + */ +function wp_insert_link( $linkdata, $wp_error = false ) { + global $wpdb; + + $defaults = array( 'link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0 ); + + $linkdata = wp_parse_args( $linkdata, $defaults ); + $linkdata = sanitize_bookmark( $linkdata, 'db' ); + + extract( stripslashes_deep( $linkdata ), EXTR_SKIP ); + + $update = false; + + if ( !empty( $link_id ) ) + $update = true; + + if ( trim( $link_name ) == '' ) { + if ( trim( $link_url ) != '' ) { + $link_name = $link_url; + } else { + return 0; + } + } + + if ( trim( $link_url ) == '' ) + return 0; + + if ( empty( $link_rating ) ) + $link_rating = 0; + + if ( empty( $link_image ) ) + $link_image = ''; + + if ( empty( $link_target ) ) + $link_target = ''; + + if ( empty( $link_visible ) ) + $link_visible = 'Y'; + + if ( empty( $link_owner ) ) + $link_owner = get_current_user_id(); + + if ( empty( $link_notes ) ) + $link_notes = ''; + + if ( empty( $link_description ) ) + $link_description = ''; + + if ( empty( $link_rss ) ) + $link_rss = ''; + + if ( empty( $link_rel ) ) + $link_rel = ''; + + // Make sure we set a valid category + if ( ! isset( $link_category ) || 0 == count( $link_category ) || !is_array( $link_category ) ) { + $link_category = array( get_option( 'default_link_category' ) ); + } + + if ( $update ) { + if ( false === $wpdb->update( $wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id') ) ) { + if ( $wp_error ) + return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), $wpdb->last_error ); + else + return 0; + } + } else { + if ( false === $wpdb->insert( $wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss') ) ) { + if ( $wp_error ) + return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), $wpdb->last_error ); + else + return 0; + } + $link_id = (int) $wpdb->insert_id; + } + + wp_set_link_cats( $link_id, $link_category ); + + if ( $update ) + do_action( 'edit_link', $link_id ); + else + do_action( 'add_link', $link_id ); + + clean_bookmark_cache( $link_id ); + + return $link_id; +} + +/** + * Update link with the specified link categories. + * + * @since 2.1.0 + * + * @param int $link_id ID of link to update + * @param array $link_categories Array of categories to + */ +function wp_set_link_cats( $link_id = 0, $link_categories = array() ) { + // If $link_categories isn't already an array, make it one: + if ( !is_array( $link_categories ) || 0 == count( $link_categories ) ) + $link_categories = array( get_option( 'default_link_category' ) ); + + $link_categories = array_map( 'intval', $link_categories ); + $link_categories = array_unique( $link_categories ); + + wp_set_object_terms( $link_id, $link_categories, 'link_category' ); + + clean_bookmark_cache( $link_id ); +} + +/** + * Update a link in the database. + * + * @since 2.0.0 + * + * @param array $linkdata Link data to update. + * @return int|WP_Error Value 0 or WP_Error on failure. The updated link ID on success. + */ +function wp_update_link( $linkdata ) { + $link_id = (int) $linkdata['link_id']; + + $link = get_bookmark( $link_id, ARRAY_A ); + + // Escape data pulled from DB. + $link = add_magic_quotes( $link ); + + // Passed link category list overwrites existing category list if not empty. + if ( isset( $linkdata['link_category'] ) && is_array( $linkdata['link_category'] ) + && 0 != count( $linkdata['link_category'] ) ) + $link_cats = $linkdata['link_category']; + else + $link_cats = $link['link_category']; + + // Merge old and new fields with new fields overwriting old ones. + $linkdata = array_merge( $link, $linkdata ); + $linkdata['link_category'] = $link_cats; + + return wp_insert_link( $linkdata ); +} + +?> diff --git a/src/wp-admin/includes/class-ftp-pure.php b/src/wp-admin/includes/class-ftp-pure.php new file mode 100644 index 0000000..c947f44 --- /dev/null +++ b/src/wp-admin/includes/class-ftp-pure.php @@ -0,0 +1,190 @@ +__construct($verb, $le); + } + + function __construct($verb=FALSE, $le=FALSE) { + parent::__construct(false, $verb, $le); + } + +// +// +// + + function _settimeout($sock) { + if(!@stream_set_timeout($sock, $this->_timeout)) { + $this->PushError('_settimeout','socket set send timeout'); + $this->_quit(); + return FALSE; + } + return TRUE; + } + + function _connect($host, $port) { + $this->SendMSG("Creating socket"); + $sock = @fsockopen($host, $port, $errno, $errstr, $this->_timeout); + if (!$sock) { + $this->PushError('_connect','socket connect failed', $errstr." (".$errno.")"); + return FALSE; + } + $this->_connected=true; + return $sock; + } + + function _readmsg($fnction="_readmsg"){ + if(!$this->_connected) { + $this->PushError($fnction, 'Connect first'); + return FALSE; + } + $result=true; + $this->_message=""; + $this->_code=0; + $go=true; + do { + $tmp=@fgets($this->_ftp_control_sock, 512); + if($tmp===false) { + $go=$result=false; + $this->PushError($fnction,'Read failed'); + } else { + $this->_message.=$tmp; + if(preg_match("/^([0-9]{3})(-(.*[".CRLF."]{1,2})+\\1)? [^".CRLF."]+[".CRLF."]{1,2}$/", $this->_message, $regs)) $go=false; + } + } while($go); + if($this->LocalEcho) echo "GET < ".rtrim($this->_message, CRLF).CRLF; + $this->_code=(int)$regs[1]; + return $result; + } + + function _exec($cmd, $fnction="_exec") { + if(!$this->_ready) { + $this->PushError($fnction,'Connect first'); + return FALSE; + } + if($this->LocalEcho) echo "PUT > ",$cmd,CRLF; + $status=@fputs($this->_ftp_control_sock, $cmd.CRLF); + if($status===false) { + $this->PushError($fnction,'socket write failed'); + return FALSE; + } + $this->_lastaction=time(); + if(!$this->_readmsg($fnction)) return FALSE; + return TRUE; + } + + function _data_prepare($mode=FTP_ASCII) { + if(!$this->_settype($mode)) return FALSE; + if($this->_passive) { + if(!$this->_exec("PASV", "pasv")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $ip_port = explode(",", ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*".CRLF."$", "\\1", $this->_message)); + $this->_datahost=$ip_port[0].".".$ip_port[1].".".$ip_port[2].".".$ip_port[3]; + $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]); + $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); + $this->_ftp_data_sock=@fsockopen($this->_datahost, $this->_dataport, $errno, $errstr, $this->_timeout); + if(!$this->_ftp_data_sock) { + $this->PushError("_data_prepare","fsockopen fails", $errstr." (".$errno.")"); + $this->_data_close(); + return FALSE; + } + else $this->_ftp_data_sock; + } else { + $this->SendMSG("Only passive connections available!"); + return FALSE; + } + return TRUE; + } + + function _data_read($mode=FTP_ASCII, $fp=NULL) { + if(is_resource($fp)) $out=0; + else $out=""; + if(!$this->_passive) { + $this->SendMSG("Only passive connections available!"); + return FALSE; + } + while (!feof($this->_ftp_data_sock)) { + $block=fread($this->_ftp_data_sock, $this->_ftp_buff_size); + if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_local], $block); + if(is_resource($fp)) $out+=fwrite($fp, $block, strlen($block)); + else $out.=$block; + } + return $out; + } + + function _data_write($mode=FTP_ASCII, $fp=NULL) { + if(is_resource($fp)) $out=0; + else $out=""; + if(!$this->_passive) { + $this->SendMSG("Only passive connections available!"); + return FALSE; + } + if(is_resource($fp)) { + while(!feof($fp)) { + $block=fread($fp, $this->_ftp_buff_size); + if(!$this->_data_write_block($mode, $block)) return false; + } + } elseif(!$this->_data_write_block($mode, $fp)) return false; + return TRUE; + } + + function _data_write_block($mode, $block) { + if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_remote], $block); + do { + if(($t=@fwrite($this->_ftp_data_sock, $block))===FALSE) { + $this->PushError("_data_write","Can't write to socket"); + return FALSE; + } + $block=substr($block, $t); + } while(!empty($block)); + return true; + } + + function _data_close() { + @fclose($this->_ftp_data_sock); + $this->SendMSG("Disconnected data from remote host"); + return TRUE; + } + + function _quit($force=FALSE) { + if($this->_connected or $force) { + @fclose($this->_ftp_control_sock); + $this->_connected=false; + $this->SendMSG("Socket closed"); + } + } +} + +?> diff --git a/src/wp-admin/includes/class-ftp-sockets.php b/src/wp-admin/includes/class-ftp-sockets.php new file mode 100644 index 0000000..4026dd0 --- /dev/null +++ b/src/wp-admin/includes/class-ftp-sockets.php @@ -0,0 +1,250 @@ +__construct($verb, $le); + } + + function __construct($verb=FALSE, $le=FALSE) { + parent::__construct(true, $verb, $le); + } + +// +// +// + + function _settimeout($sock) { + if(!@socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>$this->_timeout, "usec"=>0))) { + $this->PushError('_connect','socket set receive timeout',socket_strerror(socket_last_error($sock))); + @socket_close($sock); + return FALSE; + } + if(!@socket_set_option($sock, SOL_SOCKET , SO_SNDTIMEO, array("sec"=>$this->_timeout, "usec"=>0))) { + $this->PushError('_connect','socket set send timeout',socket_strerror(socket_last_error($sock))); + @socket_close($sock); + return FALSE; + } + return true; + } + + function _connect($host, $port) { + $this->SendMSG("Creating socket"); + if(!($sock = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) { + $this->PushError('_connect','socket create failed',socket_strerror(socket_last_error($sock))); + return FALSE; + } + if(!$this->_settimeout($sock)) return FALSE; + $this->SendMSG("Connecting to \"".$host.":".$port."\""); + if (!($res = @socket_connect($sock, $host, $port))) { + $this->PushError('_connect','socket connect failed',socket_strerror(socket_last_error($sock))); + @socket_close($sock); + return FALSE; + } + $this->_connected=true; + return $sock; + } + + function _readmsg($fnction="_readmsg"){ + if(!$this->_connected) { + $this->PushError($fnction,'Connect first'); + return FALSE; + } + $result=true; + $this->_message=""; + $this->_code=0; + $go=true; + do { + $tmp=@socket_read($this->_ftp_control_sock, 4096, PHP_BINARY_READ); + if($tmp===false) { + $go=$result=false; + $this->PushError($fnction,'Read failed', socket_strerror(socket_last_error($this->_ftp_control_sock))); + } else { + $this->_message.=$tmp; + $go = !preg_match("/^([0-9]{3})(-.+\\1)? [^".CRLF."]+".CRLF."$/Us", $this->_message, $regs); + } + } while($go); + if($this->LocalEcho) echo "GET < ".rtrim($this->_message, CRLF).CRLF; + $this->_code=(int)$regs[1]; + return $result; + } + + function _exec($cmd, $fnction="_exec") { + if(!$this->_ready) { + $this->PushError($fnction,'Connect first'); + return FALSE; + } + if($this->LocalEcho) echo "PUT > ",$cmd,CRLF; + $status=@socket_write($this->_ftp_control_sock, $cmd.CRLF); + if($status===false) { + $this->PushError($fnction,'socket write failed', socket_strerror(socket_last_error($this->stream))); + return FALSE; + } + $this->_lastaction=time(); + if(!$this->_readmsg($fnction)) return FALSE; + return TRUE; + } + + function _data_prepare($mode=FTP_ASCII) { + if(!$this->_settype($mode)) return FALSE; + $this->SendMSG("Creating data socket"); + $this->_ftp_data_sock = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP); + if ($this->_ftp_data_sock < 0) { + $this->PushError('_data_prepare','socket create failed',socket_strerror(socket_last_error($this->_ftp_data_sock))); + return FALSE; + } + if(!$this->_settimeout($this->_ftp_data_sock)) { + $this->_data_close(); + return FALSE; + } + if($this->_passive) { + if(!$this->_exec("PASV", "pasv")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $ip_port = explode(",", ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*".CRLF."$", "\\1", $this->_message)); + $this->_datahost=$ip_port[0].".".$ip_port[1].".".$ip_port[2].".".$ip_port[3]; + $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]); + $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); + if(!@socket_connect($this->_ftp_data_sock, $this->_datahost, $this->_dataport)) { + $this->PushError("_data_prepare","socket_connect", socket_strerror(socket_last_error($this->_ftp_data_sock))); + $this->_data_close(); + return FALSE; + } + else $this->_ftp_temp_sock=$this->_ftp_data_sock; + } else { + if(!@socket_getsockname($this->_ftp_control_sock, $addr, $port)) { + $this->PushError("_data_prepare","can't get control socket information", socket_strerror(socket_last_error($this->_ftp_control_sock))); + $this->_data_close(); + return FALSE; + } + if(!@socket_bind($this->_ftp_data_sock,$addr)){ + $this->PushError("_data_prepare","can't bind data socket", socket_strerror(socket_last_error($this->_ftp_data_sock))); + $this->_data_close(); + return FALSE; + } + if(!@socket_listen($this->_ftp_data_sock)) { + $this->PushError("_data_prepare","can't listen data socket", socket_strerror(socket_last_error($this->_ftp_data_sock))); + $this->_data_close(); + return FALSE; + } + if(!@socket_getsockname($this->_ftp_data_sock, $this->_datahost, $this->_dataport)) { + $this->PushError("_data_prepare","can't get data socket information", socket_strerror(socket_last_error($this->_ftp_data_sock))); + $this->_data_close(); + return FALSE; + } + if(!$this->_exec('PORT '.str_replace('.',',',$this->_datahost.'.'.($this->_dataport>>8).'.'.($this->_dataport&0x00FF)), "_port")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + } + return TRUE; + } + + function _data_read($mode=FTP_ASCII, $fp=NULL) { + $NewLine=$this->_eol_code[$this->OS_local]; + if(is_resource($fp)) $out=0; + else $out=""; + if(!$this->_passive) { + $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); + $this->_ftp_temp_sock=socket_accept($this->_ftp_data_sock); + if($this->_ftp_temp_sock===FALSE) { + $this->PushError("_data_read","socket_accept", socket_strerror(socket_last_error($this->_ftp_temp_sock))); + $this->_data_close(); + return FALSE; + } + } + + while(($block=@socket_read($this->_ftp_temp_sock, $this->_ftp_buff_size, PHP_BINARY_READ))!==false) { + if($block==="") break; + if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_local], $block); + if(is_resource($fp)) $out+=fwrite($fp, $block, strlen($block)); + else $out.=$block; + } + return $out; + } + + function _data_write($mode=FTP_ASCII, $fp=NULL) { + $NewLine=$this->_eol_code[$this->OS_local]; + if(is_resource($fp)) $out=0; + else $out=""; + if(!$this->_passive) { + $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); + $this->_ftp_temp_sock=socket_accept($this->_ftp_data_sock); + if($this->_ftp_temp_sock===FALSE) { + $this->PushError("_data_write","socket_accept", socket_strerror(socket_last_error($this->_ftp_temp_sock))); + $this->_data_close(); + return false; + } + } + if(is_resource($fp)) { + while(!feof($fp)) { + $block=fread($fp, $this->_ftp_buff_size); + if(!$this->_data_write_block($mode, $block)) return false; + } + } elseif(!$this->_data_write_block($mode, $fp)) return false; + return true; + } + + function _data_write_block($mode, $block) { + if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_remote], $block); + do { + if(($t=@socket_write($this->_ftp_temp_sock, $block))===FALSE) { + $this->PushError("_data_write","socket_write", socket_strerror(socket_last_error($this->_ftp_temp_sock))); + $this->_data_close(); + return FALSE; + } + $block=substr($block, $t); + } while(!empty($block)); + return true; + } + + function _data_close() { + @socket_close($this->_ftp_temp_sock); + @socket_close($this->_ftp_data_sock); + $this->SendMSG("Disconnected data from remote host"); + return TRUE; + } + + function _quit() { + if($this->_connected) { + @socket_close($this->_ftp_control_sock); + $this->_connected=false; + $this->SendMSG("Socket closed"); + } + } +} +?> diff --git a/src/wp-admin/includes/class-ftp.php b/src/wp-admin/includes/class-ftp.php new file mode 100644 index 0000000..1e35e74 --- /dev/null +++ b/src/wp-admin/includes/class-ftp.php @@ -0,0 +1,906 @@ +__construct($port_mode); + } + + function __construct($port_mode=FALSE, $verb=FALSE, $le=FALSE) { + $this->LocalEcho=$le; + $this->Verbose=$verb; + $this->_lastaction=NULL; + $this->_error_array=array(); + $this->_eol_code=array(FTP_OS_Unix=>"\n", FTP_OS_Mac=>"\r", FTP_OS_Windows=>"\r\n"); + $this->AuthorizedTransferMode=array(FTP_AUTOASCII, FTP_ASCII, FTP_BINARY); + $this->OS_FullName=array(FTP_OS_Unix => 'UNIX', FTP_OS_Windows => 'WINDOWS', FTP_OS_Mac => 'MACOS'); + $this->AutoAsciiExt=array("ASP","BAT","C","CPP","CSS","CSV","JS","H","HTM","HTML","SHTML","INI","LOG","PHP3","PHTML","PL","PERL","SH","SQL","TXT"); + $this->_port_available=($port_mode==TRUE); + $this->SendMSG("Staring FTP client class".($this->_port_available?"":" without PORT mode support")); + $this->_connected=FALSE; + $this->_ready=FALSE; + $this->_can_restore=FALSE; + $this->_code=0; + $this->_message=""; + $this->_ftp_buff_size=4096; + $this->_curtype=NULL; + $this->SetUmask(0022); + $this->SetType(FTP_AUTOASCII); + $this->SetTimeout(30); + $this->Passive(!$this->_port_available); + $this->_login="anonymous"; + $this->_password="anon@ftp.com"; + $this->_features=array(); + $this->OS_local=FTP_OS_Unix; + $this->OS_remote=FTP_OS_Unix; + $this->features=array(); + if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $this->OS_local=FTP_OS_Windows; + elseif(strtoupper(substr(PHP_OS, 0, 3)) === 'MAC') $this->OS_local=FTP_OS_Mac; + } + +// +// +// + + function parselisting($line) { + $is_windows = ($this->OS_remote == FTP_OS_Windows); + if ($is_windows && preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|) +(.+)/",$line,$lucifer)) { + $b = array(); + if ($lucifer[3]<70) { $lucifer[3]+=2000; } else { $lucifer[3]+=1900; } // 4digit year fix + $b['isdir'] = ($lucifer[7]==""); + if ( $b['isdir'] ) + $b['type'] = 'd'; + else + $b['type'] = 'f'; + $b['size'] = $lucifer[7]; + $b['month'] = $lucifer[1]; + $b['day'] = $lucifer[2]; + $b['year'] = $lucifer[3]; + $b['hour'] = $lucifer[4]; + $b['minute'] = $lucifer[5]; + $b['time'] = @mktime($lucifer[4]+(strcasecmp($lucifer[6],"PM")==0?12:0),$lucifer[5],0,$lucifer[1],$lucifer[2],$lucifer[3]); + $b['am/pm'] = $lucifer[6]; + $b['name'] = $lucifer[8]; + } else if (!$is_windows && $lucifer=preg_split("/[ ]/",$line,9,PREG_SPLIT_NO_EMPTY)) { + //echo $line."\n"; + $lcount=count($lucifer); + if ($lcount<8) return ''; + $b = array(); + $b['isdir'] = $lucifer[0]{0} === "d"; + $b['islink'] = $lucifer[0]{0} === "l"; + if ( $b['isdir'] ) + $b['type'] = 'd'; + elseif ( $b['islink'] ) + $b['type'] = 'l'; + else + $b['type'] = 'f'; + $b['perms'] = $lucifer[0]; + $b['number'] = $lucifer[1]; + $b['owner'] = $lucifer[2]; + $b['group'] = $lucifer[3]; + $b['size'] = $lucifer[4]; + if ($lcount==8) { + sscanf($lucifer[5],"%d-%d-%d",$b['year'],$b['month'],$b['day']); + sscanf($lucifer[6],"%d:%d",$b['hour'],$b['minute']); + $b['time'] = @mktime($b['hour'],$b['minute'],0,$b['month'],$b['day'],$b['year']); + $b['name'] = $lucifer[7]; + } else { + $b['month'] = $lucifer[5]; + $b['day'] = $lucifer[6]; + if (preg_match("/([0-9]{2}):([0-9]{2})/",$lucifer[7],$l2)) { + $b['year'] = date("Y"); + $b['hour'] = $l2[1]; + $b['minute'] = $l2[2]; + } else { + $b['year'] = $lucifer[7]; + $b['hour'] = 0; + $b['minute'] = 0; + } + $b['time'] = strtotime(sprintf("%d %s %d %02d:%02d",$b['day'],$b['month'],$b['year'],$b['hour'],$b['minute'])); + $b['name'] = $lucifer[8]; + } + } + + return $b; + } + + function SendMSG($message = "", $crlf=true) { + if ($this->Verbose) { + echo $message.($crlf?CRLF:""); + flush(); + } + return TRUE; + } + + function SetType($mode=FTP_AUTOASCII) { + if(!in_array($mode, $this->AuthorizedTransferMode)) { + $this->SendMSG("Wrong type"); + return FALSE; + } + $this->_type=$mode; + $this->SendMSG("Transfer type: ".($this->_type==FTP_BINARY?"binary":($this->_type==FTP_ASCII?"ASCII":"auto ASCII") ) ); + return TRUE; + } + + function _settype($mode=FTP_ASCII) { + if($this->_ready) { + if($mode==FTP_BINARY) { + if($this->_curtype!=FTP_BINARY) { + if(!$this->_exec("TYPE I", "SetType")) return FALSE; + $this->_curtype=FTP_BINARY; + } + } elseif($this->_curtype!=FTP_ASCII) { + if(!$this->_exec("TYPE A", "SetType")) return FALSE; + $this->_curtype=FTP_ASCII; + } + } else return FALSE; + return TRUE; + } + + function Passive($pasv=NULL) { + if(is_null($pasv)) $this->_passive=!$this->_passive; + else $this->_passive=$pasv; + if(!$this->_port_available and !$this->_passive) { + $this->SendMSG("Only passive connections available!"); + $this->_passive=TRUE; + return FALSE; + } + $this->SendMSG("Passive mode ".($this->_passive?"on":"off")); + return TRUE; + } + + function SetServer($host, $port=21, $reconnect=true) { + if(!is_long($port)) { + $this->verbose=true; + $this->SendMSG("Incorrect port syntax"); + return FALSE; + } else { + $ip=@gethostbyname($host); + $dns=@gethostbyaddr($host); + if(!$ip) $ip=$host; + if(!$dns) $dns=$host; + // Validate the IPAddress PHP4 returns -1 for invalid, PHP5 false + // -1 === "255.255.255.255" which is the broadcast address which is also going to be invalid + $ipaslong = ip2long($ip); + if ( ($ipaslong == false) || ($ipaslong === -1) ) { + $this->SendMSG("Wrong host name/address \"".$host."\""); + return FALSE; + } + $this->_host=$ip; + $this->_fullhost=$dns; + $this->_port=$port; + $this->_dataport=$port-1; + } + $this->SendMSG("Host \"".$this->_fullhost."(".$this->_host."):".$this->_port."\""); + if($reconnect){ + if($this->_connected) { + $this->SendMSG("Reconnecting"); + if(!$this->quit(FTP_FORCE)) return FALSE; + if(!$this->connect()) return FALSE; + } + } + return TRUE; + } + + function SetUmask($umask=0022) { + $this->_umask=$umask; + umask($this->_umask); + $this->SendMSG("UMASK 0".decoct($this->_umask)); + return TRUE; + } + + function SetTimeout($timeout=30) { + $this->_timeout=$timeout; + $this->SendMSG("Timeout ".$this->_timeout); + if($this->_connected) + if(!$this->_settimeout($this->_ftp_control_sock)) return FALSE; + return TRUE; + } + + function connect($server=NULL) { + if(!empty($server)) { + if(!$this->SetServer($server)) return false; + } + if($this->_ready) return true; + $this->SendMsg('Local OS : '.$this->OS_FullName[$this->OS_local]); + if(!($this->_ftp_control_sock = $this->_connect($this->_host, $this->_port))) { + $this->SendMSG("Error : Cannot connect to remote host \"".$this->_fullhost." :".$this->_port."\""); + return FALSE; + } + $this->SendMSG("Connected to remote host \"".$this->_fullhost.":".$this->_port."\". Waiting for greeting."); + do { + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + $this->_lastaction=time(); + } while($this->_code<200); + $this->_ready=true; + $syst=$this->systype(); + if(!$syst) $this->SendMSG("Can't detect remote OS"); + else { + if(preg_match("/win|dos|novell/i", $syst[0])) $this->OS_remote=FTP_OS_Windows; + elseif(preg_match("/os/i", $syst[0])) $this->OS_remote=FTP_OS_Mac; + elseif(preg_match("/(li|u)nix/i", $syst[0])) $this->OS_remote=FTP_OS_Unix; + else $this->OS_remote=FTP_OS_Mac; + $this->SendMSG("Remote OS: ".$this->OS_FullName[$this->OS_remote]); + } + if(!$this->features()) $this->SendMSG("Can't get features list. All supported - disabled"); + else $this->SendMSG("Supported features: ".implode(", ", array_keys($this->_features))); + return TRUE; + } + + function quit($force=false) { + if($this->_ready) { + if(!$this->_exec("QUIT") and !$force) return FALSE; + if(!$this->_checkCode() and !$force) return FALSE; + $this->_ready=false; + $this->SendMSG("Session finished"); + } + $this->_quit(); + return TRUE; + } + + function login($user=NULL, $pass=NULL) { + if(!is_null($user)) $this->_login=$user; + else $this->_login="anonymous"; + if(!is_null($pass)) $this->_password=$pass; + else $this->_password="anon@anon.com"; + if(!$this->_exec("USER ".$this->_login, "login")) return FALSE; + if(!$this->_checkCode()) return FALSE; + if($this->_code!=230) { + if(!$this->_exec((($this->_code==331)?"PASS ":"ACCT ").$this->_password, "login")) return FALSE; + if(!$this->_checkCode()) return FALSE; + } + $this->SendMSG("Authentication succeeded"); + if(empty($this->_features)) { + if(!$this->features()) $this->SendMSG("Can't get features list. All supported - disabled"); + else $this->SendMSG("Supported features: ".implode(", ", array_keys($this->_features))); + } + return TRUE; + } + + function pwd() { + if(!$this->_exec("PWD", "pwd")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return ereg_replace("^[0-9]{3} \"(.+)\".+", "\\1", $this->_message); + } + + function cdup() { + if(!$this->_exec("CDUP", "cdup")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return true; + } + + function chdir($pathname) { + if(!$this->_exec("CWD ".$pathname, "chdir")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function rmdir($pathname) { + if(!$this->_exec("RMD ".$pathname, "rmdir")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function mkdir($pathname) { + if(!$this->_exec("MKD ".$pathname, "mkdir")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function rename($from, $to) { + if(!$this->_exec("RNFR ".$from, "rename")) return FALSE; + if(!$this->_checkCode()) return FALSE; + if($this->_code==350) { + if(!$this->_exec("RNTO ".$to, "rename")) return FALSE; + if(!$this->_checkCode()) return FALSE; + } else return FALSE; + return TRUE; + } + + function filesize($pathname) { + if(!isset($this->_features["SIZE"])) { + $this->PushError("filesize", "not supported by server"); + return FALSE; + } + if(!$this->_exec("SIZE ".$pathname, "filesize")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return ereg_replace("^[0-9]{3} ([0-9]+)".CRLF, "\\1", $this->_message); + } + + function abort() { + if(!$this->_exec("ABOR", "abort")) return FALSE; + if(!$this->_checkCode()) { + if($this->_code!=426) return FALSE; + if(!$this->_readmsg("abort")) return FALSE; + if(!$this->_checkCode()) return FALSE; + } + return true; + } + + function mdtm($pathname) { + if(!isset($this->_features["MDTM"])) { + $this->PushError("mdtm", "not supported by server"); + return FALSE; + } + if(!$this->_exec("MDTM ".$pathname, "mdtm")) return FALSE; + if(!$this->_checkCode()) return FALSE; + $mdtm = ereg_replace("^[0-9]{3} ([0-9]+)".CRLF, "\\1", $this->_message); + $date = sscanf($mdtm, "%4d%2d%2d%2d%2d%2d"); + $timestamp = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]); + return $timestamp; + } + + function systype() { + if(!$this->_exec("SYST", "systype")) return FALSE; + if(!$this->_checkCode()) return FALSE; + $DATA = explode(" ", $this->_message); + return array($DATA[1], $DATA[3]); + } + + function delete($pathname) { + if(!$this->_exec("DELE ".$pathname, "delete")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function site($command, $fnction="site") { + if(!$this->_exec("SITE ".$command, $fnction)) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function chmod($pathname, $mode) { + if(!$this->site( sprintf('CHMOD %o %s', $mode, $pathname), "chmod")) return FALSE; + return TRUE; + } + + function restore($from) { + if(!isset($this->_features["REST"])) { + $this->PushError("restore", "not supported by server"); + return FALSE; + } + if($this->_curtype!=FTP_BINARY) { + $this->PushError("restore", "can't restore in ASCII mode"); + return FALSE; + } + if(!$this->_exec("REST ".$from, "resore")) return FALSE; + if(!$this->_checkCode()) return FALSE; + return TRUE; + } + + function features() { + if(!$this->_exec("FEAT", "features")) return FALSE; + if(!$this->_checkCode()) return FALSE; + $f=preg_split("/[".CRLF."]+/", preg_replace("/[0-9]{3}[ -].*[".CRLF."]+/", "", $this->_message), -1, PREG_SPLIT_NO_EMPTY); + $this->_features=array(); + foreach($f as $k=>$v) { + $v=explode(" ", trim($v)); + $this->_features[array_shift($v)]=$v; + } + return true; + } + + function rawlist($pathname="", $arg="") { + return $this->_list(($arg?" ".$arg:"").($pathname?" ".$pathname:""), "LIST", "rawlist"); + } + + function nlist($pathname="") { + return $this->_list(($arg?" ".$arg:"").($pathname?" ".$pathname:""), "NLST", "nlist"); + } + + function is_exists($pathname) { + return $this->file_exists($pathname); + } + + function file_exists($pathname) { + $exists=true; + if(!$this->_exec("RNFR ".$pathname, "rename")) $exists=FALSE; + else { + if(!$this->_checkCode()) $exists=FALSE; + $this->abort(); + } + if($exists) $this->SendMSG("Remote file ".$pathname." exists"); + else $this->SendMSG("Remote file ".$pathname." does not exist"); + return $exists; + } + + function fget($fp, $remotefile,$rest=0) { + if($this->_can_restore and $rest!=0) fseek($fp, $rest); + $pi=pathinfo($remotefile); + if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; + else $mode=FTP_BINARY; + if(!$this->_data_prepare($mode)) { + return FALSE; + } + if($this->_can_restore and $rest!=0) $this->restore($rest); + if(!$this->_exec("RETR ".$remotefile, "get")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $out=$this->_data_read($mode, $fp); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + return $out; + } + + function get($remotefile, $localfile=NULL, $rest=0) { + if(is_null($localfile)) $localfile=$remotefile; + if (@file_exists($localfile)) $this->SendMSG("Warning : local file will be overwritten"); + $fp = @fopen($localfile, "w"); + if (!$fp) { + $this->PushError("get","can't open local file", "Cannot create \"".$localfile."\""); + return FALSE; + } + if($this->_can_restore and $rest!=0) fseek($fp, $rest); + $pi=pathinfo($remotefile); + if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; + else $mode=FTP_BINARY; + if(!$this->_data_prepare($mode)) { + fclose($fp); + return FALSE; + } + if($this->_can_restore and $rest!=0) $this->restore($rest); + if(!$this->_exec("RETR ".$remotefile, "get")) { + $this->_data_close(); + fclose($fp); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + fclose($fp); + return FALSE; + } + $out=$this->_data_read($mode, $fp); + fclose($fp); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + return $out; + } + + function fput($remotefile, $fp) { + if($this->_can_restore and $rest!=0) fseek($fp, $rest); + $pi=pathinfo($remotefile); + if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; + else $mode=FTP_BINARY; + if(!$this->_data_prepare($mode)) { + return FALSE; + } + if($this->_can_restore and $rest!=0) $this->restore($rest); + if(!$this->_exec("STOR ".$remotefile, "put")) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $ret=$this->_data_write($mode, $fp); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + return $ret; + } + + function put($localfile, $remotefile=NULL, $rest=0) { + if(is_null($remotefile)) $remotefile=$localfile; + if (!file_exists($localfile)) { + $this->PushError("put","can't open local file", "No such file or directory \"".$localfile."\""); + return FALSE; + } + $fp = @fopen($localfile, "r"); + + if (!$fp) { + $this->PushError("put","can't open local file", "Cannot read file \"".$localfile."\""); + return FALSE; + } + if($this->_can_restore and $rest!=0) fseek($fp, $rest); + $pi=pathinfo($localfile); + if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; + else $mode=FTP_BINARY; + if(!$this->_data_prepare($mode)) { + fclose($fp); + return FALSE; + } + if($this->_can_restore and $rest!=0) $this->restore($rest); + if(!$this->_exec("STOR ".$remotefile, "put")) { + $this->_data_close(); + fclose($fp); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + fclose($fp); + return FALSE; + } + $ret=$this->_data_write($mode, $fp); + fclose($fp); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + return $ret; + } + + function mput($local=".", $remote=NULL, $continious=false) { + $local=realpath($local); + if(!@file_exists($local)) { + $this->PushError("mput","can't open local folder", "Cannot stat folder \"".$local."\""); + return FALSE; + } + if(!is_dir($local)) return $this->put($local, $remote); + if(empty($remote)) $remote="."; + elseif(!$this->file_exists($remote) and !$this->mkdir($remote)) return FALSE; + if($handle = opendir($local)) { + $list=array(); + while (false !== ($file = readdir($handle))) { + if ($file != "." && $file != "..") $list[]=$file; + } + closedir($handle); + } else { + $this->PushError("mput","can't open local folder", "Cannot read folder \"".$local."\""); + return FALSE; + } + if(empty($list)) return TRUE; + $ret=true; + foreach($list as $el) { + if(is_dir($local."/".$el)) $t=$this->mput($local."/".$el, $remote."/".$el); + else $t=$this->put($local."/".$el, $remote."/".$el); + if(!$t) { + $ret=FALSE; + if(!$continious) break; + } + } + return $ret; + + } + + function mget($remote, $local=".", $continious=false) { + $list=$this->rawlist($remote, "-lA"); + if($list===false) { + $this->PushError("mget","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents"); + return FALSE; + } + if(empty($list)) return true; + if(!@file_exists($local)) { + if(!@mkdir($local)) { + $this->PushError("mget","can't create local folder", "Cannot create folder \"".$local."\""); + return FALSE; + } + } + foreach($list as $k=>$v) { + $list[$k]=$this->parselisting($v); + if($list[$k]["name"]=="." or $list[$k]["name"]=="..") unset($list[$k]); + } + $ret=true; + foreach($list as $el) { + if($el["type"]=="d") { + if(!$this->mget($remote."/".$el["name"], $local."/".$el["name"], $continious)) { + $this->PushError("mget", "can't copy folder", "Can't copy remote folder \"".$remote."/".$el["name"]."\" to local \"".$local."/".$el["name"]."\""); + $ret=false; + if(!$continious) break; + } + } else { + if(!$this->get($remote."/".$el["name"], $local."/".$el["name"])) { + $this->PushError("mget", "can't copy file", "Can't copy remote file \"".$remote."/".$el["name"]."\" to local \"".$local."/".$el["name"]."\""); + $ret=false; + if(!$continious) break; + } + } + @chmod($local."/".$el["name"], $el["perms"]); + $t=strtotime($el["date"]); + if($t!==-1 and $t!==false) @touch($local."/".$el["name"], $t); + } + return $ret; + } + + function mdel($remote, $continious=false) { + $list=$this->rawlist($remote, "-la"); + if($list===false) { + $this->PushError("mdel","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents"); + return false; + } + + foreach($list as $k=>$v) { + $list[$k]=$this->parselisting($v); + if($list[$k]["name"]=="." or $list[$k]["name"]=="..") unset($list[$k]); + } + $ret=true; + + foreach($list as $el) { + if ( empty($el) ) + continue; + + if($el["type"]=="d") { + if(!$this->mdel($remote."/".$el["name"], $continious)) { + $ret=false; + if(!$continious) break; + } + } else { + if (!$this->delete($remote."/".$el["name"])) { + $this->PushError("mdel", "can't delete file", "Can't delete remote file \"".$remote."/".$el["name"]."\""); + $ret=false; + if(!$continious) break; + } + } + } + + if(!$this->rmdir($remote)) { + $this->PushError("mdel", "can't delete folder", "Can't delete remote folder \"".$remote."/".$el["name"]."\""); + $ret=false; + } + return $ret; + } + + function mmkdir($dir, $mode = 0777) { + if(empty($dir)) return FALSE; + if($this->is_exists($dir) or $dir == "/" ) return TRUE; + if(!$this->mmkdir(dirname($dir), $mode)) return false; + $r=$this->mkdir($dir, $mode); + $this->chmod($dir,$mode); + return $r; + } + + function glob($pattern, $handle=NULL) { + $path=$output=null; + if(PHP_OS=='WIN32') $slash='\\'; + else $slash='/'; + $lastpos=strrpos($pattern,$slash); + if(!($lastpos===false)) { + $path=substr($pattern,0,-$lastpos-1); + $pattern=substr($pattern,$lastpos); + } else $path=getcwd(); + if(is_array($handle) and !empty($handle)) { + while($dir=each($handle)) { + if($this->glob_pattern_match($pattern,$dir)) + $output[]=$dir; + } + } else { + $handle=@opendir($path); + if($handle===false) return false; + while($dir=readdir($handle)) { + if($this->glob_pattern_match($pattern,$dir)) + $output[]=$dir; + } + closedir($handle); + } + if(is_array($output)) return $output; + return false; + } + + function glob_pattern_match($pattern,$string) { + $out=null; + $chunks=explode(';',$pattern); + foreach($chunks as $pattern) { + $escape=array('$','^','.','{','}','(',')','[',']','|'); + while(strpos($pattern,'**')!==false) + $pattern=str_replace('**','*',$pattern); + foreach($escape as $probe) + $pattern=str_replace($probe,"\\$probe",$pattern); + $pattern=str_replace('?*','*', + str_replace('*?','*', + str_replace('*',".*", + str_replace('?','.{1,1}',$pattern)))); + $out[]=$pattern; + } + if(count($out)==1) return($this->glob_regexp("^$out[0]$",$string)); + else { + foreach($out as $tester) + if($this->my_regexp("^$tester$",$string)) return true; + } + return false; + } + + function glob_regexp($pattern,$probe) { + $sensitive=(PHP_OS!='WIN32'); + return ($sensitive? + ereg($pattern,$probe): + eregi($pattern,$probe) + ); + } + + function dirlist($remote) { + $list=$this->rawlist($remote, "-la"); + if($list===false) { + $this->PushError("dirlist","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents"); + return false; + } + + $dirlist = array(); + foreach($list as $k=>$v) { + $entry=$this->parselisting($v); + if ( empty($entry) ) + continue; + + if($entry["name"]=="." or $entry["name"]=="..") + continue; + + $dirlist[$entry['name']] = $entry; + } + + return $dirlist; + } +// +// +// + function _checkCode() { + return ($this->_code<400 and $this->_code>0); + } + + function _list($arg="", $cmd="LIST", $fnction="_list") { + if(!$this->_data_prepare()) return false; + if(!$this->_exec($cmd.$arg, $fnction)) { + $this->_data_close(); + return FALSE; + } + if(!$this->_checkCode()) { + $this->_data_close(); + return FALSE; + } + $out=""; + if($this->_code<200) { + $out=$this->_data_read(); + $this->_data_close(); + if(!$this->_readmsg()) return FALSE; + if(!$this->_checkCode()) return FALSE; + if($out === FALSE ) return FALSE; + $out=preg_split("/[".CRLF."]+/", $out, -1, PREG_SPLIT_NO_EMPTY); +// $this->SendMSG(implode($this->_eol_code[$this->OS_local], $out)); + } + return $out; + } + +// +// +// +// Gnre une erreur pour traitement externe la classe + function PushError($fctname,$msg,$desc=false){ + $error=array(); + $error['time']=time(); + $error['fctname']=$fctname; + $error['msg']=$msg; + $error['desc']=$desc; + if($desc) $tmp=' ('.$desc.')'; else $tmp=''; + $this->SendMSG($fctname.': '.$msg.$tmp); + return(array_push($this->_error_array,$error)); + } + +// Rcupre une erreur externe + function PopError(){ + if(count($this->_error_array)) return(array_pop($this->_error_array)); + else return(false); + } +} + +$mod_sockets=TRUE; +if (!extension_loaded('sockets')) { + $prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : ''; + if(!@dl($prefix . 'sockets.' . PHP_SHLIB_SUFFIX)) $mod_sockets=FALSE; +} + +require_once "class-ftp-".($mod_sockets?"sockets":"pure").".php"; +?> diff --git a/src/wp-admin/includes/class-pclzip.php b/src/wp-admin/includes/class-pclzip.php new file mode 100644 index 0000000..5e6a619 --- /dev/null +++ b/src/wp-admin/includes/class-pclzip.php @@ -0,0 +1,5687 @@ +zipname = $p_zipname; + $this->zip_fd = 0; + $this->magic_quotes_status = -1; + + // ----- Return + return; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // create($p_filelist, $p_add_dir="", $p_remove_dir="") + // create($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two different synopsis. The first one is historical. + // This method creates a Zip Archive. The Zip file is created in the + // filesystem. The files and directories indicated in $p_filelist + // are added in the archive. See the parameters description for the + // supported format of $p_filelist. + // When a directory is in the list, the directory and its content is added + // in the archive. + // In this synopsis, the function takes an optional variable list of + // options. See bellow the supported options. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_COMMENT : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function create($p_filelist) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove from the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional', + PCLZIP_OPT_COMMENT => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + //, PCLZIP_OPT_CRYPT => 'optional' + )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; + } + else if ($v_size > 2) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, + "Invalid number / type of arguments"); + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Init + $v_string_list = array(); + $v_att_list = array(); + $v_filedescr_list = array(); + $p_result_list = array(); + + // ----- Look if the $p_filelist is really an array + if (is_array($p_filelist)) { + + // ----- Look if the first element is also an array + // This will mean that this is a file description entry + if (isset($p_filelist[0]) && is_array($p_filelist[0])) { + $v_att_list = $p_filelist; + } + + // ----- The list is a list of string names + else { + $v_string_list = $p_filelist; + } + } + + // ----- Look if the $p_filelist is a string + else if (is_string($p_filelist)) { + // ----- Create a list from the string + $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); + } + + // ----- Invalid variable type for $p_filelist + else { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); + return 0; + } + + // ----- Reformat the string list + if (sizeof($v_string_list) != 0) { + foreach ($v_string_list as $v_string) { + if ($v_string != '') { + $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; + } + else { + } + } + } + + // ----- For each file in the list check the attributes + $v_supported_attributes + = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' + ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' + ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' + ,PCLZIP_ATT_FILE_MTIME => 'optional' + ,PCLZIP_ATT_FILE_CONTENT => 'optional' + ,PCLZIP_ATT_FILE_COMMENT => 'optional' + ); + foreach ($v_att_list as $v_entry) { + $v_result = $this->privFileDescrParseAtt($v_entry, + $v_filedescr_list[], + $v_options, + $v_supported_attributes); + if ($v_result != 1) { + return 0; + } + } + + // ----- Expand the filelist (expand directories) + $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Call the create fct + $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Return + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // add($p_filelist, $p_add_dir="", $p_remove_dir="") + // add($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two synopsis. The first one is historical. + // This methods add the list of files in an existing archive. + // If a file with the same name already exists, it is added at the end of the + // archive, the first one is still present. + // If the archive does not exist, it is created. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_COMMENT : + // PCLZIP_OPT_ADD_COMMENT : + // PCLZIP_OPT_PREPEND_COMMENT : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function add($p_filelist) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional', + PCLZIP_OPT_COMMENT => 'optional', + PCLZIP_OPT_ADD_COMMENT => 'optional', + PCLZIP_OPT_PREPEND_COMMENT => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + //, PCLZIP_OPT_CRYPT => 'optional' + )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Init + $v_string_list = array(); + $v_att_list = array(); + $v_filedescr_list = array(); + $p_result_list = array(); + + // ----- Look if the $p_filelist is really an array + if (is_array($p_filelist)) { + + // ----- Look if the first element is also an array + // This will mean that this is a file description entry + if (isset($p_filelist[0]) && is_array($p_filelist[0])) { + $v_att_list = $p_filelist; + } + + // ----- The list is a list of string names + else { + $v_string_list = $p_filelist; + } + } + + // ----- Look if the $p_filelist is a string + else if (is_string($p_filelist)) { + // ----- Create a list from the string + $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); + } + + // ----- Invalid variable type for $p_filelist + else { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist"); + return 0; + } + + // ----- Reformat the string list + if (sizeof($v_string_list) != 0) { + foreach ($v_string_list as $v_string) { + $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; + } + } + + // ----- For each file in the list check the attributes + $v_supported_attributes + = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' + ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' + ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' + ,PCLZIP_ATT_FILE_MTIME => 'optional' + ,PCLZIP_ATT_FILE_CONTENT => 'optional' + ,PCLZIP_ATT_FILE_COMMENT => 'optional' + ); + foreach ($v_att_list as $v_entry) { + $v_result = $this->privFileDescrParseAtt($v_entry, + $v_filedescr_list[], + $v_options, + $v_supported_attributes); + if ($v_result != 1) { + return 0; + } + } + + // ----- Expand the filelist (expand directories) + $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Call the create fct + $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Return + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : listContent() + // Description : + // This public method, gives the list of the files and directories, with their + // properties. + // The properties of each entries in the list are (used also in other functions) : + // filename : Name of the file. For a create or add action it is the filename + // given by the user. For an extract function it is the filename + // of the extracted file. + // stored_filename : Name of the file / directory stored in the archive. + // size : Size of the stored file. + // compressed_size : Size of the file's data compressed in the archive + // (without the headers overhead) + // mtime : Last known modification date of the file (UNIX timestamp) + // comment : Comment associated with the file + // folder : true | false + // index : index of the file in the archive + // status : status of the action (depending of the action) : + // Values are : + // ok : OK ! + // filtered : the file / dir is not extracted (filtered by user) + // already_a_directory : the file can not be extracted because a + // directory with the same name already exists + // write_protected : the file can not be extracted because a file + // with the same name already exists and is + // write protected + // newer_exist : the file was not extracted because a newer file exists + // path_creation_fail : the file is not extracted because the folder + // does not exist and can not be created + // write_error : the file was not extracted because there was a + // error while writing the file + // read_error : the file was not extracted because there was a error + // while reading the file + // invalid_header : the file was not extracted because of an archive + // format error (bad file header) + // Note that each time a method can continue operating when there + // is an action error on a file, the error is only logged in the file status. + // Return Values : + // 0 on an unrecoverable failure, + // The list of the files in the archive. + // -------------------------------------------------------------------------------- + function listContent() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Call the extracting fct + $p_list = array(); + if (($v_result = $this->privList($p_list)) != 1) + { + unset($p_list); + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // extract($p_path="./", $p_remove_path="") + // extract([$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method extract all the files / directories from the archive to the + // folder indicated in $p_path. + // If you want to ignore the 'root' part of path of the memorized files + // you can indicate this in the optional $p_remove_path parameter. + // By default, if a newer file with the same name already exists, the + // file is not extracted. + // + // If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions + // are used, the path indicated in PCLZIP_OPT_ADD_PATH is append + // at the end of the path value of PCLZIP_OPT_PATH. + // Parameters : + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 or a negative value on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function extract() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); +// $v_path = "./"; + $v_path = ''; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional', + PCLZIP_OPT_REPLACE_NEWER => 'optional' + ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' + ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Trace + + // ----- Call the extracting fct + $p_list = array(); + $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, + $v_remove_all_path, $v_options); + if ($v_result < 1) { + unset($p_list); + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + + // -------------------------------------------------------------------------------- + // Function : + // extractByIndex($p_index, $p_path="./", $p_remove_path="") + // extractByIndex($p_index, [$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method is doing a partial extract of the archive. + // The extracted files or folders are identified by their index in the + // archive (from 0 to n). + // Note that if the index identify a folder, only the folder entry is + // extracted, not all the files included in the archive. + // Parameters : + // $p_index : A single index (integer) or a string of indexes of files to + // extract. The form of the string is "0,4-6,8-12" with only numbers + // and '-' for range or ',' to separate ranges. No spaces or ';' + // are allowed. + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and + // not as files. + // The resulting content is in a new field 'content' in the file + // structure. + // This option must be used alone (any other options are ignored). + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + //function extractByIndex($p_index, options...) + function extractByIndex($p_index) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); +// $v_path = "./"; + $v_path = ''; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_REPLACE_NEWER => 'optional' + ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' + ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + } + else { + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Trace + + // ----- Trick + // Here I want to reuse extractByRule(), so I need to parse the $p_index + // with privParseOptions() + $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index); + $v_options_trick = array(); + $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, + array (PCLZIP_OPT_BY_INDEX => 'optional' )); + if ($v_result != 1) { + return 0; + } + $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Call the extracting fct + if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) { + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // delete([$p_option, $p_option_value, ...]) + // Description : + // This method removes files from the archive. + // If no parameters are given, then all the archive is emptied. + // Parameters : + // None or optional arguments. + // Options : + // PCLZIP_OPT_BY_INDEX : + // PCLZIP_OPT_BY_NAME : + // PCLZIP_OPT_BY_EREG : + // PCLZIP_OPT_BY_PREG : + // Return Values : + // 0 on failure, + // The list of the files which are still present in the archive. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function delete() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional' )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Call the delete fct + $v_list = array(); + if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) { + $this->privSwapBackMagicQuotes(); + unset($v_list); + return(0); + } + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : deleteByIndex() + // Description : + // ***** Deprecated ***** + // delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered. + // -------------------------------------------------------------------------------- + function deleteByIndex($p_index) + { + + $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : properties() + // Description : + // This method gives the properties of the archive. + // The properties are : + // nb : Number of files in the archive + // comment : Comment associated with the archive file + // status : not_exist, ok + // Parameters : + // None + // Return Values : + // 0 on failure, + // An array with the archive properties. + // -------------------------------------------------------------------------------- + function properties() + { + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + $this->privSwapBackMagicQuotes(); + return(0); + } + + // ----- Default properties + $v_prop = array(); + $v_prop['comment'] = ''; + $v_prop['nb'] = 0; + $v_prop['status'] = 'not_exist'; + + // ----- Look if file exists + if (@is_file($this->zipname)) + { + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) + { + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); + + // ----- Return + return 0; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privSwapBackMagicQuotes(); + return 0; + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Set the user attributes + $v_prop['comment'] = $v_central_dir['comment']; + $v_prop['nb'] = $v_central_dir['entries']; + $v_prop['status'] = 'ok'; + } + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_prop; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : duplicate() + // Description : + // This method creates an archive by copying the content of an other one. If + // the archive already exist, it is replaced by the new one without any warning. + // Parameters : + // $p_archive : The filename of a valid archive, or + // a valid PclZip object. + // Return Values : + // 1 on success. + // 0 or a negative value on error (error code). + // -------------------------------------------------------------------------------- + function duplicate($p_archive) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the $p_archive is a PclZip object + if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) + { + + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive->zipname); + } + + // ----- Look if the $p_archive is a string (so a filename) + else if (is_string($p_archive)) + { + + // ----- Check that $p_archive is a valid zip file + // TBC : Should also check the archive format + if (!is_file($p_archive)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'"); + $v_result = PCLZIP_ERR_MISSING_FILE; + } + else { + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive); + } + } + + // ----- Invalid variable + else + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : merge() + // Description : + // This method merge the $p_archive_to_add archive at the end of the current + // one ($this). + // If the archive ($this) does not exist, the merge becomes a duplicate. + // If the $p_archive_to_add archive does not exist, the merge is a success. + // Parameters : + // $p_archive_to_add : It can be directly the filename of a valid zip archive, + // or a PclZip object archive. + // Return Values : + // 1 on success, + // 0 or negative values on error (see below). + // -------------------------------------------------------------------------------- + function merge($p_archive_to_add) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Look if the $p_archive_to_add is a PclZip object + if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) + { + + // ----- Merge the archive + $v_result = $this->privMerge($p_archive_to_add); + } + + // ----- Look if the $p_archive_to_add is a string (so a filename) + else if (is_string($p_archive_to_add)) + { + + // ----- Create a temporary archive + $v_object_archive = new PclZip($p_archive_to_add); + + // ----- Merge the archive + $v_result = $this->privMerge($v_object_archive); + } + + // ----- Invalid variable + else + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + + + // -------------------------------------------------------------------------------- + // Function : errorCode() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorCode() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return(PclErrorCode()); + } + else { + return($this->error_code); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorName() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorName($p_with_code=false) + { + $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR', + PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL', + PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL', + PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER', + PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE', + PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG', + PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP', + PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE', + PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL', + PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION', + PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT', + PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL', + PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL', + PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM', + PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', + PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE', + PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE', + PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', + PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION' + ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE' + ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION' + ); + + if (isset($v_name[$this->error_code])) { + $v_value = $v_name[$this->error_code]; + } + else { + $v_value = 'NoName'; + } + + if ($p_with_code) { + return($v_value.' ('.$this->error_code.')'); + } + else { + return($v_value); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorInfo() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorInfo($p_full=false) + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return(PclErrorString()); + } + else { + if ($p_full) { + return($this->errorName(true)." : ".$this->error_string); + } + else { + return($this->error_string." [code ".$this->error_code."]"); + } + } + } + // -------------------------------------------------------------------------------- + + +// -------------------------------------------------------------------------------- +// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS ***** +// ***** ***** +// ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY ***** +// -------------------------------------------------------------------------------- + + + + // -------------------------------------------------------------------------------- + // Function : privCheckFormat() + // Description : + // This method check that the archive exists and is a valid zip archive. + // Several level of check exists. (futur) + // Parameters : + // $p_level : Level of check. Default 0. + // 0 : Check the first bytes (magic codes) (default value)) + // 1 : 0 + Check the central directory (futur) + // 2 : 1 + Check each file header (futur) + // Return Values : + // true on success, + // false on error, the error code is set. + // -------------------------------------------------------------------------------- + function privCheckFormat($p_level=0) + { + $v_result = true; + + // ----- Reset the file system cache + clearstatcache(); + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the file exits + if (!is_file($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'"); + return(false); + } + + // ----- Check that the file is readeable + if (!is_readable($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'"); + return(false); + } + + // ----- Check the magic code + // TBC + + // ----- Check the central header + // TBC + + // ----- Check each file header + // TBC + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privParseOptions() + // Description : + // This internal methods reads the variable list of arguments ($p_options_list, + // $p_size) and generate an array with the options and values ($v_result_list). + // $v_requested_options contains the options that can be present and those that + // must be present. + // $v_requested_options is an array, with the option value as key, and 'optional', + // or 'mandatory' as value. + // Parameters : + // See above. + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false) + { + $v_result=1; + + // ----- Read the options + $i=0; + while ($i<$p_size) { + + // ----- Check if the option is supported + if (!isset($v_requested_options[$p_options_list[$i]])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for next option + switch ($p_options_list[$i]) { + // ----- Look for options that request a path value + case PCLZIP_OPT_PATH : + case PCLZIP_OPT_REMOVE_PATH : + case PCLZIP_OPT_ADD_PATH : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); + $i++; + break; + + case PCLZIP_OPT_TEMP_FILE_THRESHOLD : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + return PclZip::errorCode(); + } + + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); + return PclZip::errorCode(); + } + + // ----- Check the value + $v_value = $p_options_list[$i+1]; + if ((!is_integer($v_value)) || ($v_value<0)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + return PclZip::errorCode(); + } + + // ----- Get the value (and convert it in bytes) + $v_result_list[$p_options_list[$i]] = $v_value*1048576; + $i++; + break; + + case PCLZIP_OPT_TEMP_FILE_ON : + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); + return PclZip::errorCode(); + } + + $v_result_list[$p_options_list[$i]] = true; + break; + + case PCLZIP_OPT_TEMP_FILE_OFF : + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'"); + return PclZip::errorCode(); + } + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'"); + return PclZip::errorCode(); + } + + $v_result_list[$p_options_list[$i]] = true; + break; + + case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if ( is_string($p_options_list[$i+1]) + && ($p_options_list[$i+1] != '')) { + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); + $i++; + } + else { + } + break; + + // ----- Look for options that request an array of string for value + case PCLZIP_OPT_BY_NAME : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1]; + } + else if (is_array($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that request an EREG or PREG expression + case PCLZIP_OPT_BY_EREG : + // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG + // to PCLZIP_OPT_BY_PREG + $p_options_list[$i] = PCLZIP_OPT_BY_PREG; + case PCLZIP_OPT_BY_PREG : + //case PCLZIP_OPT_CRYPT : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that takes a string + case PCLZIP_OPT_COMMENT : + case PCLZIP_OPT_ADD_COMMENT : + case PCLZIP_OPT_PREPEND_COMMENT : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, + "Missing parameter value for option '" + .PclZipUtilOptionText($p_options_list[$i]) + ."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, + "Wrong parameter value for option '" + .PclZipUtilOptionText($p_options_list[$i]) + ."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that request an array of index + case PCLZIP_OPT_BY_INDEX : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_work_list = array(); + if (is_string($p_options_list[$i+1])) { + + // ----- Remove spaces + $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', ''); + + // ----- Parse items + $v_work_list = explode(",", $p_options_list[$i+1]); + } + else if (is_integer($p_options_list[$i+1])) { + $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1]; + } + else if (is_array($p_options_list[$i+1])) { + $v_work_list = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Reduce the index list + // each index item in the list must be a couple with a start and + // an end value : [0,3], [5-5], [8-10], ... + // ----- Check the format of each item + $v_sort_flag=false; + $v_sort_value=0; + for ($j=0; $j= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + $i++; + break; + + // ----- Look for options that request a call-back + case PCLZIP_CB_PRE_EXTRACT : + case PCLZIP_CB_POST_EXTRACT : + case PCLZIP_CB_PRE_ADD : + case PCLZIP_CB_POST_ADD : + /* for futur use + case PCLZIP_CB_PRE_DELETE : + case PCLZIP_CB_POST_DELETE : + case PCLZIP_CB_PRE_LIST : + case PCLZIP_CB_POST_LIST : + */ + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_function_name = $p_options_list[$i+1]; + + // ----- Check that the value is a valid existing function + if (!function_exists($v_function_name)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Set the attribute + $v_result_list[$p_options_list[$i]] = $v_function_name; + $i++; + break; + + default : + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, + "Unknown parameter '" + .$p_options_list[$i]."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Next options + $i++; + } + + // ----- Look for mandatory options + if ($v_requested_options !== false) { + for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + // ----- Look if present + if (!isset($v_result_list[$key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); + + // ----- Return + return PclZip::errorCode(); + } + } + } + } + + // ----- Look for default values + if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { + + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOptionDefaultThreshold() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privOptionDefaultThreshold(&$p_options) + { + $v_result=1; + + if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) + || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { + return $v_result; + } + + // ----- Get 'memory_limit' configuration value + $v_memory_limit = ini_get('memory_limit'); + $v_memory_limit = trim($v_memory_limit); + $last = strtolower(substr($v_memory_limit, -1)); + + if($last == 'g') + //$v_memory_limit = $v_memory_limit*1024*1024*1024; + $v_memory_limit = $v_memory_limit*1073741824; + if($last == 'm') + //$v_memory_limit = $v_memory_limit*1024*1024; + $v_memory_limit = $v_memory_limit*1048576; + if($last == 'k') + $v_memory_limit = $v_memory_limit*1024; + + $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); + + + // ----- Sanity check : No threshold if value lower than 1M + if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { + unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privFileDescrParseAtt() + // Description : + // Parameters : + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false) + { + $v_result=1; + + // ----- For each file in the list check the attributes + foreach ($p_file_list as $v_key => $v_value) { + + // ----- Check if the option is supported + if (!isset($v_requested_options[$v_key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for attribute + switch ($v_key) { + case PCLZIP_ATT_FILE_NAME : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['filename'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['filename'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + break; + + case PCLZIP_ATT_FILE_NEW_SHORT_NAME : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['new_short_name'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + break; + + case PCLZIP_ATT_FILE_NEW_FULL_NAME : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['new_full_name'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + break; + + // ----- Look for options that takes a string + case PCLZIP_ATT_FILE_COMMENT : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['comment'] = $v_value; + break; + + case PCLZIP_ATT_FILE_MTIME : + if (!is_integer($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['mtime'] = $v_value; + break; + + case PCLZIP_ATT_FILE_CONTENT : + $p_filedescr['content'] = $v_value; + break; + + default : + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, + "Unknown parameter '".$v_key."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for mandatory options + if ($v_requested_options !== false) { + for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + // ----- Look if present + if (!isset($p_file_list[$key])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); + return PclZip::errorCode(); + } + } + } + } + + // end foreach + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privFileDescrExpand() + // Description : + // This method look for each item of the list to see if its a file, a folder + // or a string to be added as file. For any other type of files (link, other) + // just ignore the item. + // Then prepare the information that will be stored for that file. + // When its a folder, expand the folder with all the files that are in that + // folder (recursively). + // Parameters : + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privFileDescrExpand(&$p_filedescr_list, &$p_options) + { + $v_result=1; + + // ----- Create a result list + $v_result_list = array(); + + // ----- Look each entry + for ($i=0; $iprivCalculateStoredFilename($v_descr, $p_options); + + // ----- Add the descriptor in result list + $v_result_list[sizeof($v_result_list)] = $v_descr; + + // ----- Look for folder + if ($v_descr['type'] == 'folder') { + // ----- List of items in folder + $v_dirlist_descr = array(); + $v_dirlist_nb = 0; + if ($v_folder_handler = @opendir($v_descr['filename'])) { + while (($v_item_handler = @readdir($v_folder_handler)) !== false) { + + // ----- Skip '.' and '..' + if (($v_item_handler == '.') || ($v_item_handler == '..')) { + continue; + } + + // ----- Compose the full filename + $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler; + + // ----- Look for different stored filename + // Because the name of the folder was changed, the name of the + // files/sub-folders also change + if (($v_descr['stored_filename'] != $v_descr['filename']) + && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { + if ($v_descr['stored_filename'] != '') { + $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler; + } + else { + $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler; + } + } + + $v_dirlist_nb++; + } + + @closedir($v_folder_handler); + } + else { + // TBC : unable to open folder in read mode + } + + // ----- Expand each element of the list + if ($v_dirlist_nb != 0) { + // ----- Expand + if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) { + return $v_result; + } + + // ----- Concat the resulting list + $v_result_list = array_merge($v_result_list, $v_dirlist_descr); + } + else { + } + + // ----- Free local array + unset($v_dirlist_descr); + } + } + + // ----- Get the result list + $p_filedescr_list = $v_result_list; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCreate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privCreate($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the file in write mode + if (($v_result = $this->privOpenFd('wb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Add the list of files + $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options); + + // ----- Close + $this->privCloseFd(); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAdd() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAdd($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Look if the archive exists or is empty + if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) + { + + // ----- Do a create + $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options); + + // ----- Return + return $v_result; + } + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) + { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) + { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Create the Central Dir files header + for ($i=0, $v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = $v_central_dir['comment']; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) { + $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT]; + } + if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1) + { + // ----- Reset the file list + unset($v_header_list); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOpenFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privOpenFd($p_mode) + { + $v_result=1; + + // ----- Look if already open + if ($this->zip_fd != 0) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCloseFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privCloseFd() + { + $v_result=1; + + if ($this->zip_fd != 0) + @fclose($this->zip_fd); + $this->zip_fd = 0; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddList() + // Description : + // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is + // different from the real path of the file. This is usefull if you want to have PclTar + // running in any directory, and memorize relative path from an other directory. + // Parameters : + // $p_list : An array containing the file or directory names to add in the tar + // $p_result_list : list of added files with their properties (specially the status field) + // $p_add_dir : Path to add in the filename path archived + // $p_remove_dir : Path to remove in the filename path archived + // Return Values : + // -------------------------------------------------------------------------------- +// function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) + function privAddList($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Create the Central Dir files header + for ($i=0,$v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + // ----- Return + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = ''; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1) + { + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + return $v_result; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileList() + // Description : + // Parameters : + // $p_filedescr_list : An array containing the file description + // or directory names to add in the zip + // $p_result_list : list of added files with their properties (specially the status field) + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_header = array(); + + // ----- Recuperate the current number of elt in list + $v_nb = sizeof($p_result_list); + + // ----- Loop on the files + for ($j=0; ($jprivAddFile($p_filedescr_list[$j], $v_header, + $p_options); + if ($v_result != 1) { + return $v_result; + } + + // ----- Store the file infos + $p_result_list[$v_nb++] = $v_header; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFile($p_filedescr, &$p_header, &$p_options) + { + $v_result=1; + + // ----- Working variable + $p_filename = $p_filedescr['filename']; + + // TBC : Already done in the fileAtt check ... ? + if ($p_filename == "") { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for a stored different filename + /* TBC : Removed + if (isset($p_filedescr['stored_filename'])) { + $v_stored_filename = $p_filedescr['stored_filename']; + } + else { + $v_stored_filename = $p_filedescr['stored_filename']; + } + */ + + // ----- Set the file properties + clearstatcache(); + $p_header['version'] = 20; + $p_header['version_extracted'] = 10; + $p_header['flag'] = 0; + $p_header['compression'] = 0; + $p_header['crc'] = 0; + $p_header['compressed_size'] = 0; + $p_header['filename_len'] = strlen($p_filename); + $p_header['extra_len'] = 0; + $p_header['disk'] = 0; + $p_header['internal'] = 0; + $p_header['offset'] = 0; + $p_header['filename'] = $p_filename; +// TBC : Removed $p_header['stored_filename'] = $v_stored_filename; + $p_header['stored_filename'] = $p_filedescr['stored_filename']; + $p_header['extra'] = ''; + $p_header['status'] = 'ok'; + $p_header['index'] = -1; + + // ----- Look for regular file + if ($p_filedescr['type']=='file') { + $p_header['external'] = 0x00000000; + $p_header['size'] = filesize($p_filename); + } + + // ----- Look for regular folder + else if ($p_filedescr['type']=='folder') { + $p_header['external'] = 0x00000010; + $p_header['mtime'] = filemtime($p_filename); + $p_header['size'] = filesize($p_filename); + } + + // ----- Look for virtual file + else if ($p_filedescr['type'] == 'virtual_file') { + $p_header['external'] = 0x00000000; + $p_header['size'] = strlen($p_filedescr['content']); + } + + + // ----- Look for filetime + if (isset($p_filedescr['mtime'])) { + $p_header['mtime'] = $p_filedescr['mtime']; + } + else if ($p_filedescr['type'] == 'virtual_file') { + $p_header['mtime'] = time(); + } + else { + $p_header['mtime'] = filemtime($p_filename); + } + + // ------ Look for file comment + if (isset($p_filedescr['comment'])) { + $p_header['comment_len'] = strlen($p_filedescr['comment']); + $p_header['comment'] = $p_filedescr['comment']; + } + else { + $p_header['comment_len'] = 0; + $p_header['comment'] = ''; + } + + // ----- Look for pre-add callback + if (isset($p_options[PCLZIP_CB_PRE_ADD])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_header['status'] = "skipped"; + $v_result = 1; + } + + // ----- Update the informations + // Only some fields can be modified + if ($p_header['stored_filename'] != $v_local_header['stored_filename']) { + $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']); + } + } + + // ----- Look for empty stored filename + if ($p_header['stored_filename'] == "") { + $p_header['status'] = "filtered"; + } + + // ----- Check the path length + if (strlen($p_header['stored_filename']) > 0xFF) { + $p_header['status'] = 'filename_too_long'; + } + + // ----- Look if no error, or file not skipped + if ($p_header['status'] == 'ok') { + + // ----- Look for a file + if ($p_filedescr['type'] == 'file') { + // ----- Look for using temporary file to zip + if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) + && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) + || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) + && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])) ) ) { + $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options); + if ($v_result < PCLZIP_ERR_NO_ERROR) { + return $v_result; + } + } + + // ----- Use "in memory" zip algo + else { + + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + return PclZip::errorCode(); + } + + // ----- Read the file content + $v_content = @fread($v_file, $p_header['size']); + + // ----- Close the file + @fclose($v_file); + + // ----- Calculate the CRC + $p_header['crc'] = @crc32($v_content); + + // ----- Look for no compression + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Set header parameters + $p_header['compressed_size'] = $p_header['size']; + $p_header['compression'] = 0; + } + + // ----- Look for normal compression + else { + // ----- Compress the content + $v_content = @gzdeflate($v_content); + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content); + $p_header['compression'] = 8; + } + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + return $v_result; + } + + // ----- Write the compressed (or not) content + @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); + + } + + } + + // ----- Look for a virtual file (a file from string) + else if ($p_filedescr['type'] == 'virtual_file') { + + $v_content = $p_filedescr['content']; + + // ----- Calculate the CRC + $p_header['crc'] = @crc32($v_content); + + // ----- Look for no compression + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Set header parameters + $p_header['compressed_size'] = $p_header['size']; + $p_header['compression'] = 0; + } + + // ----- Look for normal compression + else { + // ----- Compress the content + $v_content = @gzdeflate($v_content); + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content); + $p_header['compression'] = 8; + } + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + return $v_result; + } + + // ----- Write the compressed (or not) content + @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); + } + + // ----- Look for a directory + else if ($p_filedescr['type'] == 'folder') { + // ----- Look for directory last '/' + if (@substr($p_header['stored_filename'], -1) != '/') { + $p_header['stored_filename'] .= '/'; + } + + // ----- Set the file properties + $p_header['size'] = 0; + //$p_header['external'] = 0x41FF0010; // Value for a folder : to be checked + $p_header['external'] = 0x00000010; // Value for a folder : to be checked + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) + { + return $v_result; + } + } + } + + // ----- Look for post-add callback + if (isset($p_options[PCLZIP_CB_POST_ADD])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header); + if ($v_result == 0) { + // ----- Ignored + $v_result = 1; + } + + // ----- Update the informations + // Nothing can be modified + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileUsingTempFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options) + { + $v_result=PCLZIP_ERR_NO_ERROR; + + // ----- Working variable + $p_filename = $p_filedescr['filename']; + + + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + return PclZip::errorCode(); + } + + // ----- Creates a compressed temporary file + $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; + if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) { + fclose($v_file); + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = filesize($p_filename); + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_file, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @gzputs($v_file_compressed, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close the file + @fclose($v_file); + @gzclose($v_file_compressed); + + // ----- Check the minimum file size + if (filesize($v_gzip_temp_name) < 18) { + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes'); + return PclZip::errorCode(); + } + + // ----- Extract the compressed attributes + if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + // ----- Read the gzip file header + $v_binary_data = @fread($v_file_compressed, 10); + $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data); + + // ----- Check some parameters + $v_data_header['os'] = bin2hex($v_data_header['os']); + + // ----- Read the gzip file footer + @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8); + $v_binary_data = @fread($v_file_compressed, 8); + $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data); + + // ----- Set the attributes + $p_header['compression'] = ord($v_data_header['cm']); + //$p_header['mtime'] = $v_data_header['mtime']; + $p_header['crc'] = $v_data_footer['crc']; + $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18; + + // ----- Close the file + @fclose($v_file_compressed); + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + return $v_result; + } + + // ----- Add the compressed data + if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) + { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + fseek($v_file_compressed, 10); + $v_size = $p_header['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_file_compressed, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close the file + @fclose($v_file_compressed); + + // ----- Unlink the temporary file + @unlink($v_gzip_temp_name); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCalculateStoredFilename() + // Description : + // Based on file descriptor properties and global options, this method + // calculate the filename that will be stored in the archive. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privCalculateStoredFilename(&$p_filedescr, &$p_options) + { + $v_result=1; + + // ----- Working variables + $p_filename = $p_filedescr['filename']; + if (isset($p_options[PCLZIP_OPT_ADD_PATH])) { + $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH]; + } + else { + $p_add_dir = ''; + } + if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) { + $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH]; + } + else { + $p_remove_dir = ''; + } + if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + else { + $p_remove_all_dir = 0; + } + + + // ----- Look for full name change + if (isset($p_filedescr['new_full_name'])) { + // ----- Remove drive letter if any + $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']); + } + + // ----- Look for path and/or short name change + else { + + // ----- Look for short name change + // Its when we cahnge just the filename but not the path + if (isset($p_filedescr['new_short_name'])) { + $v_path_info = pathinfo($p_filename); + $v_dir = ''; + if ($v_path_info['dirname'] != '') { + $v_dir = $v_path_info['dirname'].'/'; + } + $v_stored_filename = $v_dir.$p_filedescr['new_short_name']; + } + else { + // ----- Calculate the stored filename + $v_stored_filename = $p_filename; + } + + // ----- Look for all path to remove + if ($p_remove_all_dir) { + $v_stored_filename = basename($p_filename); + } + // ----- Look for partial path remove + else if ($p_remove_dir != "") { + if (substr($p_remove_dir, -1) != '/') + $p_remove_dir .= "/"; + + if ( (substr($p_filename, 0, 2) == "./") + || (substr($p_remove_dir, 0, 2) == "./")) { + + if ( (substr($p_filename, 0, 2) == "./") + && (substr($p_remove_dir, 0, 2) != "./")) { + $p_remove_dir = "./".$p_remove_dir; + } + if ( (substr($p_filename, 0, 2) != "./") + && (substr($p_remove_dir, 0, 2) == "./")) { + $p_remove_dir = substr($p_remove_dir, 2); + } + } + + $v_compare = PclZipUtilPathInclusion($p_remove_dir, + $v_stored_filename); + if ($v_compare > 0) { + if ($v_compare == 2) { + $v_stored_filename = ""; + } + else { + $v_stored_filename = substr($v_stored_filename, + strlen($p_remove_dir)); + } + } + } + + // ----- Remove drive letter if any + $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename); + + // ----- Look for path to add + if ($p_add_dir != "") { + if (substr($p_add_dir, -1) == "/") + $v_stored_filename = $p_add_dir.$v_stored_filename; + else + $v_stored_filename = $p_add_dir."/".$v_stored_filename; + } + } + + // ----- Filename (reduce the path of stored name) + $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); + $p_filedescr['stored_filename'] = $v_stored_filename; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteFileHeader(&$p_header) + { + $v_result=1; + + // ----- Store the offset position of the file + $p_header['offset'] = ftell($this->zip_fd); + + // ----- Transform UNIX mtime to DOS format mdate/mtime + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + + // ----- Packed data + $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, + $p_header['version_extracted'], $p_header['flag'], + $p_header['compression'], $v_mtime, $v_mdate, + $p_header['crc'], $p_header['compressed_size'], + $p_header['size'], + strlen($p_header['stored_filename']), + $p_header['extra_len']); + + // ----- Write the first 148 bytes of the header in the archive + fputs($this->zip_fd, $v_binary_data, 30); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) + { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) + { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteCentralFileHeader(&$p_header) + { + $v_result=1; + + // TBC + //for(reset($p_header); $key = key($p_header); next($p_header)) { + //} + + // ----- Transform UNIX mtime to DOS format mdate/mtime + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + + + // ----- Packed data + $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, + $p_header['version'], $p_header['version_extracted'], + $p_header['flag'], $p_header['compression'], + $v_mtime, $v_mdate, $p_header['crc'], + $p_header['compressed_size'], $p_header['size'], + strlen($p_header['stored_filename']), + $p_header['extra_len'], $p_header['comment_len'], + $p_header['disk'], $p_header['internal'], + $p_header['external'], $p_header['offset']); + + // ----- Write the 42 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 46); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) + { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) + { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + if ($p_header['comment_len'] != 0) + { + fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) + { + $v_result=1; + + // ----- Packed data + $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, + $p_nb_entries, $p_size, + $p_offset, strlen($p_comment)); + + // ----- Write the 22 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 22); + + // ----- Write the variable fields + if (strlen($p_comment) != 0) + { + fputs($this->zip_fd, $p_comment, strlen($p_comment)); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privList() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privList(&$p_list) + { + $v_result=1; + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) + { + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Go to beginning of Central Dir + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_central_dir['offset'])) + { + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read each entry + for ($i=0; $i<$v_central_dir['entries']; $i++) + { + // ----- Read the file header + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) + { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + $v_header['index'] = $i; + + // ----- Get the only interesting attributes + $this->privConvertHeader2FileInfo($v_header, $p_list[$i]); + unset($v_header); + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privConvertHeader2FileInfo() + // Description : + // This function takes the file informations from the central directory + // entries and extract the interesting parameters that will be given back. + // The resulting file infos are set in the array $p_info + // $p_info['filename'] : Filename with full path. Given by user (add), + // extracted in the filesystem (extract). + // $p_info['stored_filename'] : Stored filename in the archive. + // $p_info['size'] = Size of the file. + // $p_info['compressed_size'] = Compressed size of the file. + // $p_info['mtime'] = Last modification date of the file. + // $p_info['comment'] = Comment associated with the file. + // $p_info['folder'] = true/false : indicates if the entry is a folder or not. + // $p_info['status'] = status of the action on the file. + // $p_info['crc'] = CRC of the file content. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privConvertHeader2FileInfo($p_header, &$p_info) + { + $v_result=1; + + // ----- Get the interesting attributes + $v_temp_path = PclZipUtilPathReduction($p_header['filename']); + $p_info['filename'] = $v_temp_path; + $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']); + $p_info['stored_filename'] = $v_temp_path; + $p_info['size'] = $p_header['size']; + $p_info['compressed_size'] = $p_header['compressed_size']; + $p_info['mtime'] = $p_header['mtime']; + $p_info['comment'] = $p_header['comment']; + $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010); + $p_info['index'] = $p_header['index']; + $p_info['status'] = $p_header['status']; + $p_info['crc'] = $p_header['crc']; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractByRule() + // Description : + // Extract a file or directory depending of rules (by index, by name, ...) + // Parameters : + // $p_file_list : An array where will be placed the properties of each + // extracted file + // $p_path : Path to add while writing the extracted files + // $p_remove_path : Path to remove (from the file memorized path) while writing the + // extracted files. If the path does not match the file path, + // the file is extracted with its memorized path. + // $p_remove_path does not apply to 'list' mode. + // $p_path and $p_remove_path are commulative. + // Return Values : + // 1 on success,0 or less on error (see error code list) + // -------------------------------------------------------------------------------- + function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + $v_result=1; + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Check the path + if ( ($p_path == "") + || ( (substr($p_path, 0, 1) != "/") + && (substr($p_path, 0, 3) != "../") + && (substr($p_path,1,2)!=":/"))) + $p_path = "./".$p_path; + + // ----- Reduce the path last (and duplicated) '/' + if (($p_path != "./") && ($p_path != "/")) + { + // ----- Look for the path end '/' + while (substr($p_path, -1) == "/") + { + $p_path = substr($p_path, 0, strlen($p_path)-1); + } + } + + // ----- Look for path to remove format (should end by /) + if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) + { + $p_remove_path .= '/'; + } + $p_remove_path_size = strlen($p_remove_path); + + // ----- Open the zip file + if (($v_result = $this->privOpenFd('rb')) != 1) + { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + + // ----- Read each entry + $j_start = 0; + for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) + { + + // ----- Read next Central dir entry + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_pos_entry)) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Store the index + $v_header['index'] = $i; + + // ----- Store the file position + $v_pos_entry = ftell($this->zip_fd); + + // ----- Look for the specific extract rules + $v_extract = false; + + // ----- Look for extract by name rule + if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) + && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + + // ----- Look if the filename is in the list + for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) + && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_extract = true; + } + } + // ----- Look for a filename + elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + $v_extract = true; + } + } + } + + // ----- Look for extract by ereg rule + // ereg() is deprecated with PHP 5.3 + /* + else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) + && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { + + if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) { + $v_extract = true; + } + } + */ + + // ----- Look for extract by preg rule + else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) + && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) { + $v_extract = true; + } + } + + // ----- Look for extract by index rule + else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) + && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + + // ----- Look if the index is in the list + for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + $v_extract = true; + } + if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + $j_start = $j+1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { + break; + } + } + } + + // ----- Look for no rule, which means extract all the archive + else { + $v_extract = true; + } + + // ----- Check compression method + if ( ($v_extract) + && ( ($v_header['compression'] != 8) + && ($v_header['compression'] != 0))) { + $v_header['status'] = 'unsupported_compression'; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, + "Filename '".$v_header['stored_filename']."' is " + ."compressed by an unsupported compression " + ."method (".$v_header['compression'].") "); + + return PclZip::errorCode(); + } + } + + // ----- Check encrypted files + if (($v_extract) && (($v_header['flag'] & 1) == 1)) { + $v_header['status'] = 'unsupported_encryption'; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, + "Unsupported encryption for " + ." filename '".$v_header['stored_filename'] + ."'"); + + return PclZip::errorCode(); + } + } + + // ----- Look for real extraction + if (($v_extract) && ($v_header['status'] != 'ok')) { + $v_result = $this->privConvertHeader2FileInfo($v_header, + $p_file_list[$v_nb_extracted++]); + if ($v_result != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + $v_extract = false; + } + + // ----- Look for real extraction + if ($v_extract) + { + + // ----- Go to the file position + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_header['offset'])) + { + // ----- Close the zip file + $this->privCloseFd(); + + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for extraction as string + if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { + + $v_string = ''; + + // ----- Extracting the file + $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Set the file content + $p_file_list[$v_nb_extracted]['content'] = $v_string; + + // ----- Next extracted file + $v_nb_extracted++; + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + // ----- Look for extraction in standard output + elseif ( (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) + && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) { + // ----- Extracting the file in standard output + $v_result1 = $this->privExtractFileInOutput($v_header, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + // ----- Look for normal extraction + else { + // ----- Extracting the file + $v_result1 = $this->privExtractFile($v_header, + $p_path, $p_remove_path, + $p_remove_all_path, + $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + } + } + + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFile() + // Description : + // Parameters : + // Return Values : + // + // 1 : ... ? + // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback + // -------------------------------------------------------------------------------- + function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + $v_result=1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) + { + // ----- Return + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for all path to remove + if ($p_remove_all_path == true) { + // ----- Look for folder entry that not need to be extracted + if (($p_entry['external']&0x00000010)==0x00000010) { + + $p_entry['status'] = "filtered"; + + return $v_result; + } + + // ----- Get the basename of the path + $p_entry['filename'] = basename($p_entry['filename']); + } + + // ----- Look for path to remove + else if ($p_remove_path != "") + { + if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) + { + + // ----- Change the file status + $p_entry['status'] = "filtered"; + + // ----- Return + return $v_result; + } + + $p_remove_path_size = strlen($p_remove_path); + if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) + { + + // ----- Remove the path + $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); + + } + } + + // ----- Add the path + if ($p_path != '') { + $p_entry['filename'] = $p_path."/".$p_entry['filename']; + } + + // ----- Check a base_dir_restriction + if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { + $v_inclusion + = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], + $p_entry['filename']); + if ($v_inclusion == 0) { + + PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, + "Filename '".$p_entry['filename']."' is " + ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION"); + + return PclZip::errorCode(); + } + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Look for specific actions while the file exist + if (file_exists($p_entry['filename'])) + { + + // ----- Look if file is a directory + if (is_dir($p_entry['filename'])) + { + + // ----- Change the file status + $p_entry['status'] = "already_a_directory"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, + "Filename '".$p_entry['filename']."' is " + ."already used by an existing directory"); + + return PclZip::errorCode(); + } + } + // ----- Look if file is write protected + else if (!is_writeable($p_entry['filename'])) + { + + // ----- Change the file status + $p_entry['status'] = "write_protected"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, + "Filename '".$p_entry['filename']."' exists " + ."and is write protected"); + + return PclZip::errorCode(); + } + } + + // ----- Look if the extracted file is older + else if (filemtime($p_entry['filename']) > $p_entry['mtime']) + { + // ----- Change the file status + if ( (isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) + && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) { + } + else { + $p_entry['status'] = "newer_exist"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, + "Newer version of '".$p_entry['filename']."' exists " + ."and option PCLZIP_OPT_REPLACE_NEWER is not selected"); + + return PclZip::errorCode(); + } + } + } + else { + } + } + + // ----- Check the directory availability and create it if necessary + else { + if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/')) + $v_dir_to_check = $p_entry['filename']; + else if (!strstr($p_entry['filename'], "/")) + $v_dir_to_check = ""; + else + $v_dir_to_check = dirname($p_entry['filename']); + + if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) { + + // ----- Change the file status + $p_entry['status'] = "path_creation_fail"; + + // ----- Return + //return $v_result; + $v_result = 1; + } + } + } + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) + { + // ----- Look for not compressed file + if ($p_entry['compression'] == 0) { + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) + { + + // ----- Change the file status + $p_entry['status'] = "write_error"; + + // ----- Return + return $v_result; + } + + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + /* Try to speed up the code + $v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_binary_data, $v_read_size); + */ + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Closing the destination file + fclose($v_dest_file); + + // ----- Change the file mtime + touch($p_entry['filename'], $p_entry['mtime']); + + + } + else { + // ----- TBC + // Need to be finished + if (($p_entry['flag'] & 1) == 1) { + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.'); + return PclZip::errorCode(); + } + + + // ----- Look for using temporary file to unzip + if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) + && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) + || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) + && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])) ) ) { + $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options); + if ($v_result < PCLZIP_ERR_NO_ERROR) { + return $v_result; + } + } + + // ----- Look for extract in memory + else { + + + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = @gzinflate($v_buffer); + unset($v_buffer); + if ($v_file_content === FALSE) { + + // ----- Change the file status + // TBC + $p_entry['status'] = "error"; + + return $v_result; + } + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + + // ----- Change the file status + $p_entry['status'] = "write_error"; + + return $v_result; + } + + // ----- Write the uncompressed data + @fwrite($v_dest_file, $v_file_content, $p_entry['size']); + unset($v_file_content); + + // ----- Closing the destination file + @fclose($v_dest_file); + + } + + // ----- Change the file mtime + @touch($p_entry['filename'], $p_entry['mtime']); + } + + // ----- Look for chmod option + if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { + + // ----- Change the mode of the file + @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]); + } + + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } + + // ----- Look for post-extract callback + elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileUsingTempFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileUsingTempFile(&$p_entry, &$p_options) + { + $v_result=1; + + // ----- Creates a temporary file + $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; + if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) { + fclose($v_file); + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); + return PclZip::errorCode(); + } + + + // ----- Write gz file format header + $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); + @fwrite($v_dest_file, $v_binary_data, 10); + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Write gz file format footer + $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']); + @fwrite($v_dest_file, $v_binary_data, 8); + + // ----- Close the temporary file + @fclose($v_dest_file); + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + $p_entry['status'] = "write_error"; + return $v_result; + } + + // ----- Open the temporary gz file + if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) { + @fclose($v_dest_file); + $p_entry['status'] = "read_error"; + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($v_src_file, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + @fclose($v_dest_file); + @gzclose($v_src_file); + + // ----- Delete the temporary file + @unlink($v_gzip_temp_name); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileInOutput() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileInOutput(&$p_entry, &$p_options) + { + $v_result=1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) { + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. +// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + // ----- Trace + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) { + // ----- Look for not compressed file + if ($p_entry['compressed_size'] == $p_entry['size']) { + + // ----- Read the file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Send the file to the output + echo $v_buffer; + unset($v_buffer); + } + else { + + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = gzinflate($v_buffer); + unset($v_buffer); + + // ----- Send the file to the output + echo $v_file_content; + unset($v_file_content); + } + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } + + // ----- Look for post-extract callback + elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileAsString() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileAsString(&$p_entry, &$p_string, &$p_options) + { + $v_result=1; + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadFileHeader($v_header)) != 1) + { + // ----- Return + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) { + // ----- Look for not compressed file + // if ($p_entry['compressed_size'] == $p_entry['size']) + if ($p_entry['compression'] == 0) { + + // ----- Reading the file + $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); + } + else { + + // ----- Reading the file + $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + if (($p_string = @gzinflate($v_data)) === FALSE) { + // TBC + } + } + + // ----- Trace + } + else { + // TBC : error : can not extract a folder in a string + } + + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } + + // ----- Look for post-extract callback + elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Swap the content to header + $v_local_header['content'] = $p_string; + $p_string = ''; + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Swap back the content to header + $p_string = $v_local_header['content']; + unset($v_local_header['content']); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadFileHeader(&$p_header) + { + $v_result=1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] != 0x04034b50) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 26); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 26) + { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); + + // ----- Get filename + $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); + + // ----- Get extra_fields + if ($v_data['extra_len'] != 0) { + $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); + } + else { + $p_header['extra'] = ''; + } + + // ----- Extract properties + $p_header['version_extracted'] = $v_data['version']; + $p_header['compression'] = $v_data['compression']; + $p_header['size'] = $v_data['size']; + $p_header['compressed_size'] = $v_data['compressed_size']; + $p_header['crc'] = $v_data['crc']; + $p_header['flag'] = $v_data['flag']; + $p_header['filename_len'] = $v_data['filename_len']; + + // ----- Recuperate date in UNIX format + $p_header['mdate'] = $v_data['mdate']; + $p_header['mtime'] = $v_data['mtime']; + if ($p_header['mdate'] && $p_header['mtime']) + { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F)*2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + } + else + { + $p_header['mtime'] = time(); + } + + // TBC + //for(reset($v_data); $key = key($v_data); next($v_data)) { + //} + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set the status field + $p_header['status'] = "ok"; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadCentralFileHeader(&$p_header) + { + $v_result=1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] != 0x02014b50) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 42); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 42) + { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data); + + // ----- Get filename + if ($p_header['filename_len'] != 0) + $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); + else + $p_header['filename'] = ''; + + // ----- Get extra + if ($p_header['extra_len'] != 0) + $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); + else + $p_header['extra'] = ''; + + // ----- Get comment + if ($p_header['comment_len'] != 0) + $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); + else + $p_header['comment'] = ''; + + // ----- Extract properties + + // ----- Recuperate date in UNIX format + //if ($p_header['mdate'] && $p_header['mtime']) + // TBC : bug : this was ignoring time with 0/0/0 + if (1) + { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F)*2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + } + else + { + $p_header['mtime'] = time(); + } + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set default status to ok + $p_header['status'] = 'ok'; + + // ----- Look if it is a directory + if (substr($p_header['filename'], -1) == '/') { + //$p_header['external'] = 0x41FF0010; + $p_header['external'] = 0x00000010; + } + + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCheckFileHeaders() + // Description : + // Parameters : + // Return Values : + // 1 on success, + // 0 on error; + // -------------------------------------------------------------------------------- + function privCheckFileHeaders(&$p_local_header, &$p_central_header) + { + $v_result=1; + + // ----- Check the static values + // TBC + if ($p_local_header['filename'] != $p_central_header['filename']) { + } + if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) { + } + if ($p_local_header['flag'] != $p_central_header['flag']) { + } + if ($p_local_header['compression'] != $p_central_header['compression']) { + } + if ($p_local_header['mtime'] != $p_central_header['mtime']) { + } + if ($p_local_header['filename_len'] != $p_central_header['filename_len']) { + } + + // ----- Look for flag bit 3 + if (($p_local_header['flag'] & 8) == 8) { + $p_local_header['size'] = $p_central_header['size']; + $p_local_header['compressed_size'] = $p_central_header['compressed_size']; + $p_local_header['crc'] = $p_central_header['crc']; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadEndCentralDir() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadEndCentralDir(&$p_central_dir) + { + $v_result=1; + + // ----- Go to the end of the zip file + $v_size = filesize($this->zipname); + @fseek($this->zip_fd, $v_size); + if (@ftell($this->zip_fd) != $v_size) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- First try : look if this is an archive with no commentaries (most of the time) + // in this case the end of central dir is at 22 bytes of the file end + $v_found = 0; + if ($v_size > 26) { + @fseek($this->zip_fd, $v_size-22); + if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read for bytes + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = @unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] == 0x06054b50) { + $v_found = 1; + } + + $v_pos = ftell($this->zip_fd); + } + + // ----- Go back to the maximum possible size of the Central Dir End Record + if (!$v_found) { + $v_maximum_size = 65557; // 0xFFFF + 22; + if ($v_maximum_size > $v_size) + $v_maximum_size = $v_size; + @fseek($this->zip_fd, $v_size-$v_maximum_size); + if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read byte per byte in order to find the signature + $v_pos = ftell($this->zip_fd); + $v_bytes = 0x00000000; + while ($v_pos < $v_size) + { + // ----- Read a byte + $v_byte = @fread($this->zip_fd, 1); + + // ----- Add the byte + //$v_bytes = ($v_bytes << 8) | Ord($v_byte); + // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number + // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. + $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); + + // ----- Compare the bytes + if ($v_bytes == 0x504b0506) + { + $v_pos++; + break; + } + + $v_pos++; + } + + // ----- Look if not found end of central dir + if ($v_pos == $v_size) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); + + // ----- Return + return PclZip::errorCode(); + } + } + + // ----- Read the first 18 bytes of the header + $v_binary_data = fread($this->zip_fd, 18); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 18) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); + + // ----- Check the global size + if (($v_pos + $v_data['comment_size'] + 18) != $v_size) { + + // ----- Removed in release 2.2 see readme file + // The check of the file size is a little too strict. + // Some bugs where found when a zip is encrypted/decrypted with 'crypt'. + // While decrypted, zip has training 0 bytes + if (0) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, + 'The central dir is not at the end of the archive.' + .' Some trailing bytes exists after the archive.'); + + // ----- Return + return PclZip::errorCode(); + } + } + + // ----- Get comment + if ($v_data['comment_size'] != 0) { + $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); + } + else + $p_central_dir['comment'] = ''; + + $p_central_dir['entries'] = $v_data['entries']; + $p_central_dir['disk_entries'] = $v_data['disk_entries']; + $p_central_dir['offset'] = $v_data['offset']; + $p_central_dir['size'] = $v_data['size']; + $p_central_dir['disk'] = $v_data['disk']; + $p_central_dir['disk_start'] = $v_data['disk_start']; + + // TBC + //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) { + //} + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDeleteByRule() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDeleteByRule(&$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Scan all the files + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_pos_entry)) + { + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read each entry + $v_header_list = array(); + $j_start = 0; + for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) + { + + // ----- Read the file header + $v_header_list[$v_nb_extracted] = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + + return $v_result; + } + + + // ----- Store the index + $v_header_list[$v_nb_extracted]['index'] = $i; + + // ----- Look for the specific extract rules + $v_found = false; + + // ----- Look for extract by name rule + if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) + && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + + // ----- Look if the filename is in the list + for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) + && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_found = true; + } + elseif ( (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */ + && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_found = true; + } + } + // ----- Look for a filename + elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + $v_found = true; + } + } + } + + // ----- Look for extract by ereg rule + // ereg() is deprecated with PHP 5.3 + /* + else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) + && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { + + if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + $v_found = true; + } + } + */ + + // ----- Look for extract by preg rule + else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) + && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + $v_found = true; + } + } + + // ----- Look for extract by index rule + else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) + && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + + // ----- Look if the index is in the list + for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + $v_found = true; + } + if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + $j_start = $j+1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { + break; + } + } + } + else { + $v_found = true; + } + + // ----- Look for deletion + if ($v_found) + { + unset($v_header_list[$v_nb_extracted]); + } + else + { + $v_nb_extracted++; + } + } + + // ----- Look if something need to be deleted + if ($v_nb_extracted > 0) { + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Creates a temporary zip archive + $v_temp_zip = new PclZip($v_zip_temp_name); + + // ----- Open the temporary zip file in write mode + if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { + $this->privCloseFd(); + + // ----- Return + return $v_result; + } + + // ----- Look which file need to be kept + for ($i=0; $izip_fd); + if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the file header + $v_local_header = array(); + if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Check that local file header is same as central file header + if ($this->privCheckFileHeaders($v_local_header, + $v_header_list[$i]) != 1) { + // TBC + } + unset($v_local_header); + + // ----- Write the file header + if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Read/write the data block + if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_temp_zip->zip_fd); + + // ----- Re-Create the Central Dir files header + for ($i=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Transform the header to a 'usable' info + $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + + // ----- Zip file comment + $v_comment = ''; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) { + // ----- Reset the file list + unset($v_header_list); + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Close + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Destroy the temporary archive + unset($v_temp_zip); + } + + // ----- Remove every files : reset the file + else if ($v_central_dir['entries'] != 0) { + $this->privCloseFd(); + + if (($v_result = $this->privOpenFd('wb')) != 1) { + return $v_result; + } + + if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) { + return $v_result; + } + + $this->privCloseFd(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDirCheck() + // Description : + // Check if a directory exists, if not it creates it and all the parents directory + // which may be useful. + // Parameters : + // $p_dir : Directory path to check. + // Return Values : + // 1 : OK + // -1 : Unable to create directory + // -------------------------------------------------------------------------------- + function privDirCheck($p_dir, $p_is_dir=false) + { + $v_result = 1; + + + // ----- Remove the final '/' + if (($p_is_dir) && (substr($p_dir, -1)=='/')) + { + $p_dir = substr($p_dir, 0, strlen($p_dir)-1); + } + + // ----- Check the directory availability + if ((is_dir($p_dir)) || ($p_dir == "")) + { + return 1; + } + + // ----- Extract parent directory + $p_parent_dir = dirname($p_dir); + + // ----- Just a check + if ($p_parent_dir != $p_dir) + { + // ----- Look for parent directory + if ($p_parent_dir != "") + { + if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) + { + return $v_result; + } + } + } + + // ----- Create the directory + if (!@mkdir($p_dir, 0777)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privMerge() + // Description : + // If $p_archive_to_add does not exist, the function exit with a success result. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privMerge(&$p_archive_to_add) + { + $v_result=1; + + // ----- Look if the archive_to_add exists + if (!is_file($p_archive_to_add->zipname)) + { + + // ----- Nothing to merge, so merge is a success + $v_result = 1; + + // ----- Return + return $v_result; + } + + // ----- Look if the archive exists + if (!is_file($this->zipname)) + { + + // ----- Do a duplicate + $v_result = $this->privDuplicate($p_archive_to_add->zipname); + + // ----- Return + return $v_result; + } + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Open the archive_to_add file + if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1) + { + $this->privCloseFd(); + + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir_to_add = array(); + if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + return $v_result; + } + + // ----- Go to beginning of File + @rewind($p_archive_to_add->zip_fd); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the files from the archive_to_add into the temporary file + $v_size = $v_central_dir_to_add['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_zip_temp_fd); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the block of file headers from the archive_to_add + $v_size = $v_central_dir_to_add['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Merge the file comments + $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment']; + + // ----- Calculate the size of the (new) central header + $v_size = @ftell($v_zip_temp_fd)-$v_offset; + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive fd + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + @fclose($v_zip_temp_fd); + $this->zip_fd = null; + + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDuplicate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDuplicate($p_archive_filename) + { + $v_result=1; + + // ----- Look if the $p_archive_filename exists + if (!is_file($p_archive_filename)) + { + + // ----- Nothing to duplicate, so duplicate is a success. + $v_result = 1; + + // ----- Return + return $v_result; + } + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('wb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) + { + $this->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = filesize($p_archive_filename); + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorLog() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privErrorLog($p_error_code=0, $p_error_string='') + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclError($p_error_code, $p_error_string); + } + else { + $this->error_code = $p_error_code; + $this->error_string = $p_error_string; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorReset() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privErrorReset() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclErrorReset(); + } + else { + $this->error_code = 0; + $this->error_string = ''; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDisableMagicQuotes() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDisableMagicQuotes() + { + $v_result=1; + + // ----- Look if function exists + if ( (!function_exists("get_magic_quotes_runtime")) + || (!function_exists("set_magic_quotes_runtime"))) { + return $v_result; + } + + // ----- Look if already done + if ($this->magic_quotes_status != -1) { + return $v_result; + } + + // ----- Get and memorize the magic_quote value + $this->magic_quotes_status = @get_magic_quotes_runtime(); + + // ----- Disable magic_quotes + if ($this->magic_quotes_status == 1) { + @set_magic_quotes_runtime(0); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privSwapBackMagicQuotes() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privSwapBackMagicQuotes() + { + $v_result=1; + + // ----- Look if function exists + if ( (!function_exists("get_magic_quotes_runtime")) + || (!function_exists("set_magic_quotes_runtime"))) { + return $v_result; + } + + // ----- Look if something to do + if ($this->magic_quotes_status != -1) { + return $v_result; + } + + // ----- Swap back magic_quotes + if ($this->magic_quotes_status == 1) { + @set_magic_quotes_runtime($this->magic_quotes_status); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + } + // End of class + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilPathReduction() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function PclZipUtilPathReduction($p_dir) + { + $v_result = ""; + + // ----- Look for not empty path + if ($p_dir != "") { + // ----- Explode path by directory names + $v_list = explode("/", $p_dir); + + // ----- Study directories from last to first + $v_skip = 0; + for ($i=sizeof($v_list)-1; $i>=0; $i--) { + // ----- Look for current path + if ($v_list[$i] == ".") { + // ----- Ignore this directory + // Should be the first $i=0, but no check is done + } + else if ($v_list[$i] == "..") { + $v_skip++; + } + else if ($v_list[$i] == "") { + // ----- First '/' i.e. root slash + if ($i == 0) { + $v_result = "/".$v_result; + if ($v_skip > 0) { + // ----- It is an invalid path, so the path is not modified + // TBC + $v_result = $p_dir; + $v_skip = 0; + } + } + // ----- Last '/' i.e. indicates a directory + else if ($i == (sizeof($v_list)-1)) { + $v_result = $v_list[$i]; + } + // ----- Double '/' inside the path + else { + // ----- Ignore only the double '//' in path, + // but not the first and last '/' + } + } + else { + // ----- Look for item to skip + if ($v_skip > 0) { + $v_skip--; + } + else { + $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:""); + } + } + } + + // ----- Look for skip + if ($v_skip > 0) { + while ($v_skip > 0) { + $v_result = '../'.$v_result; + $v_skip--; + } + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilPathInclusion() + // Description : + // This function indicates if the path $p_path is under the $p_dir tree. Or, + // said in an other way, if the file or sub-dir $p_path is inside the dir + // $p_dir. + // The function indicates also if the path is exactly the same as the dir. + // This function supports path with duplicated '/' like '//', but does not + // support '.' or '..' statements. + // Parameters : + // Return Values : + // 0 if $p_path is not inside directory $p_dir + // 1 if $p_path is inside directory $p_dir + // 2 if $p_path is exactly the same as $p_dir + // -------------------------------------------------------------------------------- + function PclZipUtilPathInclusion($p_dir, $p_path) + { + $v_result = 1; + + // ----- Look for path beginning by ./ + if ( ($p_dir == '.') + || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) { + $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1); + } + if ( ($p_path == '.') + || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) { + $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1); + } + + // ----- Explode dir and path by directory separator + $v_list_dir = explode("/", $p_dir); + $v_list_dir_size = sizeof($v_list_dir); + $v_list_path = explode("/", $p_path); + $v_list_path_size = sizeof($v_list_path); + + // ----- Study directories paths + $i = 0; + $j = 0; + while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { + + // ----- Look for empty dir (path reduction) + if ($v_list_dir[$i] == '') { + $i++; + continue; + } + if ($v_list_path[$j] == '') { + $j++; + continue; + } + + // ----- Compare the items + if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != '')) { + $v_result = 0; + } + + // ----- Next items + $i++; + $j++; + } + + // ----- Look if everything seems to be the same + if ($v_result) { + // ----- Skip all the empty items + while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++; + while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++; + + if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { + // ----- There are exactly the same + $v_result = 2; + } + else if ($i < $v_list_dir_size) { + // ----- The path is shorter than the dir + $v_result = 0; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilCopyBlock() + // Description : + // Parameters : + // $p_mode : read/write compression mode + // 0 : src & dest normal + // 1 : src gzip, dest normal + // 2 : src normal, dest gzip + // 3 : src & dest gzip + // Return Values : + // -------------------------------------------------------------------------------- + function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0) + { + $v_result = 1; + + if ($p_mode==0) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==1) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==2) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==3) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilRename() + // Description : + // This function tries to do a simple rename() function. If it fails, it + // tries to copy the $p_src file in a new $p_dest file and then unlink the + // first one. + // Parameters : + // $p_src : Old filename + // $p_dest : New filename + // Return Values : + // 1 on success, 0 on failure. + // -------------------------------------------------------------------------------- + function PclZipUtilRename($p_src, $p_dest) + { + $v_result = 1; + + // ----- Try to rename the files + if (!@rename($p_src, $p_dest)) { + + // ----- Try to copy & unlink the src + if (!@copy($p_src, $p_dest)) { + $v_result = 0; + } + else if (!@unlink($p_src)) { + $v_result = 0; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilOptionText() + // Description : + // Translate option value in text. Mainly for debug purpose. + // Parameters : + // $p_option : the option value. + // Return Values : + // The option text value. + // -------------------------------------------------------------------------------- + function PclZipUtilOptionText($p_option) + { + + $v_list = get_defined_constants(); + for (reset($v_list); $v_key = key($v_list); next($v_list)) { + $v_prefix = substr($v_key, 0, 10); + if (( ($v_prefix == 'PCLZIP_OPT') + || ($v_prefix == 'PCLZIP_CB_') + || ($v_prefix == 'PCLZIP_ATT')) + && ($v_list[$v_key] == $p_option)) { + return $v_key; + } + } + + $v_result = 'Unknown'; + + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilTranslateWinPath() + // Description : + // Translate windows path by replacing '\' by '/' and optionally removing + // drive letter. + // Parameters : + // $p_path : path to translate. + // $p_remove_disk_letter : true | false + // Return Values : + // The path translated. + // -------------------------------------------------------------------------------- + function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true) + { + if (stristr(php_uname(), 'windows')) { + // ----- Look for potential disk letter + if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) { + $p_path = substr($p_path, $v_position+1); + } + // ----- Change potential windows directory separator + if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) { + $p_path = strtr($p_path, '\\', '/'); + } + } + return $p_path; + } + // -------------------------------------------------------------------------------- + + +?> diff --git a/src/wp-admin/includes/class-wp-comments-list-table.php b/src/wp-admin/includes/class-wp-comments-list-table.php new file mode 100644 index 0000000..fd25129 --- /dev/null +++ b/src/wp-admin/includes/class-wp-comments-list-table.php @@ -0,0 +1,559 @@ + 'comments', + 'singular' => 'comment', + 'ajax' => true, + ) ); + } + + function ajax_user_can() { + return current_user_can('edit_posts'); + } + + function prepare_items() { + global $post_id, $comment_status, $search, $comment_type; + + $comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all'; + if ( !in_array( $comment_status, array( 'all', 'moderated', 'approved', 'spam', 'trash' ) ) ) + $comment_status = 'all'; + + $comment_type = !empty( $_REQUEST['comment_type'] ) ? $_REQUEST['comment_type'] : ''; + + $search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s'] : ''; + + $user_id = ( isset( $_REQUEST['user_id'] ) ) ? $_REQUEST['user_id'] : ''; + + $orderby = ( isset( $_REQUEST['orderby'] ) ) ? $_REQUEST['orderby'] : ''; + $order = ( isset( $_REQUEST['order'] ) ) ? $_REQUEST['order'] : ''; + + $comments_per_page = $this->get_per_page( $comment_status ); + + $doing_ajax = defined( 'DOING_AJAX' ) && DOING_AJAX; + + if ( isset( $_REQUEST['number'] ) ) { + $number = (int) $_REQUEST['number']; + } + else { + $number = $comments_per_page + min( 8, $comments_per_page ); // Grab a few extra + } + + $page = $this->get_pagenum(); + + if ( isset( $_REQUEST['start'] ) ) { + $start = $_REQUEST['start']; + } else { + $start = ( $page - 1 ) * $comments_per_page; + } + + if ( $doing_ajax && isset( $_REQUEST['offset'] ) ) { + $start += $_REQUEST['offset']; + } + + $status_map = array( + 'moderated' => 'hold', + 'approved' => 'approve' + ); + + $args = array( + 'status' => isset( $status_map[$comment_status] ) ? $status_map[$comment_status] : $comment_status, + 'search' => $search, + 'user_id' => $user_id, + 'offset' => $start, + 'number' => $number, + 'post_id' => $post_id, + 'type' => $comment_type, + 'orderby' => $orderby, + 'order' => $order, + ); + + $_comments = get_comments( $args ); + + update_comment_cache( $_comments ); + + $this->items = array_slice( $_comments, 0, $comments_per_page ); + $this->extra_items = array_slice( $_comments, $comments_per_page ); + + $total_comments = get_comments( array_merge( $args, array('count' => true, 'offset' => 0, 'number' => 0) ) ); + + $_comment_post_ids = array(); + foreach ( $_comments as $_c ) { + $_comment_post_ids[] = $_c->comment_post_ID; + } + + $_comment_post_ids = array_unique( $_comment_post_ids ); + + $this->pending_count = get_pending_comments_num( $_comment_post_ids ); + + $this->set_pagination_args( array( + 'total_items' => $total_comments, + 'per_page' => $comments_per_page, + ) ); + } + + function get_per_page( $comment_status = 'all' ) { + $comments_per_page = $this->get_items_per_page( 'edit_comments_per_page' ); + $comments_per_page = apply_filters( 'comments_per_page', $comments_per_page, $comment_status ); + return $comments_per_page; + } + + function no_items() { + global $comment_status; + + if ( 'moderated' == $comment_status ) + _e( 'No comments awaiting moderation… yet.' ); + else + _e( 'No comments found.' ); + } + + function get_views() { + global $post_id, $comment_status; + + $status_links = array(); + $num_comments = ( $post_id ) ? wp_count_comments( $post_id ) : wp_count_comments(); + //, number_format_i18n($num_comments->moderated) ), "" . number_format_i18n($num_comments->moderated) . ""), + //, number_format_i18n($num_comments->spam) ), "" . number_format_i18n($num_comments->spam) . "") + $stati = array( + 'all' => _nx_noop('All', 'All', 'comments'), // singular not used + 'moderated' => _n_noop('Pending (%s)', 'Pending (%s)'), + 'approved' => _n_noop('Approved', 'Approved'), // singular not used + 'spam' => _n_noop('Spam (%s)', 'Spam (%s)'), + 'trash' => _n_noop('Trash (%s)', 'Trash (%s)') + ); + + if ( !EMPTY_TRASH_DAYS ) + unset($stati['trash']); + + $link = 'edit-comments.php'; + if ( !empty($comment_type) && 'all' != $comment_type ) + $link = add_query_arg( 'comment_type', $comment_type, $link ); + + foreach ( $stati as $status => $label ) { + $class = ( $status == $comment_status ) ? ' class="current"' : ''; + + if ( !isset( $num_comments->$status ) ) + $num_comments->$status = 10; + $link = add_query_arg( 'comment_status', $status, $link ); + if ( $post_id ) + $link = add_query_arg( 'p', absint( $post_id ), $link ); + /* + // I toyed with this, but decided against it. Leaving it in here in case anyone thinks it is a good idea. ~ Mark + if ( !empty( $_REQUEST['s'] ) ) + $link = add_query_arg( 's', esc_attr( stripslashes( $_REQUEST['s'] ) ), $link ); + */ + $status_links[$status] = "" . sprintf( + translate_nooped_plural( $label, $num_comments->$status ), + number_format_i18n( $num_comments->$status ) + ) . ''; + } + + $status_links = apply_filters( 'comment_status_links', $status_links ); + return $status_links; + } + + function get_bulk_actions() { + global $comment_status; + + $actions = array(); + if ( in_array( $comment_status, array( 'all', 'approved' ) ) ) + $actions['unapprove'] = __( 'Unapprove' ); + if ( in_array( $comment_status, array( 'all', 'moderated', 'spam' ) ) ) + $actions['approve'] = __( 'Approve' ); + if ( in_array( $comment_status, array( 'all', 'moderated', 'approved' ) ) ) + $actions['spam'] = _x( 'Mark as Spam', 'comment' ); + + if ( 'trash' == $comment_status ) + $actions['untrash'] = __( 'Restore' ); + elseif ( 'spam' == $comment_status ) + $actions['unspam'] = _x( 'Not Spam', 'comment' ); + + if ( in_array( $comment_status, array( 'trash', 'spam' ) ) || !EMPTY_TRASH_DAYS ) + $actions['delete'] = __( 'Delete Permanently' ); + else + $actions['trash'] = __( 'Move to Trash' ); + + return $actions; + } + + function extra_tablenav( $which ) { + global $comment_status, $comment_type; +?> +
+ + + 'post-query-submit' ) ); + } + + if ( ( 'spam' == $comment_status || 'trash' == $comment_status ) && current_user_can( 'moderate_comments' ) ) { + wp_nonce_field( 'bulk-destroy', '_destroy_nonce' ); + $title = ( 'spam' == $comment_status ) ? esc_attr__( 'Empty Spam' ) : esc_attr__( 'Empty Trash' ); + submit_button( $title, 'button-secondary apply', 'delete_all', false ); + } + do_action( 'manage_comments_nav', $comment_status ); + echo '
'; + } + + function current_action() { + if ( isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) ) + return 'delete_all'; + + return parent::current_action(); + } + + function get_columns() { + global $post_id; + + $columns = array(); + + if ( $this->checkbox ) + $columns['cb'] = ''; + + $columns['author'] = __( 'Author' ); + $columns['comment'] = _x( 'Comment', 'column name' ); + + if ( !$post_id ) + $columns['response'] = _x( 'In Response To', 'column name' ); + + return $columns; + } + + function get_sortable_columns() { + return array( + 'author' => 'comment_author', + 'response' => 'comment_post_ID' + ); + } + + function display() { + extract( $this->_args ); + + wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' ); + + $this->display_tablenav( 'top' ); + +?> + + + + print_column_headers(); ?> + + + + + + print_column_headers( false ); ?> + + + + + display_rows_or_placeholder(); ?> + + + + items = $this->extra_items; $this->display_rows(); ?> + +
+display_tablenav( 'bottom' ); + } + + function single_row( $a_comment ) { + global $post, $comment, $the_comment_status; + + $comment = $a_comment; + $the_comment_status = wp_get_comment_status( $comment->comment_ID ); + + $post = get_post( $comment->comment_post_ID ); + + $this->user_can = current_user_can( 'edit_comment', $comment->comment_ID ); + + echo ""; + echo $this->single_row_columns( $comment ); + echo ""; + } + + function column_cb( $comment ) { + if ( $this->user_can ) + echo ""; + } + + function column_comment( $comment ) { + global $post, $comment_status, $the_comment_status; + + $user_can = $this->user_can; + + $comment_url = esc_url( get_comment_link( $comment->comment_ID ) ); + + $ptime = date( 'G', strtotime( $comment->comment_date ) ); + if ( ( abs( time() - $ptime ) ) < 86400 ) + $ptime = sprintf( __( '%s ago' ), human_time_diff( $ptime ) ); + else + $ptime = mysql2date( __( 'Y/m/d \a\t g:i A' ), $comment->comment_date ); + + if ( $user_can ) { + $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) ); + $approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) ); + + $url = "comment.php?c=$comment->comment_ID"; + + $approve_url = esc_url( $url . "&action=approvecomment&$approve_nonce" ); + $unapprove_url = esc_url( $url . "&action=unapprovecomment&$approve_nonce" ); + $spam_url = esc_url( $url . "&action=spamcomment&$del_nonce" ); + $unspam_url = esc_url( $url . "&action=unspamcomment&$del_nonce" ); + $trash_url = esc_url( $url . "&action=trashcomment&$del_nonce" ); + $untrash_url = esc_url( $url . "&action=untrashcomment&$del_nonce" ); + $delete_url = esc_url( $url . "&action=deletecomment&$del_nonce" ); + } + + echo ''; + comment_text(); + if ( $user_can ) { ?> + + '', 'unapprove' => '', + 'reply' => '', + 'quickedit' => '', + 'edit' => '', + 'spam' => '', 'unspam' => '', + 'trash' => '', 'untrash' => '', 'delete' => '' + ); + + if ( $comment_status && 'all' != $comment_status ) { // not looking at all comments + if ( 'approved' == $the_comment_status ) + $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; + else if ( 'unapproved' == $the_comment_status ) + $actions['approve'] = "" . __( 'Approve' ) . ''; + } else { + $actions['approve'] = "" . __( 'Approve' ) . ''; + $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; + } + + if ( 'spam' != $the_comment_status && 'trash' != $the_comment_status ) { + $actions['spam'] = "" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . ''; + } elseif ( 'spam' == $the_comment_status ) { + $actions['unspam'] = "" . _x( 'Not Spam', 'comment' ) . ''; + } elseif ( 'trash' == $the_comment_status ) { + $actions['untrash'] = "" . __( 'Restore' ) . ''; + } + + if ( 'spam' == $the_comment_status || 'trash' == $the_comment_status || !EMPTY_TRASH_DAYS ) { + $actions['delete'] = "" . __( 'Delete Permanently' ) . ''; + } else { + $actions['trash'] = "" . _x( 'Trash', 'verb' ) . ''; + } + + if ( 'trash' != $the_comment_status ) { + $actions['edit'] = "". __( 'Edit' ) . ''; + $actions['quickedit'] = '' . __( 'Quick Edit' ) . ''; + if ( 'spam' != $the_comment_status ) + $actions['reply'] = '' . __( 'Reply' ) . ''; + } + + $actions = apply_filters( 'comment_row_actions', array_filter( $actions ), $comment ); + + $i = 0; + echo '
'; + foreach ( $actions as $action => $link ) { + ++$i; + ( ( ( 'approve' == $action || 'unapprove' == $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | '; + + // Reply and quickedit need a hide-if-no-js span when not added with ajax + if ( ( 'reply' == $action || 'quickedit' == $action ) && ! defined('DOING_AJAX') ) + $action .= ' hide-if-no-js'; + elseif ( ( $action == 'untrash' && $the_comment_status == 'trash' ) || ( $action == 'unspam' && $the_comment_status == 'spam' ) ) { + if ( '1' == get_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', true ) ) + $action .= ' approve'; + else + $action .= ' unapprove'; + } + + echo "$sep$link"; + } + echo '
'; + } + } + + function column_author( $comment ) { + global $comment_status; + + $author_url = get_comment_author_url(); + if ( 'http://' == $author_url ) + $author_url = ''; + $author_url_display = preg_replace( '|http://(www\.)?|i', '', $author_url ); + if ( strlen( $author_url_display ) > 50 ) + $author_url_display = substr( $author_url_display, 0, 49 ) . '...'; + + echo ""; comment_author(); echo '
'; + if ( !empty( $author_url ) ) + echo "$author_url_display
"; + + if ( $this->user_can ) { + if ( !empty( $comment->comment_author_email ) ) { + comment_author_email_link(); + echo '
'; + } + echo ''; + comment_author_IP(); + echo ''; + } + } + + function column_date( $comment ) { + return get_comment_date( __( 'Y/m/d \a\t g:ia' ) ); + } + + function column_response( $comment ) { + global $post; + + if ( isset( $this->pending_count[$post->ID] ) ) { + $pending_comments = $this->pending_count[$post->ID]; + } else { + $_pending_count_temp = get_pending_comments_num( array( $post->ID ) ); + $pending_comments = $this->pending_count[$post->ID] = $_pending_count_temp[$post->ID]; + } + + if ( current_user_can( 'edit_post', $post->ID ) ) { + $post_link = ""; + $post_link .= get_the_title( $post->ID ) . ''; + } else { + $post_link = get_the_title( $post->ID ); + } + + echo ''; + if ( 'attachment' == $post->post_type && ( $thumb = wp_get_attachment_image( $post->ID, array( 80, 60 ), true ) ) ) + echo $thumb; + } + + function column_default( $comment, $column_name ) { + do_action( 'manage_comments_custom_column', $column_name, $comment->comment_ID ); + } +} + +/** + * Post Comments List Table class. + * + * @package WordPress + * @subpackage List_Table + * @since 3.1.0 + * @access private + * + * @see WP_Comments_Table + */ +class WP_Post_Comments_List_Table extends WP_Comments_List_Table { + + function get_column_info() { + $this->_column_headers = array( + array( + 'author' => __( 'Author' ), + 'comment' => _x( 'Comment', 'column name' ), + ), + array(), + array(), + ); + + return $this->_column_headers; + } + + function get_table_classes() { + $classes = parent::get_table_classes(); + $classes[] = 'comments-box'; + return $classes; + } + + function display( $output_empty = false ) { + extract( $this->_args ); + + wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' ); +?> + + > + display_rows_or_placeholder(); ?> + + + diff --git a/src/wp-admin/includes/class-wp-filesystem-base.php b/src/wp-admin/includes/class-wp-filesystem-base.php new file mode 100644 index 0000000..fd3fdc3 --- /dev/null +++ b/src/wp-admin/includes/class-wp-filesystem-base.php @@ -0,0 +1,332 @@ +find_folder(ABSPATH); + //Perhaps the FTP folder is rooted at the WordPress install, Check for wp-includes folder in root, Could have some false positives, but rare. + if ( ! $folder && $this->is_dir('/wp-includes') ) + $folder = '/'; + return $folder; + } + /** + * Returns the path on the remote filesystem of WP_CONTENT_DIR + * + * @since 2.7 + * @access public + * @return string The location of the remote path. + */ + function wp_content_dir() { + return $this->find_folder(WP_CONTENT_DIR); + } + /** + * Returns the path on the remote filesystem of WP_PLUGIN_DIR + * + * @since 2.7 + * @access public + * + * @return string The location of the remote path. + */ + function wp_plugins_dir() { + return $this->find_folder(WP_PLUGIN_DIR); + } + /** + * Returns the path on the remote filesystem of the Themes Directory + * + * @since 2.7 + * @access public + * + * @return string The location of the remote path. + */ + function wp_themes_dir() { + return $this->wp_content_dir() . 'themes/'; + } + /** + * Returns the path on the remote filesystem of WP_LANG_DIR + * + * @since 3.2.0 + * @access public + * + * @return string The location of the remote path. + */ + function wp_lang_dir() { + return $this->find_folder(WP_LANG_DIR); + } + + /** + * Locates a folder on the remote filesystem. + * + * Deprecated; use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead. + * + * @since 2.5 + * @deprecated 2.7 + * @access public + * + * @param string $base The folder to start searching from + * @param bool $echo True to display debug information + * @return string The location of the remote path. + */ + function find_base_dir($base = '.', $echo = false) { + _deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' ); + $this->verbose = $echo; + return $this->abspath(); + } + /** + * Locates a folder on the remote filesystem. + * + * Deprecated; use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead. + * + * @since 2.5 + * @deprecated 2.7 + * @access public + * + * @param string $base The folder to start searching from + * @param bool $echo True to display debug information + * @return string The location of the remote path. + */ + function get_base_dir($base = '.', $echo = false) { + _deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' ); + $this->verbose = $echo; + return $this->abspath(); + } + + /** + * Locates a folder on the remote filesystem. + * + * Assumes that on Windows systems, Stripping off the Drive letter is OK + * Sanitizes \\ to / in windows filepaths. + * + * @since 2.7 + * @access public + * + * @param string $folder the folder to locate + * @return string The location of the remote path. + */ + function find_folder($folder) { + + if ( strpos($this->method, 'ftp') !== false ) { + $constant_overrides = array( 'FTP_BASE' => ABSPATH, 'FTP_CONTENT_DIR' => WP_CONTENT_DIR, 'FTP_PLUGIN_DIR' => WP_PLUGIN_DIR, 'FTP_LANG_DIR' => WP_LANG_DIR ); + foreach ( $constant_overrides as $constant => $dir ) + if ( defined($constant) && $folder === $dir ) + return trailingslashit(constant($constant)); + } elseif ( 'direct' == $this->method ) { + $folder = str_replace('\\', '/', $folder); //Windows path sanitiation + return trailingslashit($folder); + } + + $folder = preg_replace('|^([a-z]{1}):|i', '', $folder); //Strip out windows driveletter if its there. + $folder = str_replace('\\', '/', $folder); //Windows path sanitiation + + if ( isset($this->cache[ $folder ] ) ) + return $this->cache[ $folder ]; + + if ( $this->exists($folder) ) { //Folder exists at that absolute path. + $folder = trailingslashit($folder); + $this->cache[ $folder ] = $folder; + return $folder; + } + if ( $return = $this->search_for_folder($folder) ) + $this->cache[ $folder ] = $return; + return $return; + } + + /** + * Locates a folder on the remote filesystem. + * + * Expects Windows sanitized path + * + * @since 2.7 + * @access private + * + * @param string $folder the folder to locate + * @param string $base the folder to start searching from + * @param bool $loop if the function has recursed, Internal use only + * @return string The location of the remote path. + */ + function search_for_folder($folder, $base = '.', $loop = false ) { + if ( empty( $base ) || '.' == $base ) + $base = trailingslashit($this->cwd()); + + $folder = untrailingslashit($folder); + + $folder_parts = explode('/', $folder); + $last_path = $folder_parts[ count($folder_parts) - 1 ]; + + $files = $this->dirlist( $base ); + + foreach ( $folder_parts as $key ) { + if ( $key == $last_path ) + continue; //We want this to be caught by the next code block. + + //Working from /home/ to /user/ to /wordpress/ see if that file exists within the current folder, + // If its found, change into it and follow through looking for it. + // If it cant find WordPress down that route, it'll continue onto the next folder level, and see if that matches, and so on. + // If it reaches the end, and still cant find it, it'll return false for the entire function. + if ( isset($files[ $key ]) ){ + //Lets try that folder: + $newdir = trailingslashit(path_join($base, $key)); + if ( $this->verbose ) + printf( __('Changing to %s') . '
', $newdir ); + if ( $ret = $this->search_for_folder( $folder, $newdir, $loop) ) + return $ret; + } + } + + //Only check this as a last resort, to prevent locating the incorrect install. All above procedures will fail quickly if this is the right branch to take. + if (isset( $files[ $last_path ] ) ) { + if ( $this->verbose ) + printf( __('Found %s') . '
', $base . $last_path ); + return trailingslashit($base . $last_path); + } + if ( $loop ) + return false; //Prevent this function from looping again. + //As an extra last resort, Change back to / if the folder wasnt found. This comes into effect when the CWD is /home/user/ but WP is at /var/www/.... mainly dedicated setups. + return $this->search_for_folder($folder, '/', true); + + } + + /** + * Returns the *nix style file permissions for a file + * + * From the PHP documentation page for fileperms() + * + * @link http://docs.php.net/fileperms + * @since 2.5 + * @access public + * + * @param string $file string filename + * @return int octal representation of permissions + */ + function gethchmod($file){ + $perms = $this->getchmod($file); + if (($perms & 0xC000) == 0xC000) // Socket + $info = 's'; + elseif (($perms & 0xA000) == 0xA000) // Symbolic Link + $info = 'l'; + elseif (($perms & 0x8000) == 0x8000) // Regular + $info = '-'; + elseif (($perms & 0x6000) == 0x6000) // Block special + $info = 'b'; + elseif (($perms & 0x4000) == 0x4000) // Directory + $info = 'd'; + elseif (($perms & 0x2000) == 0x2000) // Character special + $info = 'c'; + elseif (($perms & 0x1000) == 0x1000) // FIFO pipe + $info = 'p'; + else // Unknown + $info = 'u'; + + // Owner + $info .= (($perms & 0x0100) ? 'r' : '-'); + $info .= (($perms & 0x0080) ? 'w' : '-'); + $info .= (($perms & 0x0040) ? + (($perms & 0x0800) ? 's' : 'x' ) : + (($perms & 0x0800) ? 'S' : '-')); + + // Group + $info .= (($perms & 0x0020) ? 'r' : '-'); + $info .= (($perms & 0x0010) ? 'w' : '-'); + $info .= (($perms & 0x0008) ? + (($perms & 0x0400) ? 's' : 'x' ) : + (($perms & 0x0400) ? 'S' : '-')); + + // World + $info .= (($perms & 0x0004) ? 'r' : '-'); + $info .= (($perms & 0x0002) ? 'w' : '-'); + $info .= (($perms & 0x0001) ? + (($perms & 0x0200) ? 't' : 'x' ) : + (($perms & 0x0200) ? 'T' : '-')); + return $info; + } + + /** + * Converts *nix style file permissions to a octal number. + * + * Converts '-rw-r--r--' to 0644 + * From "info at rvgate dot nl"'s comment on the PHP documentation for chmod() + * + * @link http://docs.php.net/manual/en/function.chmod.php#49614 + * @since 2.5 + * @access public + * + * @param string $mode string *nix style file permission + * @return int octal representation + */ + function getnumchmodfromh($mode) { + $realmode = ''; + $legal = array('', 'w', 'r', 'x', '-'); + $attarray = preg_split('//', $mode); + + for ($i=0; $i < count($attarray); $i++) + if ($key = array_search($attarray[$i], $legal)) + $realmode .= $legal[$key]; + + $mode = str_pad($realmode, 9, '-'); + $trans = array('-'=>'0', 'r'=>'4', 'w'=>'2', 'x'=>'1'); + $mode = strtr($mode,$trans); + + $newmode = ''; + $newmode .= $mode[0] + $mode[1] + $mode[2]; + $newmode .= $mode[3] + $mode[4] + $mode[5]; + $newmode .= $mode[6] + $mode[7] + $mode[8]; + return $newmode; + } + + /** + * Determines if the string provided contains binary characters. + * + * @since 2.7 + * @access private + * + * @param string $text String to test against + * @return bool true if string is binary, false otherwise + */ + function is_binary( $text ) { + return (bool) preg_match('|[^\x20-\x7E]|', $text); //chr(32)..chr(127) + } +} + +?> diff --git a/src/wp-admin/includes/class-wp-filesystem-direct.php b/src/wp-admin/includes/class-wp-filesystem-direct.php new file mode 100644 index 0000000..9703d73 --- /dev/null +++ b/src/wp-admin/includes/class-wp-filesystem-direct.php @@ -0,0 +1,364 @@ +method = 'direct'; + $this->errors = new WP_Error(); + } + /** + * connect filesystem. + * + * @return bool Returns true on success or false on failure (always true for WP_Filesystem_Direct). + */ + function connect() { + return true; + } + /** + * Reads entire file into a string + * + * @param string $file Name of the file to read. + * @return string|bool The function returns the read data or false on failure. + */ + function get_contents($file) { + return @file_get_contents($file); + } + /** + * Reads entire file into an array + * + * @param string $file Path to the file. + * @return array|bool the file contents in an array or false on failure. + */ + function get_contents_array($file) { + return @file($file); + } + /** + * Write a string to a file + * + * @param string $file Remote path to the file where to write the data. + * @param string $contents The data to write. + * @param int $mode (optional) The file permissions as octal number, usually 0644. + * @return bool False upon failure. + */ + function put_contents($file, $contents, $mode = false ) { + if ( ! ($fp = @fopen($file, 'w')) ) + return false; + @fwrite($fp, $contents); + @fclose($fp); + $this->chmod($file, $mode); + return true; + } + /** + * Gets the current working directory + * + * @return string|bool the current working directory on success, or false on failure. + */ + function cwd() { + return @getcwd(); + } + /** + * Change directory + * + * @param string $dir The new current directory. + * @return bool Returns true on success or false on failure. + */ + function chdir($dir) { + return @chdir($dir); + } + /** + * Changes file group + * + * @param string $file Path to the file. + * @param mixed $group A group name or number. + * @param bool $recursive (optional) If set True changes file group recursivly. Defaults to False. + * @return bool Returns true on success or false on failure. + */ + function chgrp($file, $group, $recursive = false) { + if ( ! $this->exists($file) ) + return false; + if ( ! $recursive ) + return @chgrp($file, $group); + if ( ! $this->is_dir($file) ) + return @chgrp($file, $group); + //Is a directory, and we want recursive + $file = trailingslashit($file); + $filelist = $this->dirlist($file); + foreach ($filelist as $filename) + $this->chgrp($file . $filename, $group, $recursive); + + return true; + } + /** + * Changes filesystem permissions + * + * @param string $file Path to the file. + * @param int $mode (optional) The permissions as octal number, usually 0644 for files, 0755 for dirs. + * @param bool $recursive (optional) If set True changes file group recursivly. Defaults to False. + * @return bool Returns true on success or false on failure. + */ + function chmod($file, $mode = false, $recursive = false) { + if ( ! $mode ) { + if ( $this->is_file($file) ) + $mode = FS_CHMOD_FILE; + elseif ( $this->is_dir($file) ) + $mode = FS_CHMOD_DIR; + else + return false; + } + + if ( ! $recursive || ! $this->is_dir($file) ) + return @chmod($file, $mode); + //Is a directory, and we want recursive + $file = trailingslashit($file); + $filelist = $this->dirlist($file); + foreach ( (array)$filelist as $filename => $filemeta) + $this->chmod($file . $filename, $mode, $recursive); + + return true; + } + /** + * Changes file owner + * + * @param string $file Path to the file. + * @param mixed $owner A user name or number. + * @param bool $recursive (optional) If set True changes file owner recursivly. Defaults to False. + * @return bool Returns true on success or false on failure. + */ + function chown($file, $owner, $recursive = false) { + if ( ! $this->exists($file) ) + return false; + if ( ! $recursive ) + return @chown($file, $owner); + if ( ! $this->is_dir($file) ) + return @chown($file, $owner); + //Is a directory, and we want recursive + $filelist = $this->dirlist($file); + foreach ($filelist as $filename) { + $this->chown($file . '/' . $filename, $owner, $recursive); + } + return true; + } + /** + * Gets file owner + * + * @param string $file Path to the file. + * @return string Username of the user. + */ + function owner($file) { + $owneruid = @fileowner($file); + if ( ! $owneruid ) + return false; + if ( ! function_exists('posix_getpwuid') ) + return $owneruid; + $ownerarray = posix_getpwuid($owneruid); + return $ownerarray['name']; + } + /** + * Gets file permissions + * + * FIXME does not handle errors in fileperms() + * + * @param string $file Path to the file. + * @return string Mode of the file (last 4 digits). + */ + function getchmod($file) { + return substr(decoct(@fileperms($file)),3); + } + function group($file) { + $gid = @filegroup($file); + if ( ! $gid ) + return false; + if ( ! function_exists('posix_getgrgid') ) + return $gid; + $grouparray = posix_getgrgid($gid); + return $grouparray['name']; + } + + function copy($source, $destination, $overwrite = false, $mode = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + + $rtval = copy($source, $destination); + if ( $mode ) + $this->chmod($destination, $mode); + return $rtval; + } + + function move($source, $destination, $overwrite = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + + // try using rename first. if that fails (for example, source is read only) try copy + if ( @rename($source, $destination) ) + return true; + + if ( $this->copy($source, $destination, $overwrite) && $this->exists($destination) ) { + $this->delete($source); + return true; + } else { + return false; + } + } + + function delete($file, $recursive = false, $type = false) { + if ( empty($file) ) //Some filesystems report this as /, which can cause non-expected recursive deletion of all files in the filesystem. + return false; + $file = str_replace('\\', '/', $file); //for win32, occasional problems deleting files otherwise + + if ( 'f' == $type || $this->is_file($file) ) + return @unlink($file); + if ( ! $recursive && $this->is_dir($file) ) + return @rmdir($file); + + //At this point its a folder, and we're in recursive mode + $file = trailingslashit($file); + $filelist = $this->dirlist($file, true); + + $retval = true; + if ( is_array($filelist) ) //false if no files, So check first. + foreach ($filelist as $filename => $fileinfo) + if ( ! $this->delete($file . $filename, $recursive, $fileinfo['type']) ) + $retval = false; + + if ( file_exists($file) && ! @rmdir($file) ) + $retval = false; + return $retval; + } + + function exists($file) { + return @file_exists($file); + } + + function is_file($file) { + return @is_file($file); + } + + function is_dir($path) { + return @is_dir($path); + } + + function is_readable($file) { + return @is_readable($file); + } + + function is_writable($file) { + return @is_writable($file); + } + + function atime($file) { + return @fileatime($file); + } + + function mtime($file) { + return @filemtime($file); + } + function size($file) { + return @filesize($file); + } + + function touch($file, $time = 0, $atime = 0) { + if ($time == 0) + $time = time(); + if ($atime == 0) + $atime = time(); + return @touch($file, $time, $atime); + } + + function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { + // safe mode fails with a trailing slash under certain PHP versions. + $path = untrailingslashit($path); + if ( empty($path) ) + $path = '/'; + + if ( ! $chmod ) + $chmod = FS_CHMOD_DIR; + + if ( ! @mkdir($path) ) + return false; + $this->chmod($path, $chmod); + if ( $chown ) + $this->chown($path, $chown); + if ( $chgrp ) + $this->chgrp($path, $chgrp); + return true; + } + + function rmdir($path, $recursive = false) { + return $this->delete($path, $recursive); + } + + function dirlist($path, $include_hidden = true, $recursive = false) { + if ( $this->is_file($path) ) { + $limit_file = basename($path); + $path = dirname($path); + } else { + $limit_file = false; + } + + if ( ! $this->is_dir($path) ) + return false; + + $dir = @dir($path); + if ( ! $dir ) + return false; + + $ret = array(); + + while (false !== ($entry = $dir->read()) ) { + $struc = array(); + $struc['name'] = $entry; + + if ( '.' == $struc['name'] || '..' == $struc['name'] ) + continue; + + if ( ! $include_hidden && '.' == $struc['name'][0] ) + continue; + + if ( $limit_file && $struc['name'] != $limit_file) + continue; + + $struc['perms'] = $this->gethchmod($path.'/'.$entry); + $struc['permsn'] = $this->getnumchmodfromh($struc['perms']); + $struc['number'] = false; + $struc['owner'] = $this->owner($path.'/'.$entry); + $struc['group'] = $this->group($path.'/'.$entry); + $struc['size'] = $this->size($path.'/'.$entry); + $struc['lastmodunix']= $this->mtime($path.'/'.$entry); + $struc['lastmod'] = date('M j',$struc['lastmodunix']); + $struc['time'] = date('h:i:s',$struc['lastmodunix']); + $struc['type'] = $this->is_dir($path.'/'.$entry) ? 'd' : 'f'; + + if ( 'd' == $struc['type'] ) { + if ( $recursive ) + $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); + else + $struc['files'] = array(); + } + + $ret[ $struc['name'] ] = $struc; + } + $dir->close(); + unset($dir); + return $ret; + } +} +?> diff --git a/src/wp-admin/includes/class-wp-filesystem-ftpext.php b/src/wp-admin/includes/class-wp-filesystem-ftpext.php new file mode 100644 index 0000000..ff65d4c --- /dev/null +++ b/src/wp-admin/includes/class-wp-filesystem-ftpext.php @@ -0,0 +1,387 @@ +method = 'ftpext'; + $this->errors = new WP_Error(); + + //Check if possible to use ftp functions. + if ( ! extension_loaded('ftp') ) { + $this->errors->add('no_ftp_ext', __('The ftp PHP extension is not available')); + return false; + } + + // Set defaults: + //This Class uses the timeout on a per-connection basis, Others use it on a per-action basis. + + if ( ! defined('FS_TIMEOUT') ) + define('FS_TIMEOUT', 240); + + if ( empty($opt['port']) ) + $this->options['port'] = 21; + else + $this->options['port'] = $opt['port']; + + if ( empty($opt['hostname']) ) + $this->errors->add('empty_hostname', __('FTP hostname is required')); + else + $this->options['hostname'] = $opt['hostname']; + + if ( ! empty($opt['base']) ) + $this->wp_base = $opt['base']; + + // Check if the options provided are OK. + if ( empty($opt['username']) ) + $this->errors->add('empty_username', __('FTP username is required')); + else + $this->options['username'] = $opt['username']; + + if ( empty($opt['password']) ) + $this->errors->add('empty_password', __('FTP password is required')); + else + $this->options['password'] = $opt['password']; + + $this->options['ssl'] = false; + if ( isset($opt['connection_type']) && 'ftps' == $opt['connection_type'] ) + $this->options['ssl'] = true; + } + + function connect() { + if ( isset($this->options['ssl']) && $this->options['ssl'] && function_exists('ftp_ssl_connect') ) + $this->link = @ftp_ssl_connect($this->options['hostname'], $this->options['port'], FS_CONNECT_TIMEOUT); + else + $this->link = @ftp_connect($this->options['hostname'], $this->options['port'], FS_CONNECT_TIMEOUT); + + if ( ! $this->link ) { + $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); + return false; + } + + if ( ! @ftp_login($this->link,$this->options['username'], $this->options['password']) ) { + $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username'])); + return false; + } + + //Set the Connection to use Passive FTP + @ftp_pasv( $this->link, true ); + if ( @ftp_get_option($this->link, FTP_TIMEOUT_SEC) < FS_TIMEOUT ) + @ftp_set_option($this->link, FTP_TIMEOUT_SEC, FS_TIMEOUT); + + return true; + } + + function get_contents($file, $type = '', $resumepos = 0 ) { + if ( empty($type) ) + $type = FTP_BINARY; + + $tempfile = wp_tempnam($file); + $temp = fopen($tempfile, 'w+'); + + if ( ! $temp ) + return false; + + if ( ! @ftp_fget($this->link, $temp, $file, $type, $resumepos) ) + return false; + + fseek($temp, 0); //Skip back to the start of the file being written to + $contents = ''; + + while ( ! feof($temp) ) + $contents .= fread($temp, 8192); + + fclose($temp); + unlink($tempfile); + return $contents; + } + function get_contents_array($file) { + return explode("\n", $this->get_contents($file)); + } + + function put_contents($file, $contents, $mode = false ) { + $tempfile = wp_tempnam($file); + $temp = fopen($tempfile, 'w+'); + if ( ! $temp ) + return false; + + fwrite($temp, $contents); + fseek($temp, 0); //Skip back to the start of the file being written to + + $type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII; + $ret = @ftp_fput($this->link, $file, $temp, $type); + + fclose($temp); + unlink($tempfile); + + $this->chmod($file, $mode); + + return $ret; + } + function cwd() { + $cwd = @ftp_pwd($this->link); + if ( $cwd ) + $cwd = trailingslashit($cwd); + return $cwd; + } + function chdir($dir) { + return @ftp_chdir($this->link, $dir); + } + function chgrp($file, $group, $recursive = false ) { + return false; + } + function chmod($file, $mode = false, $recursive = false) { + if ( ! $mode ) { + if ( $this->is_file($file) ) + $mode = FS_CHMOD_FILE; + elseif ( $this->is_dir($file) ) + $mode = FS_CHMOD_DIR; + else + return false; + } + + // chmod any sub-objects if recursive. + if ( $recursive && $this->is_dir($file) ) { + $filelist = $this->dirlist($file); + foreach ( (array)$filelist as $filename => $filemeta ) + $this->chmod($file . '/' . $filename, $mode, $recursive); + } + + // chmod the file or directory + if ( ! function_exists('ftp_chmod') ) + return (bool)@ftp_site($this->link, sprintf('CHMOD %o %s', $mode, $file)); + return (bool)@ftp_chmod($this->link, $mode, $file); + } + function chown($file, $owner, $recursive = false ) { + return false; + } + function owner($file) { + $dir = $this->dirlist($file); + return $dir[$file]['owner']; + } + function getchmod($file) { + $dir = $this->dirlist($file); + return $dir[$file]['permsn']; + } + function group($file) { + $dir = $this->dirlist($file); + return $dir[$file]['group']; + } + function copy($source, $destination, $overwrite = false, $mode = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + $content = $this->get_contents($source); + if ( false === $content) + return false; + return $this->put_contents($destination, $content, $mode); + } + function move($source, $destination, $overwrite = false) { + return ftp_rename($this->link, $source, $destination); + } + + function delete($file, $recursive = false, $type = false) { + if ( empty($file) ) + return false; + if ( 'f' == $type || $this->is_file($file) ) + return @ftp_delete($this->link, $file); + if ( !$recursive ) + return @ftp_rmdir($this->link, $file); + + $filelist = $this->dirlist( trailingslashit($file) ); + if ( !empty($filelist) ) + foreach ( $filelist as $delete_file ) + $this->delete( trailingslashit($file) . $delete_file['name'], $recursive, $delete_file['type'] ); + return @ftp_rmdir($this->link, $file); + } + + function exists($file) { + $list = @ftp_nlist($this->link, $file); + return !empty($list); //empty list = no file, so invert. + } + function is_file($file) { + return $this->exists($file) && !$this->is_dir($file); + } + function is_dir($path) { + $cwd = $this->cwd(); + $result = @ftp_chdir($this->link, trailingslashit($path) ); + if ( $result && $path == $this->cwd() || $this->cwd() != $cwd ) { + @ftp_chdir($this->link, $cwd); + return true; + } + return false; + } + function is_readable($file) { + //Get dir list, Check if the file is readable by the current user?? + return true; + } + function is_writable($file) { + //Get dir list, Check if the file is writable by the current user?? + return true; + } + function atime($file) { + return false; + } + function mtime($file) { + return ftp_mdtm($this->link, $file); + } + function size($file) { + return ftp_size($this->link, $file); + } + function touch($file, $time = 0, $atime = 0) { + return false; + } + function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { + if ( !@ftp_mkdir($this->link, $path) ) + return false; + $this->chmod($path, $chmod); + if ( $chown ) + $this->chown($path, $chown); + if ( $chgrp ) + $this->chgrp($path, $chgrp); + return true; + } + function rmdir($path, $recursive = false) { + return $this->delete($path, $recursive); + } + + function parselisting($line) { + static $is_windows; + if ( is_null($is_windows) ) + $is_windows = stripos( ftp_systype($this->link), 'win') !== false; + + if ( $is_windows && preg_match('/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|) +(.+)/', $line, $lucifer) ) { + $b = array(); + if ( $lucifer[3] < 70 ) + $lucifer[3] +=2000; + else + $lucifer[3] += 1900; // 4digit year fix + $b['isdir'] = ( $lucifer[7] == ''); + if ( $b['isdir'] ) + $b['type'] = 'd'; + else + $b['type'] = 'f'; + $b['size'] = $lucifer[7]; + $b['month'] = $lucifer[1]; + $b['day'] = $lucifer[2]; + $b['year'] = $lucifer[3]; + $b['hour'] = $lucifer[4]; + $b['minute'] = $lucifer[5]; + $b['time'] = @mktime($lucifer[4] + (strcasecmp($lucifer[6], "PM") == 0 ? 12 : 0), $lucifer[5], 0, $lucifer[1], $lucifer[2], $lucifer[3]); + $b['am/pm'] = $lucifer[6]; + $b['name'] = $lucifer[8]; + } elseif ( !$is_windows && $lucifer = preg_split('/[ ]/', $line, 9, PREG_SPLIT_NO_EMPTY)) { + //echo $line."\n"; + $lcount = count($lucifer); + if ( $lcount < 8 ) + return ''; + $b = array(); + $b['isdir'] = $lucifer[0]{0} === 'd'; + $b['islink'] = $lucifer[0]{0} === 'l'; + if ( $b['isdir'] ) + $b['type'] = 'd'; + elseif ( $b['islink'] ) + $b['type'] = 'l'; + else + $b['type'] = 'f'; + $b['perms'] = $lucifer[0]; + $b['number'] = $lucifer[1]; + $b['owner'] = $lucifer[2]; + $b['group'] = $lucifer[3]; + $b['size'] = $lucifer[4]; + if ( $lcount == 8 ) { + sscanf($lucifer[5], '%d-%d-%d', $b['year'], $b['month'], $b['day']); + sscanf($lucifer[6], '%d:%d', $b['hour'], $b['minute']); + $b['time'] = @mktime($b['hour'], $b['minute'], 0, $b['month'], $b['day'], $b['year']); + $b['name'] = $lucifer[7]; + } else { + $b['month'] = $lucifer[5]; + $b['day'] = $lucifer[6]; + if ( preg_match('/([0-9]{2}):([0-9]{2})/', $lucifer[7], $l2) ) { + $b['year'] = date("Y"); + $b['hour'] = $l2[1]; + $b['minute'] = $l2[2]; + } else { + $b['year'] = $lucifer[7]; + $b['hour'] = 0; + $b['minute'] = 0; + } + $b['time'] = strtotime( sprintf('%d %s %d %02d:%02d', $b['day'], $b['month'], $b['year'], $b['hour'], $b['minute']) ); + $b['name'] = $lucifer[8]; + } + } + + return $b; + } + + function dirlist($path = '.', $include_hidden = true, $recursive = false) { + if ( $this->is_file($path) ) { + $limit_file = basename($path); + $path = dirname($path) . '/'; + } else { + $limit_file = false; + } + + $pwd = @ftp_pwd($this->link); + if ( ! @ftp_chdir($this->link, $path) ) // Cant change to folder = folder doesnt exist + return false; + $list = @ftp_rawlist($this->link, '-a', false); + @ftp_chdir($this->link, $pwd); + + if ( empty($list) ) // Empty array = non-existent folder (real folder will show . at least) + return false; + + $dirlist = array(); + foreach ( $list as $k => $v ) { + $entry = $this->parselisting($v); + if ( empty($entry) ) + continue; + + if ( '.' == $entry['name'] || '..' == $entry['name'] ) + continue; + + if ( ! $include_hidden && '.' == $entry['name'][0] ) + continue; + + if ( $limit_file && $entry['name'] != $limit_file) + continue; + + $dirlist[ $entry['name'] ] = $entry; + } + + $ret = array(); + foreach ( (array)$dirlist as $struc ) { + if ( 'd' == $struc['type'] ) { + if ( $recursive ) + $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); + else + $struc['files'] = array(); + } + + $ret[ $struc['name'] ] = $struc; + } + return $ret; + } + + function __destruct() { + if ( $this->link ) + ftp_close($this->link); + } +} + +?> diff --git a/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php b/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php new file mode 100644 index 0000000..1dc170a --- /dev/null +++ b/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php @@ -0,0 +1,327 @@ +method = 'ftpsockets'; + $this->errors = new WP_Error(); + + //Check if possible to use ftp functions. + if ( ! @include_once ABSPATH . 'wp-admin/includes/class-ftp.php' ) + return false; + $this->ftp = new ftp(); + + //Set defaults: + if ( empty($opt['port']) ) + $this->options['port'] = 21; + else + $this->options['port'] = $opt['port']; + + if ( empty($opt['hostname']) ) + $this->errors->add('empty_hostname', __('FTP hostname is required')); + else + $this->options['hostname'] = $opt['hostname']; + + if ( ! empty($opt['base']) ) + $this->wp_base = $opt['base']; + + // Check if the options provided are OK. + if ( empty ($opt['username']) ) + $this->errors->add('empty_username', __('FTP username is required')); + else + $this->options['username'] = $opt['username']; + + if ( empty ($opt['password']) ) + $this->errors->add('empty_password', __('FTP password is required')); + else + $this->options['password'] = $opt['password']; + } + + function connect() { + if ( ! $this->ftp ) + return false; + + $this->ftp->setTimeout(FS_CONNECT_TIMEOUT); + + if ( ! $this->ftp->SetServer($this->options['hostname'], $this->options['port']) ) { + $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); + return false; + } + + if ( ! $this->ftp->connect() ) { + $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); + return false; + } + + if ( ! $this->ftp->login($this->options['username'], $this->options['password']) ) { + $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username'])); + return false; + } + + $this->ftp->SetType(FTP_AUTOASCII); + $this->ftp->Passive(true); + $this->ftp->setTimeout(FS_TIMEOUT); + return true; + } + + function get_contents($file, $type = '', $resumepos = 0) { + if ( ! $this->exists($file) ) + return false; + + if ( empty($type) ) + $type = FTP_AUTOASCII; + $this->ftp->SetType($type); + + $temp = wp_tempnam( $file ); + + if ( ! $temphandle = fopen($temp, 'w+') ) + return false; + + if ( ! $this->ftp->fget($temphandle, $file) ) { + fclose($temphandle); + unlink($temp); + return ''; //Blank document, File does exist, Its just blank. + } + + fseek($temphandle, 0); //Skip back to the start of the file being written to + $contents = ''; + + while ( ! feof($temphandle) ) + $contents .= fread($temphandle, 8192); + + fclose($temphandle); + unlink($temp); + return $contents; + } + + function get_contents_array($file) { + return explode("\n", $this->get_contents($file) ); + } + + function put_contents($file, $contents, $mode = false ) { + $temp = wp_tempnam( $file ); + if ( ! $temphandle = @fopen($temp, 'w+') ) { + unlink($temp); + return false; + } + + fwrite($temphandle, $contents); + fseek($temphandle, 0); //Skip back to the start of the file being written to + + $type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII; + $this->ftp->SetType($type); + + $ret = $this->ftp->fput($file, $temphandle); + + fclose($temphandle); + unlink($temp); + + $this->chmod($file, $mode); + + return $ret; + } + + function cwd() { + $cwd = $this->ftp->pwd(); + if ( $cwd ) + $cwd = trailingslashit($cwd); + return $cwd; + } + + function chdir($file) { + return $this->ftp->chdir($file); + } + + function chgrp($file, $group, $recursive = false ) { + return false; + } + + function chmod($file, $mode = false, $recursive = false ) { + if ( ! $mode ) { + if ( $this->is_file($file) ) + $mode = FS_CHMOD_FILE; + elseif ( $this->is_dir($file) ) + $mode = FS_CHMOD_DIR; + else + return false; + } + + // chmod any sub-objects if recursive. + if ( $recursive && $this->is_dir($file) ) { + $filelist = $this->dirlist($file); + foreach ( (array)$filelist as $filename => $filemeta ) + $this->chmod($file . '/' . $filename, $mode, $recursive); + } + + // chmod the file or directory + return $this->ftp->chmod($file, $mode); + } + + function chown($file, $owner, $recursive = false ) { + return false; + } + + function owner($file) { + $dir = $this->dirlist($file); + return $dir[$file]['owner']; + } + + function getchmod($file) { + $dir = $this->dirlist($file); + return $dir[$file]['permsn']; + } + + function group($file) { + $dir = $this->dirlist($file); + return $dir[$file]['group']; + } + + function copy($source, $destination, $overwrite = false, $mode = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + + $content = $this->get_contents($source); + if ( false === $content ) + return false; + + return $this->put_contents($destination, $content, $mode); + } + + function move($source, $destination, $overwrite = false ) { + return $this->ftp->rename($source, $destination); + } + + function delete($file, $recursive = false, $type = false) { + if ( empty($file) ) + return false; + if ( 'f' == $type || $this->is_file($file) ) + return $this->ftp->delete($file); + if ( !$recursive ) + return $this->ftp->rmdir($file); + + return $this->ftp->mdel($file); + } + + function exists($file) { + return $this->ftp->is_exists($file); + } + + function is_file($file) { + if ( $this->is_dir($file) ) + return false; + if ( $this->exists($file) ) + return true; + return false; + } + + function is_dir($path) { + $cwd = $this->cwd(); + if ( $this->chdir($path) ) { + $this->chdir($cwd); + return true; + } + return false; + } + + function is_readable($file) { + //Get dir list, Check if the file is writable by the current user?? + return true; + } + + function is_writable($file) { + //Get dir list, Check if the file is writable by the current user?? + return true; + } + + function atime($file) { + return false; + } + + function mtime($file) { + return $this->ftp->mdtm($file); + } + + function size($file) { + return $this->ftp->filesize($file); + } + + function touch($file, $time = 0, $atime = 0 ) { + return false; + } + + function mkdir($path, $chmod = false, $chown = false, $chgrp = false ) { + if ( ! $this->ftp->mkdir($path) ) + return false; + if ( ! $chmod ) + $chmod = FS_CHMOD_DIR; + $this->chmod($path, $chmod); + if ( $chown ) + $this->chown($path, $chown); + if ( $chgrp ) + $this->chgrp($path, $chgrp); + return true; + } + + function rmdir($path, $recursive = false ) { + $this->delete($path, $recursive); + } + + function dirlist($path = '.', $include_hidden = true, $recursive = false ) { + if ( $this->is_file($path) ) { + $limit_file = basename($path); + $path = dirname($path) . '/'; + } else { + $limit_file = false; + } + + $list = $this->ftp->dirlist($path); + if ( empty($list) && !$this->exists($path) ) + return false; + + $ret = array(); + foreach ( $list as $struc ) { + + if ( '.' == $struc['name'] || '..' == $struc['name'] ) + continue; + + if ( ! $include_hidden && '.' == $struc['name'][0] ) + continue; + + if ( $limit_file && $struc['name'] != $limit_file ) + continue; + + if ( 'd' == $struc['type'] ) { + if ( $recursive ) + $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); + else + $struc['files'] = array(); + } + + $ret[ $struc['name'] ] = $struc; + } + return $ret; + } + + function __destruct() { + $this->ftp->quit(); + } +} + +?> diff --git a/src/wp-admin/includes/class-wp-filesystem-ssh2.php b/src/wp-admin/includes/class-wp-filesystem-ssh2.php new file mode 100644 index 0000000..b809f45 --- /dev/null +++ b/src/wp-admin/includes/class-wp-filesystem-ssh2.php @@ -0,0 +1,383 @@ +method = 'ssh2'; + $this->errors = new WP_Error(); + + //Check if possible to use ssh2 functions. + if ( ! extension_loaded('ssh2') ) { + $this->errors->add('no_ssh2_ext', __('The ssh2 PHP extension is not available')); + return false; + } + if ( !function_exists('stream_get_contents') ) { + $this->errors->add('ssh2_php_requirement', __('The ssh2 PHP extension is available, however, we require the PHP5 function stream_get_contents()')); + return false; + } + + // Set defaults: + if ( empty($opt['port']) ) + $this->options['port'] = 22; + else + $this->options['port'] = $opt['port']; + + if ( empty($opt['hostname']) ) + $this->errors->add('empty_hostname', __('SSH2 hostname is required')); + else + $this->options['hostname'] = $opt['hostname']; + + if ( ! empty($opt['base']) ) + $this->wp_base = $opt['base']; + + // Check if the options provided are OK. + if ( !empty ($opt['public_key']) && !empty ($opt['private_key']) ) { + $this->options['public_key'] = $opt['public_key']; + $this->options['private_key'] = $opt['private_key']; + + $this->options['hostkey'] = array('hostkey' => 'ssh-rsa'); + + $this->keys = true; + } elseif ( empty ($opt['username']) ) { + $this->errors->add('empty_username', __('SSH2 username is required')); + } + + if ( !empty($opt['username']) ) + $this->options['username'] = $opt['username']; + + if ( empty ($opt['password']) ) { + if ( !$this->keys ) //password can be blank if we are using keys + $this->errors->add('empty_password', __('SSH2 password is required')); + } else { + $this->options['password'] = $opt['password']; + } + + } + + function connect() { + if ( ! $this->keys ) { + $this->link = @ssh2_connect($this->options['hostname'], $this->options['port']); + } else { + $this->link = @ssh2_connect($this->options['hostname'], $this->options['port'], $this->options['hostkey']); + } + + if ( ! $this->link ) { + $this->errors->add('connect', sprintf(__('Failed to connect to SSH2 Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); + return false; + } + + if ( !$this->keys ) { + if ( ! @ssh2_auth_password($this->link, $this->options['username'], $this->options['password']) ) { + $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username'])); + return false; + } + } else { + if ( ! @ssh2_auth_pubkey_file($this->link, $this->options['username'], $this->options['public_key'], $this->options['private_key'], $this->options['password'] ) ) { + $this->errors->add('auth', sprintf(__('Public and Private keys incorrect for %s'), $this->options['username'])); + return false; + } + } + + $this->sftp_link = ssh2_sftp($this->link); + + return true; + } + + function run_command( $command, $returnbool = false) { + + if ( ! $this->link ) + return false; + + if ( ! ($stream = ssh2_exec($this->link, $command)) ) { + $this->errors->add('command', sprintf(__('Unable to perform command: %s'), $command)); + } else { + stream_set_blocking( $stream, true ); + stream_set_timeout( $stream, FS_TIMEOUT ); + $data = stream_get_contents( $stream ); + fclose( $stream ); + + if ( $returnbool ) + return ( $data === false ) ? false : '' != trim($data); + else + return $data; + } + return false; + } + + function get_contents($file, $type = '', $resumepos = 0 ) { + $file = ltrim($file, '/'); + return file_get_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function get_contents_array($file) { + $file = ltrim($file, '/'); + return file('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function put_contents($file, $contents, $mode = false ) { + $file = ltrim($file, '/'); + $ret = file_put_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file, $contents); + + $this->chmod($file, $mode); + + return false !== $ret; + } + + function cwd() { + $cwd = $this->run_command('pwd'); + if ( $cwd ) + $cwd = trailingslashit($cwd); + return $cwd; + } + + function chdir($dir) { + return $this->run_command('cd ' . $dir, true); + } + + function chgrp($file, $group, $recursive = false ) { + if ( ! $this->exists($file) ) + return false; + if ( ! $recursive || ! $this->is_dir($file) ) + return $this->run_command(sprintf('chgrp %o %s', $mode, escapeshellarg($file)), true); + return $this->run_command(sprintf('chgrp -R %o %s', $mode, escapeshellarg($file)), true); + } + + function chmod($file, $mode = false, $recursive = false) { + if ( ! $this->exists($file) ) + return false; + + if ( ! $mode ) { + if ( $this->is_file($file) ) + $mode = FS_CHMOD_FILE; + elseif ( $this->is_dir($file) ) + $mode = FS_CHMOD_DIR; + else + return false; + } + + if ( ! $recursive || ! $this->is_dir($file) ) + return $this->run_command(sprintf('chmod %o %s', $mode, escapeshellarg($file)), true); + return $this->run_command(sprintf('chmod -R %o %s', $mode, escapeshellarg($file)), true); + } + + function chown($file, $owner, $recursive = false ) { + if ( ! $this->exists($file) ) + return false; + if ( ! $recursive || ! $this->is_dir($file) ) + return $this->run_command(sprintf('chown %o %s', $mode, escapeshellarg($file)), true); + return $this->run_command(sprintf('chown -R %o %s', $mode, escapeshellarg($file)), true); + } + + function owner($file) { + $owneruid = @fileowner('ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/')); + if ( ! $owneruid ) + return false; + if ( ! function_exists('posix_getpwuid') ) + return $owneruid; + $ownerarray = posix_getpwuid($owneruid); + return $ownerarray['name']; + } + + function getchmod($file) { + return substr(decoct(@fileperms( 'ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/') )),3); + } + + function group($file) { + $gid = @filegroup('ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/')); + if ( ! $gid ) + return false; + if ( ! function_exists('posix_getgrgid') ) + return $gid; + $grouparray = posix_getgrgid($gid); + return $grouparray['name']; + } + + function copy($source, $destination, $overwrite = false, $mode = false) { + if ( ! $overwrite && $this->exists($destination) ) + return false; + $content = $this->get_contents($source); + if ( false === $content) + return false; + return $this->put_contents($destination, $content, $mode); + } + + function move($source, $destination, $overwrite = false) { + return @ssh2_sftp_rename($this->link, $source, $destination); + } + + function delete($file, $recursive = false, $type = false) { + if ( 'f' == $type || $this->is_file($file) ) + return ssh2_sftp_unlink($this->sftp_link, $file); + if ( ! $recursive ) + return ssh2_sftp_rmdir($this->sftp_link, $file); + $filelist = $this->dirlist($file); + if ( is_array($filelist) ) { + foreach ( $filelist as $filename => $fileinfo) { + $this->delete($file . '/' . $filename, $recursive, $fileinfo['type']); + } + } + return ssh2_sftp_rmdir($this->sftp_link, $file); + } + + function exists($file) { + $file = ltrim($file, '/'); + return file_exists('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function is_file($file) { + $file = ltrim($file, '/'); + return is_file('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function is_dir($path) { + $path = ltrim($path, '/'); + return is_dir('ssh2.sftp://' . $this->sftp_link . '/' . $path); + } + + function is_readable($file) { + $file = ltrim($file, '/'); + return is_readable('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function is_writable($file) { + $file = ltrim($file, '/'); + return is_writable('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function atime($file) { + $file = ltrim($file, '/'); + return fileatime('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function mtime($file) { + $file = ltrim($file, '/'); + return filemtime('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function size($file) { + $file = ltrim($file, '/'); + return filesize('ssh2.sftp://' . $this->sftp_link . '/' . $file); + } + + function touch($file, $time = 0, $atime = 0) { + //Not implmented. + } + + function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { + $path = untrailingslashit($path); + if ( ! $chmod ) + $chmod = FS_CHMOD_DIR; + if ( ! ssh2_sftp_mkdir($this->sftp_link, $path, $chmod, true) ) + return false; + if ( $chown ) + $this->chown($path, $chown); + if ( $chgrp ) + $this->chgrp($path, $chgrp); + return true; + } + + function rmdir($path, $recursive = false) { + return $this->delete($path, $recursive); + } + + function dirlist($path, $include_hidden = true, $recursive = false) { + if ( $this->is_file($path) ) { + $limit_file = basename($path); + $path = dirname($path); + } else { + $limit_file = false; + } + + if ( ! $this->is_dir($path) ) + return false; + + $ret = array(); + $dir = @dir('ssh2.sftp://' . $this->sftp_link .'/' . ltrim($path, '/') ); + + if ( ! $dir ) + return false; + + while (false !== ($entry = $dir->read()) ) { + $struc = array(); + $struc['name'] = $entry; + + if ( '.' == $struc['name'] || '..' == $struc['name'] ) + continue; //Do not care about these folders. + + if ( ! $include_hidden && '.' == $struc['name'][0] ) + continue; + + if ( $limit_file && $struc['name'] != $limit_file ) + continue; + + $struc['perms'] = $this->gethchmod($path.'/'.$entry); + $struc['permsn'] = $this->getnumchmodfromh($struc['perms']); + $struc['number'] = false; + $struc['owner'] = $this->owner($path.'/'.$entry); + $struc['group'] = $this->group($path.'/'.$entry); + $struc['size'] = $this->size($path.'/'.$entry); + $struc['lastmodunix']= $this->mtime($path.'/'.$entry); + $struc['lastmod'] = date('M j',$struc['lastmodunix']); + $struc['time'] = date('h:i:s',$struc['lastmodunix']); + $struc['type'] = $this->is_dir($path.'/'.$entry) ? 'd' : 'f'; + + if ( 'd' == $struc['type'] ) { + if ( $recursive ) + $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); + else + $struc['files'] = array(); + } + + $ret[ $struc['name'] ] = $struc; + } + $dir->close(); + unset($dir); + return $ret; + } +} diff --git a/src/wp-admin/includes/class-wp-importer.php b/src/wp-admin/includes/class-wp-importer.php new file mode 100644 index 0000000..2b4774b --- /dev/null +++ b/src/wp-admin/includes/class-wp-importer.php @@ -0,0 +1,307 @@ +prepare( "SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = '%s' LIMIT %d,%d", $meta_key, $offset, $limit ); + $results = $wpdb->get_results( $sql ); + + // Increment offset + $offset = ( $limit + $offset ); + + if ( !empty( $results ) ) { + foreach ( $results as $r ) { + // Set permalinks into array + $hashtable[$r->meta_value] = intval( $r->post_id ); + } + } + } while ( count( $results ) == $limit ); + + // unset to save memory + unset( $results, $r ); + + return $hashtable; + } + + /** + * Return count of imported permalinks from WordPress database + * + * @param string $bid + * @return int + */ + function count_imported_posts( $importer_name, $bid ) { + global $wpdb; + + $count = 0; + + // Get count of permalinks + $meta_key = $importer_name . '_' . $bid . '_permalink'; + $sql = $wpdb->prepare( "SELECT COUNT( post_id ) AS cnt FROM $wpdb->postmeta WHERE meta_key = '%s'", $meta_key ); + + $result = $wpdb->get_results( $sql ); + + if ( !empty( $result ) ) + $count = intval( $result[0]->cnt ); + + // unset to save memory + unset( $results ); + + return $count; + } + + /** + * Set array with imported comments from WordPress database + * + * @param string $bid + * @return array + */ + function get_imported_comments( $bid ) { + global $wpdb; + + $hashtable = array(); + + $limit = 100; + $offset = 0; + + // Grab all comments in chunks + do { + $sql = $wpdb->prepare( "SELECT comment_ID, comment_agent FROM $wpdb->comments LIMIT %d,%d", $offset, $limit ); + $results = $wpdb->get_results( $sql ); + + // Increment offset + $offset = ( $limit + $offset ); + + if ( !empty( $results ) ) { + foreach ( $results as $r ) { + // Explode comment_agent key + list ( $ca_bid, $source_comment_id ) = explode( '-', $r->comment_agent ); + $source_comment_id = intval( $source_comment_id ); + + // Check if this comment came from this blog + if ( $bid == $ca_bid ) { + $hashtable[$source_comment_id] = intval( $r->comment_ID ); + } + } + } + } while ( count( $results ) == $limit ); + + // unset to save memory + unset( $results, $r ); + + return $hashtable; + } + + function set_blog( $blog_id ) { + if ( is_numeric( $blog_id ) ) { + $blog_id = (int) $blog_id; + } else { + $blog = 'http://' . preg_replace( '#^https?://#', '', $blog_id ); + if ( ( !$parsed = parse_url( $blog ) ) || empty( $parsed['host'] ) ) { + fwrite( STDERR, "Error: can not determine blog_id from $blog_id\n" ); + exit(); + } + if ( empty( $parsed['path'] ) ) + $parsed['path'] = '/'; + $blog = get_blog_details( array( 'domain' => $parsed['host'], 'path' => $parsed['path'] ) ); + if ( !$blog ) { + fwrite( STDERR, "Error: Could not find blog\n" ); + exit(); + } + $blog_id = (int) $blog->blog_id; + // Restore global $current_blog + global $current_blog; + $current_blog = $blog; + } + + if ( function_exists( 'is_multisite' ) ) { + if ( is_multisite() ) + switch_to_blog( $blog_id ); + } + + return $blog_id; + } + + function set_user( $user_id ) { + if ( is_numeric( $user_id ) ) { + $user_id = (int) $user_id; + } else { + $user_id = (int) username_exists( $user_id ); + } + + if ( !$user_id || !wp_set_current_user( $user_id ) ) { + fwrite( STDERR, "Error: can not find user\n" ); + exit(); + } + + return $user_id; + } + + /** + * Sort by strlen, longest string first + * + * @param string $a + * @param string $b + * @return int + */ + function cmpr_strlen( $a, $b ) { + return strlen( $b ) - strlen( $a ); + } + + /** + * GET URL + * + * @param string $url + * @param string $username + * @param string $password + * @param bool $head + * @return array + */ + function get_page( $url, $username = '', $password = '', $head = false ) { + // Increase the timeout + add_filter( 'http_request_timeout', array( &$this, 'bump_request_timeout' ) ); + + $headers = array(); + $args = array(); + if ( true === $head ) + $args['method'] = 'HEAD'; + if ( !empty( $username ) && !empty( $password ) ) + $headers['Authorization'] = 'Basic ' . base64_encode( "$username:$password" ); + + $args['headers'] = $headers; + + return wp_remote_request( $url, $args ); + } + + /** + * Bump up the request timeout for http requests + * + * @param int $val + * @return int + */ + function bump_request_timeout( $val ) { + return 60; + } + + /** + * Check if user has exceeded disk quota + * + * @return bool + */ + function is_user_over_quota() { + global $current_blog; + + if ( function_exists( 'upload_is_user_over_quota' ) ) { + if ( upload_is_user_over_quota( 1 ) ) { + echo "Sorry, you have used your upload quota.\n"; + return true; + } + } + + return false; + } + + /** + * Replace newlines, tabs, and multiple spaces with a single space + * + * @param string $string + * @return string + */ + function min_whitespace( $string ) { + return preg_replace( '|[\r\n\t ]+|', ' ', $string ); + } + + /** + * Reset global variables that grow out of control during imports + * + * @return void + */ + function stop_the_insanity() { + global $wpdb, $wp_actions; + // Or define( 'WP_IMPORTING', true ); + $wpdb->queries = array(); + // Reset $wp_actions to keep it from growing out of control + $wp_actions = array(); + } +} + +/** + * Returns value of command line params. + * Exits when a required param is not set. + * + * @param string $param + * @param bool $required + * @return mixed + */ +function get_cli_args( $param, $required = false ) { + $args = $_SERVER['argv']; + + $out = array(); + + $last_arg = null; + $return = null; + + $il = sizeof( $args ); + + for ( $i = 1, $il; $i < $il; $i++ ) { + if ( (bool) preg_match( "/^--(.+)/", $args[$i], $match ) ) { + $parts = explode( "=", $match[1] ); + $key = preg_replace( "/[^a-z0-9]+/", "", $parts[0] ); + + if ( isset( $parts[1] ) ) { + $out[$key] = $parts[1]; + } else { + $out[$key] = true; + } + + $last_arg = $key; + } else if ( (bool) preg_match( "/^-([a-zA-Z0-9]+)/", $args[$i], $match ) ) { + for ( $j = 0, $jl = strlen( $match[1] ); $j < $jl; $j++ ) { + $key = $match[1]{$j}; + $out[$key] = true; + } + + $last_arg = $key; + } else if ( $last_arg !== null ) { + $out[$last_arg] = $args[$i]; + } + } + + // Check array for specified param + if ( isset( $out[$param] ) ) { + // Set return value + $return = $out[$param]; + } + + // Check for missing required param + if ( !isset( $out[$param] ) && $required ) { + // Display message and exit + echo "\"$param\" parameter is required but was not specified\n"; + exit(); + } + + return $return; +} diff --git a/src/wp-admin/includes/class-wp-links-list-table.php b/src/wp-admin/includes/class-wp-links-list-table.php new file mode 100644 index 0000000..cbe3ed5 --- /dev/null +++ b/src/wp-admin/includes/class-wp-links-list-table.php @@ -0,0 +1,186 @@ + 'bookmarks', + ) ); + } + + function ajax_user_can() { + return current_user_can( 'manage_links' ); + } + + function prepare_items() { + global $cat_id, $s, $orderby, $order; + + wp_reset_vars( array( 'action', 'cat_id', 'linkurl', 'name', 'image', 'description', 'visible', 'target', 'category', 'link_id', 'submit', 'orderby', 'order', 'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]', 's' ) ); + + $args = array( 'hide_invisible' => 0, 'hide_empty' => 0 ); + + if ( 'all' != $cat_id ) + $args['category'] = $cat_id; + if ( !empty( $s ) ) + $args['search'] = $s; + if ( !empty( $orderby ) ) + $args['orderby'] = $orderby; + if ( !empty( $order ) ) + $args['order'] = $order; + + $this->items = get_bookmarks( $args ); + } + + function no_items() { + _e( 'No links found.' ); + } + + function get_bulk_actions() { + $actions = array(); + $actions['delete'] = __( 'Delete' ); + + return $actions; + } + + function extra_tablenav( $which ) { + global $cat_id; + + if ( 'top' != $which ) + return; +?> +
+ $cat_id, + 'name' => 'cat_id', + 'taxonomy' => 'link_category', + 'show_option_all' => __( 'View all categories' ), + 'hide_empty' => true, + 'hierarchical' => 1, + 'show_count' => 0, + 'orderby' => 'name', + ); + wp_dropdown_categories( $dropdown_options ); + submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) ); +?> +
+ '', + 'name' => _x( 'Name', 'link name' ), + 'url' => __( 'URL' ), + 'categories' => __( 'Categories' ), + 'rel' => __( 'Relationship' ), + 'visible' => __( 'Visible' ), + 'rating' => __( 'Rating' ) + ); + } + + function get_sortable_columns() { + return array( + 'name' => 'name', + 'url' => 'url', + 'visible' => 'visible', + 'rating' => 'rating' + ); + } + + function display_rows() { + global $cat_id; + + $alt = 0; + + foreach ( $this->items as $link ) { + $link = sanitize_bookmark( $link ); + $link->link_name = esc_attr( $link->link_name ); + $link->link_category = wp_get_link_cats( $link->link_id ); + + $short_url = url_shorten( $link->link_url ); + + $visible = ( $link->link_visible == 'Y' ) ? __( 'Yes' ) : __( 'No' ); + $rating = $link->link_rating; + $style = ( $alt++ % 2 ) ? '' : ' class="alternate"'; + + $edit_link = get_edit_bookmark_link( $link ); +?> + > +get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $class = "class='column-$column_name'"; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = $class . $style; + + switch ( $column_name ) { + case 'cb': + echo ''; + break; + + case 'name': + echo "link_name ) ) . "'>$link->link_name
"; + + $actions = array(); + $actions['edit'] = '' . __( 'Edit' ) . ''; + $actions['delete'] = "link_id ) . "' onclick=\"if ( confirm( '" . esc_js( sprintf( __( "You are about to delete this link '%s'\n 'Cancel' to stop, 'OK' to delete." ), $link->link_name ) ) . "' ) ) { return true;}return false;\">" . __( 'Delete' ) . ""; + echo $this->row_actions( $actions ); + + echo ''; + break; + case 'url': + echo "link_name ) )."'>$short_url"; + break; + case 'categories': + ?>>link_category as $category ) { + $cat = get_term( $category, 'link_category', OBJECT, 'display' ); + if ( is_wp_error( $cat ) ) + echo $cat->get_error_message(); + $cat_name = $cat->name; + if ( $cat_id != $category ) + $cat_name = "$cat_name"; + $cat_names[] = $cat_name; + } + echo implode( ', ', $cat_names ); + ?>>link_rel ) ? '
' : $link->link_rel; ?>>> + >link_id ); ?> + + + diff --git a/src/wp-admin/includes/class-wp-list-table.php b/src/wp-admin/includes/class-wp-list-table.php new file mode 100644 index 0000000..6420ee7 --- /dev/null +++ b/src/wp-admin/includes/class-wp-list-table.php @@ -0,0 +1,908 @@ + '', + 'singular' => '', + 'ajax' => false + ) ); + + $screen = get_current_screen(); + + add_filter( "manage_{$screen->id}_columns", array( &$this, 'get_columns' ), 0 ); + + if ( !$args['plural'] ) + $args['plural'] = $screen->base; + + $this->_args = $args; + + if ( $args['ajax'] ) { + // wp_enqueue_script( 'list-table' ); + add_action( 'admin_footer', array( &$this, '_js_vars' ) ); + } + } + + /** + * Checks the current user's permissions + * @uses wp_die() + * + * @since 3.1.0 + * @access public + * @abstract + */ + function ajax_user_can() { + die( 'function WP_List_Table::ajax_user_can() must be over-ridden in a sub-class.' ); + } + + /** + * Prepares the list of items for displaying. + * @uses WP_List_Table::set_pagination_args() + * + * @since 3.1.0 + * @access public + * @abstract + */ + function prepare_items() { + die( 'function WP_List_Table::prepare_items() must be over-ridden in a sub-class.' ); + } + + /** + * An internal method that sets all the necessary pagination arguments + * + * @param array $args An associative array with information about the pagination + * @access protected + */ + function set_pagination_args( $args ) { + $args = wp_parse_args( $args, array( + 'total_items' => 0, + 'total_pages' => 0, + 'per_page' => 0, + ) ); + + if ( !$args['total_pages'] && $args['per_page'] > 0 ) + $args['total_pages'] = ceil( $args['total_items'] / $args['per_page'] ); + + // redirect if page number is invalid and headers are not already sent + if ( ! headers_sent() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) && $args['total_pages'] > 0 && $this->get_pagenum() > $args['total_pages'] ) { + wp_redirect( add_query_arg( 'paged', $args['total_pages'] ) ); + exit; + } + + $this->_pagination_args = $args; + } + + /** + * Access the pagination args + * + * @since 3.1.0 + * @access public + * + * @param string $key + * @return array + */ + function get_pagination_arg( $key ) { + if ( 'page' == $key ) + return $this->get_pagenum(); + + if ( isset( $this->_pagination_args[$key] ) ) + return $this->_pagination_args[$key]; + } + + /** + * Whether the table has items to display or not + * + * @since 3.1.0 + * @access public + * + * @return bool + */ + function has_items() { + return !empty( $this->items ); + } + + /** + * Message to be displayed when there are no items + * + * @since 3.1.0 + * @access public + */ + function no_items() { + _e( 'No items found.' ); + } + + /** + * Display the search box. + * + * @since 3.1.0 + * @access public + * + * @param string $text The search button text + * @param string $input_id The search input id + */ + function search_box( $text, $input_id ) { + if ( empty( $_REQUEST['s'] ) && !$this->has_items() ) + return; + + $input_id = $input_id . '-search-input'; + + if ( ! empty( $_REQUEST['orderby'] ) ) + echo ''; + if ( ! empty( $_REQUEST['order'] ) ) + echo ''; +?> + + link ) with the list + * of views available on this table. + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_views() { + return array(); + } + + /** + * Display the bulk actions dropdown. + * + * @since 3.1.0 + * @access public + */ + function views() { + $screen = get_current_screen(); + + $views = $this->get_views(); + $views = apply_filters( 'views_' . $screen->id, $views ); + + if ( empty( $views ) ) + return; + + echo "
    \n"; + foreach ( $views as $class => $view ) { + $views[ $class ] = "\t
  • $view"; + } + echo implode( " |
  • \n", $views ) . "\n"; + echo "
"; + } + + /** + * Get an associative array ( option_name => option_title ) with the list + * of bulk actions available on this table. + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_bulk_actions() { + return array(); + } + + /** + * Display the bulk actions dropdown. + * + * @since 3.1.0 + * @access public + */ + function bulk_actions() { + $screen = get_current_screen(); + + if ( is_null( $this->_actions ) ) { + $no_new_actions = $this->_actions = $this->get_bulk_actions(); + // This filter can currently only be used to remove actions. + $this->_actions = apply_filters( 'bulk_actions-' . $screen->id, $this->_actions ); + $this->_actions = array_intersect_assoc( $this->_actions, $no_new_actions ); + $two = ''; + } else { + $two = '2'; + } + + if ( empty( $this->_actions ) ) + return; + + echo "\n"; + + submit_button( __( 'Apply' ), 'button-secondary action', false, false, array( 'id' => "doaction$two" ) ); + echo "\n"; + } + + /** + * Get the current action selected from the bulk actions dropdown. + * + * @since 3.1.0 + * @access public + * + * @return string|bool The action name or False if no action was selected + */ + function current_action() { + if ( isset( $_REQUEST['action'] ) && -1 != $_REQUEST['action'] ) + return $_REQUEST['action']; + + if ( isset( $_REQUEST['action2'] ) && -1 != $_REQUEST['action2'] ) + return $_REQUEST['action2']; + + return false; + } + + /** + * Generate row actions div + * + * @since 3.1.0 + * @access protected + * + * @param array $actions The list of actions + * @param bool $always_visible Wether the actions should be always visible + * @return string + */ + function row_actions( $actions, $always_visible = false ) { + $action_count = count( $actions ); + $i = 0; + + if ( !$action_count ) + return ''; + + $out = '
'; + foreach ( $actions as $action => $link ) { + ++$i; + ( $i == $action_count ) ? $sep = '' : $sep = ' | '; + $out .= "$link$sep"; + } + $out .= '
'; + + return $out; + } + + /** + * Display a monthly dropdown for filtering items + * + * @since 3.1.0 + * @access protected + */ + function months_dropdown( $post_type ) { + global $wpdb, $wp_locale; + + $months = $wpdb->get_results( $wpdb->prepare( " + SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month + FROM $wpdb->posts + WHERE post_type = %s + ORDER BY post_date DESC + ", $post_type ) ); + + $month_count = count( $months ); + + if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) ) + return; + + $m = isset( $_GET['m'] ) ? (int) $_GET['m'] : 0; +?> + + __( 'List View' ), + 'excerpt' => __( 'Excerpt View' ) + ); + +?> + +
+ $title ) { + $class = ( $current_mode == $mode ) ? 'class="current"' : ''; + echo "$title\n"; + } + ?> +
+'; + + echo "" . number_format_i18n( get_comments_number() ) . ""; + + if ( $pending_comments ) + echo ''; + } + + /** + * Get the current page number + * + * @since 3.1.0 + * @access protected + * + * @return int + */ + function get_pagenum() { + $pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 0; + + if( isset( $this->_pagination_args['total_pages'] ) && $pagenum > $this->_pagination_args['total_pages'] ) + $pagenum = $this->_pagination_args['total_pages']; + + return max( 1, $pagenum ); + } + + /** + * Get number of items to display on a single page + * + * @since 3.1.0 + * @access protected + * + * @return int + */ + function get_items_per_page( $option, $default = 20 ) { + $per_page = (int) get_user_option( $option ); + if ( empty( $per_page ) || $per_page < 1 ) + $per_page = $default; + + return (int) apply_filters( $option, $per_page ); + } + + /** + * Display the pagination. + * + * @since 3.1.0 + * @access protected + */ + function pagination( $which ) { + if ( empty( $this->_pagination_args ) ) + return; + + extract( $this->_pagination_args ); + + $output = '' . sprintf( _n( '1 item', '%s items', $total_items ), number_format_i18n( $total_items ) ) . ''; + + $current = $this->get_pagenum(); + + $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + + $current_url = remove_query_arg( array( 'hotkeys_highlight_last', 'hotkeys_highlight_first' ), $current_url ); + + $page_links = array(); + + $disable_first = $disable_last = ''; + if ( $current == 1 ) + $disable_first = ' disabled'; + if ( $current == $total_pages ) + $disable_last = ' disabled'; + + $page_links[] = sprintf( "%s", + 'first-page' . $disable_first, + esc_attr__( 'Go to the first page' ), + esc_url( remove_query_arg( 'paged', $current_url ) ), + '«' + ); + + $page_links[] = sprintf( "%s", + 'prev-page' . $disable_first, + esc_attr__( 'Go to the previous page' ), + esc_url( add_query_arg( 'paged', max( 1, $current-1 ), $current_url ) ), + '‹' + ); + + if ( 'bottom' == $which ) + $html_current_page = $current; + else + $html_current_page = sprintf( "", + esc_attr__( 'Current page' ), + esc_attr( 'paged' ), + $current, + strlen( $total_pages ) + ); + + $html_total_pages = sprintf( "%s", number_format_i18n( $total_pages ) ); + $page_links[] = '' . sprintf( _x( '%1$s of %2$s', 'paging' ), $html_current_page, $html_total_pages ) . ''; + + $page_links[] = sprintf( "%s", + 'next-page' . $disable_last, + esc_attr__( 'Go to the next page' ), + esc_url( add_query_arg( 'paged', min( $total_pages, $current+1 ), $current_url ) ), + '›' + ); + + $page_links[] = sprintf( "%s", + 'last-page' . $disable_last, + esc_attr__( 'Go to the last page' ), + esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ), + '»' + ); + + $output .= "\n" . join( "\n", $page_links ) . ''; + + if ( $total_pages ) + $page_class = $total_pages < 2 ? ' one-page' : ''; + else + $page_class = ' no-pages'; + + $this->_pagination = "
$output
"; + + echo $this->_pagination; + } + + /** + * Get a list of columns. The format is: + * 'internal-name' => 'Title' + * + * @since 3.1.0 + * @access protected + * @abstract + * + * @return array + */ + function get_columns() { + die( 'function WP_List_Table::get_columns() must be over-ridden in a sub-class.' ); + } + + /** + * Get a list of sortable columns. The format is: + * 'internal-name' => 'orderby' + * or + * 'internal-name' => array( 'orderby', true ) + * + * The second format will make the initial sorting order be descending + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_sortable_columns() { + return array(); + } + + /** + * Get a list of all, hidden and sortable columns, with filter applied + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_column_info() { + if ( isset( $this->_column_headers ) ) + return $this->_column_headers; + + $screen = get_current_screen(); + + $columns = get_column_headers( $screen ); + $hidden = get_hidden_columns( $screen ); + + $_sortable = apply_filters( "manage_{$screen->id}_sortable_columns", $this->get_sortable_columns() ); + + $sortable = array(); + foreach ( $_sortable as $id => $data ) { + if ( empty( $data ) ) + continue; + + $data = (array) $data; + if ( !isset( $data[1] ) ) + $data[1] = false; + + $sortable[$id] = $data; + } + + $this->_column_headers = array( $columns, $hidden, $sortable ); + + return $this->_column_headers; + } + + /** + * Return number of visible columns + * + * @since 3.1.0 + * @access public + * + * @return int + */ + function get_column_count() { + list ( $columns, $hidden ) = $this->get_column_info(); + $hidden = array_intersect( array_keys( $columns ), array_filter( $hidden ) ); + return count( $columns ) - count( $hidden ); + } + + /** + * Print column headers, accounting for hidden and sortable columns. + * + * @since 3.1.0 + * @access protected + * + * @param bool $with_id Whether to set the id attribute or not + */ + function print_column_headers( $with_id = true ) { + $screen = get_current_screen(); + + list( $columns, $hidden, $sortable ) = $this->get_column_info(); + + $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + $current_url = remove_query_arg( 'paged', $current_url ); + + if ( isset( $_GET['orderby'] ) ) + $current_orderby = $_GET['orderby']; + else + $current_orderby = ''; + + if ( isset( $_GET['order'] ) && 'desc' == $_GET['order'] ) + $current_order = 'desc'; + else + $current_order = 'asc'; + + foreach ( $columns as $column_key => $column_display_name ) { + $class = array( 'manage-column', "column-$column_key" ); + + $style = ''; + if ( in_array( $column_key, $hidden ) ) + $style = 'display:none;'; + + $style = ' style="' . $style . '"'; + + if ( 'cb' == $column_key ) + $class[] = 'check-column'; + elseif ( in_array( $column_key, array( 'posts', 'comments', 'links' ) ) ) + $class[] = 'num'; + + if ( isset( $sortable[$column_key] ) ) { + list( $orderby, $desc_first ) = $sortable[$column_key]; + + if ( $current_orderby == $orderby ) { + $order = 'asc' == $current_order ? 'desc' : 'asc'; + $class[] = 'sorted'; + $class[] = $current_order; + } else { + $order = $desc_first ? 'desc' : 'asc'; + $class[] = 'sortable'; + $class[] = $desc_first ? 'asc' : 'desc'; + } + + $column_display_name = '' . $column_display_name . ''; + } + + $id = $with_id ? "id='$column_key'" : ''; + + if ( !empty( $class ) ) + $class = "class='" . join( ' ', $class ) . "'"; + + echo "$column_display_name"; + } + } + + /** + * Display the table + * + * @since 3.1.0 + * @access public + */ + function display() { + extract( $this->_args ); + + $this->display_tablenav( 'top' ); + +?> + + + + print_column_headers(); ?> + + + + + + print_column_headers( false ); ?> + + + + > + display_rows_or_placeholder(); ?> + +
+display_tablenav( 'bottom' ); + } + + /** + * Get a list of CSS classes for the tag + * + * @since 3.1.0 + * @access protected + * + * @return array + */ + function get_table_classes() { + return array( 'widefat', 'fixed', $this->_args['plural'] ); + } + + /** + * Generate the table navigation above or below the table + * + * @since 3.1.0 + * @access protected + */ + function display_tablenav( $which ) { + if ( 'top' == $which ) + wp_nonce_field( 'bulk-' . $this->_args['plural'] ); +?> +
+ +
+ bulk_actions( $which ); ?> +
+extra_tablenav( $which ); + $this->pagination( $which ); +?> + +
+
+ part of the table + * + * @since 3.1.0 + * @access protected + */ + function display_rows_or_placeholder() { + if ( $this->has_items() ) { + $this->display_rows(); + } else { + list( $columns, $hidden ) = $this->get_column_info(); + echo ''; + } + } + + /** + * Generate the table rows + * + * @since 3.1.0 + * @access protected + */ + function display_rows() { + foreach ( $this->items as $item ) + $this->single_row( $item ); + } + + /** + * Generates content for a single row of the table + * + * @since 3.1.0 + * @access protected + * + * @param object $item The current item + */ + function single_row( $item ) { + static $row_class = ''; + $row_class = ( $row_class == '' ? ' class="alternate"' : '' ); + + echo ''; + echo $this->single_row_columns( $item ); + echo ''; + } + + /** + * Generates the columns for a single row of the table + * + * @since 3.1.0 + * @access protected + * + * @param object $item The current item + */ + function single_row_columns( $item ) { + list( $columns, $hidden ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $class = "class='$column_name column-$column_name'"; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = "$class$style"; + + if ( 'cb' == $column_name ) { + echo ''; + } + elseif ( method_exists( $this, 'column_' . $column_name ) ) { + echo ""; + } + else { + echo ""; + } + } + } + + /** + * Handle an incoming ajax request (called from admin-ajax.php) + * + * @since 3.1.0 + * @access public + */ + function ajax_response() { + $this->prepare_items(); + + extract( $this->_args ); + extract( $this->_pagination_args ); + + ob_start(); + if ( ! empty( $_REQUEST['no_placeholder'] ) ) + $this->display_rows(); + else + $this->display_rows_or_placeholder(); + + $rows = ob_get_clean(); + + $response = array( 'rows' => $rows ); + + if ( isset( $total_items ) ) + $response['total_items_i18n'] = sprintf( _n( '1 item', '%s items', $total_items ), number_format_i18n( $total_items ) ); + + if ( isset( $total_pages ) ) { + $response['total_pages'] = $total_pages; + $response['total_pages_i18n'] = number_format_i18n( $total_pages ); + } + + die( json_encode( $response ) ); + } + + /** + * Send required variables to JavaScript land + * + * @access private + */ + function _js_vars() { + $args = array( + 'class' => get_class( $this ), + 'screen' => get_current_screen() + ); + + printf( "\n", json_encode( $args ) ); + } +} +?> diff --git a/src/wp-admin/includes/class-wp-media-list-table.php b/src/wp-admin/includes/class-wp-media-list-table.php new file mode 100644 index 0000000..531fe60 --- /dev/null +++ b/src/wp-admin/includes/class-wp-media-list-table.php @@ -0,0 +1,374 @@ +detached = isset( $_REQUEST['detached'] ) || isset( $_REQUEST['find_detached'] ); + + parent::__construct( array( + 'plural' => 'media' + ) ); + } + + function ajax_user_can() { + return current_user_can('upload_files'); + } + + function prepare_items() { + global $lost, $wpdb, $wp_query, $post_mime_types, $avail_post_mime_types; + + $q = $_REQUEST; + + if ( !empty( $lost ) ) + $q['post__in'] = implode( ',', $lost ); + + list( $post_mime_types, $avail_post_mime_types ) = wp_edit_attachments_query( $q ); + + $this->is_trash = isset( $_REQUEST['status'] ) && 'trash' == $_REQUEST['status']; + + $this->set_pagination_args( array( + 'total_items' => $wp_query->found_posts, + 'total_pages' => $wp_query->max_num_pages, + 'per_page' => $wp_query->query_vars['posts_per_page'], + ) ); + } + + function get_views() { + global $wpdb, $post_mime_types, $avail_post_mime_types; + + $type_links = array(); + $_num_posts = (array) wp_count_attachments(); + $_total_posts = array_sum($_num_posts) - $_num_posts['trash']; + if ( !isset( $total_orphans ) ) + $total_orphans = $wpdb->get_var( "SELECT COUNT( * ) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent < 1" ); + $matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts)); + foreach ( $matches as $type => $reals ) + foreach ( $reals as $real ) + $num_posts[$type] = ( isset( $num_posts[$type] ) ) ? $num_posts[$type] + $_num_posts[$real] : $_num_posts[$real]; + + $class = ( empty($_GET['post_mime_type']) && !$this->detached && !isset($_GET['status']) ) ? ' class="current"' : ''; + $type_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $_total_posts, 'uploaded files' ), number_format_i18n( $_total_posts ) ) . ''; + foreach ( $post_mime_types as $mime_type => $label ) { + $class = ''; + + if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) ) + continue; + + if ( !empty($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) ) + $class = ' class="current"'; + if ( !empty( $num_posts[$mime_type] ) ) + $type_links[$mime_type] = "" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), number_format_i18n( $num_posts[$mime_type] )) . ''; + } + $type_links['detached'] = 'detached ? ' class="current"' : '' ) . '>' . sprintf( _nx( 'Unattached (%s)', 'Unattached (%s)', $total_orphans, 'detached files' ), number_format_i18n( $total_orphans ) ) . ''; + + if ( !empty($_num_posts['trash']) ) + $type_links['trash'] = '' . sprintf( _nx( 'Trash (%s)', 'Trash (%s)', $_num_posts['trash'], 'uploaded files' ), number_format_i18n( $_num_posts['trash'] ) ) . ''; + + return $type_links; + } + + function get_bulk_actions() { + $actions = array(); + $actions['delete'] = __( 'Delete Permanently' ); + if ( $this->detached ) + $actions['attach'] = __( 'Attach to a post' ); + + return $actions; + } + + function extra_tablenav( $which ) { + global $post_type; + $post_type_obj = get_post_type_object( $post_type ); +?> +
+detached && !$this->is_trash ) { + $this->months_dropdown( $post_type ); + + do_action( 'restrict_manage_posts' ); + submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) ); + } + + if ( $this->detached ) { + submit_button( __( 'Scan for lost attachments' ), 'secondary', 'find_detached', false ); + } elseif ( $this->is_trash && current_user_can( 'edit_others_posts' ) ) { + submit_button( __( 'Empty Trash' ), 'button-secondary apply', 'delete_all', false ); + } ?> +
+'; + $posts_columns['icon'] = ''; + /* translators: column name */ + $posts_columns['title'] = _x( 'File', 'column name' ); + $posts_columns['author'] = __( 'Author' ); + //$posts_columns['tags'] = _x( 'Tags', 'column name' ); + /* translators: column name */ + if ( !$this->detached ) { + $posts_columns['parent'] = _x( 'Attached to', 'column name' ); + $posts_columns['comments'] = 'Comments'; + } + /* translators: column name */ + $posts_columns['date'] = _x( 'Date', 'column name' ); + $posts_columns = apply_filters( 'manage_media_columns', $posts_columns, $this->detached ); + + return $posts_columns; + } + + function get_sortable_columns() { + return array( + 'title' => 'title', + 'author' => 'author', + 'parent' => 'parent', + 'comments' => 'comment_count', + 'date' => array( 'date', true ), + ); + } + + function display_rows() { + global $post, $id; + + add_filter( 'the_title','esc_html' ); + $alt = ''; + + while ( have_posts() ) : the_post(); + + if ( $this->is_trash && $post->post_status != 'trash' + || !$this->is_trash && $post->post_status == 'trash' ) + continue; + + $alt = ( 'alternate' == $alt ) ? '' : 'alternate'; + $post_owner = ( get_current_user_id() == $post->post_author ) ? 'self' : 'other'; + $att_title = _draft_or_post_title(); +?> + post_status ); ?>' valign="top"> +get_column_info(); +foreach ( $columns as $column_name => $column_display_name ) { + $class = "class='$column_name column-$column_name'"; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = $class . $style; + + switch ( $column_name ) { + + case 'cb': +?> + + + + + + + + + + + +post_date && 'date' == $column_name ) { + $t_time = $h_time = __( 'Unpublished' ); + } else { + $t_time = get_the_time( __( 'Y/m/d g:i:s A' ) ); + $m_time = $post->post_date; + $time = get_post_time( 'G', true, $post, false ); + if ( ( abs( $t_diff = time() - $time ) ) < 86400 ) { + if ( $t_diff < 0 ) + $h_time = sprintf( __( '%s from now' ), human_time_diff( $time ) ); + else + $h_time = sprintf( __( '%s ago' ), human_time_diff( $time ) ); + } else { + $h_time = mysql2date( __( 'Y/m/d' ), $m_time ); + } + } +?> + +post_parent > 0 ) { + if ( get_post( $post->post_parent ) ) { + $title =_draft_or_post_title( $post->post_parent ); + } +?> + + + + + + + + + +detached ) { + if ( current_user_can( 'edit_post', $post->ID ) ) + $actions['edit'] = '' . __( 'Edit' ) . ''; + if ( current_user_can( 'delete_post', $post->ID ) ) + if ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) { + $actions['trash'] = "ID ) . "'>" . __( 'Trash' ) . ""; + } else { + $delete_ays = !MEDIA_TRASH ? " onclick='return showNotice.warn();'" : ''; + $actions['delete'] = "ID ) . "'>" . __( 'Delete Permanently' ) . ""; + } + $actions['view'] = '' . __( 'View' ) . ''; + if ( current_user_can( 'edit_post', $post->ID ) ) + $actions['attach'] = ''.__( 'Attach' ).''; + } + else { + if ( current_user_can( 'edit_post', $post->ID ) && !$this->is_trash ) + $actions['edit'] = '' . __( 'Edit' ) . ''; + if ( current_user_can( 'delete_post', $post->ID ) ) { + if ( $this->is_trash ) + $actions['untrash'] = "ID ) . "'>" . __( 'Restore' ) . ""; + elseif ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) + $actions['trash'] = "ID ) . "'>" . __( 'Trash' ) . ""; + if ( $this->is_trash || !EMPTY_TRASH_DAYS || !MEDIA_TRASH ) { + $delete_ays = ( !$this->is_trash && !MEDIA_TRASH ) ? " onclick='return showNotice.warn();'" : ''; + $actions['delete'] = "ID ) . "'>" . __( 'Delete Permanently' ) . ""; + } + } + if ( !$this->is_trash ) { + $title =_draft_or_post_title( $post->post_parent ); + $actions['view'] = '' . __( 'View' ) . ''; + } + } + + $actions = apply_filters( 'media_row_actions', $actions, $post, $this->detached ); + + return $actions; + } +} + +?> diff --git a/src/wp-admin/includes/class-wp-ms-sites-list-table.php b/src/wp-admin/includes/class-wp-ms-sites-list-table.php new file mode 100644 index 0000000..baefc82 --- /dev/null +++ b/src/wp-admin/includes/class-wp-ms-sites-list-table.php @@ -0,0 +1,340 @@ + 'sites', + ) ); + } + + function ajax_user_can() { + return current_user_can( 'manage_sites' ); + } + + function prepare_items() { + global $s, $mode, $wpdb, $current_site; + + $mode = ( empty( $_REQUEST['mode'] ) ) ? 'list' : $_REQUEST['mode']; + + $per_page = $this->get_items_per_page( 'sites_network_per_page' ); + + $pagenum = $this->get_pagenum(); + + $s = isset( $_REQUEST['s'] ) ? stripslashes( trim( $_REQUEST[ 's' ] ) ) : ''; + $wild = ''; + if ( false !== strpos($s, '*') ) { + $wild = '%'; + $s = trim($s, '*'); + } + + $like_s = esc_sql( like_escape( $s ) ); + + $large_network = false; + // If the network is large and a search is not being performed, show only the latest blogs with no paging in order + // to avoid expensive count queries. + if ( !$s && ( get_blog_count() >= 10000 ) ) { + if ( !isset($_REQUEST['orderby']) ) + $_GET['orderby'] = $_REQUEST['orderby'] = ''; + if ( !isset($_REQUEST['order']) ) + $_GET['order'] = $_REQUEST['order'] = 'DESC'; + $large_network = true; + } + + $query = "SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' "; + + if ( empty($s) ) { + // Nothing to do. + } elseif ( preg_match('/^[0-9]+\./', $s) ) { + // IP address + $reg_blog_ids = $wpdb->get_col( "SELECT blog_id FROM {$wpdb->registration_log} WHERE {$wpdb->registration_log}.IP LIKE ( '{$like_s}$wild' )" ); + + if ( !$reg_blog_ids ) + $reg_blog_ids = array( 0 ); + + $query = "SELECT * + FROM {$wpdb->blogs} + WHERE site_id = '{$wpdb->siteid}' + AND {$wpdb->blogs}.blog_id IN (" . implode( ', ', $reg_blog_ids ) . ")"; + } else { + if ( is_numeric($s) ) { + $query .= " AND ( {$wpdb->blogs}.blog_id = '{$like_s}' )"; + } elseif ( is_subdomain_install() ) { + $blog_s = str_replace( '.' . $current_site->domain, '', $like_s ); + $blog_s .= $wild . '.' . $current_site->domain; + $query .= " AND ( {$wpdb->blogs}.domain LIKE '$blog_s' ) "; + } else { + if ( $like_s != trim('/', $current_site->path) ) + $blog_s = $current_site->path . $like_s . $wild . '/'; + else + $blog_s = $like_s; + $query .= " AND ( {$wpdb->blogs}.path LIKE '$blog_s' )"; + } + } + + $order_by = isset( $_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : ''; + if ( $order_by == 'registered' ) { + $query .= ' ORDER BY registered '; + } elseif ( $order_by == 'lastupdated' ) { + $query .= ' ORDER BY last_updated '; + } elseif ( $order_by == 'blogname' ) { + if ( is_subdomain_install() ) + $query .= ' ORDER BY domain '; + else + $query .= ' ORDER BY path '; + } elseif ( $order_by == 'blog_id' ) { + $query .= ' ORDER BY blog_id '; + } else { + $order_by = null; + } + + if ( isset( $order_by ) ) { + $order = ( isset( $_REQUEST['order'] ) && 'DESC' == strtoupper( $_REQUEST['order'] ) ) ? "DESC" : "ASC"; + $query .= $order; + } + + // Don't do an unbounded count on large networks + if ( ! $large_network ) + $total = $wpdb->get_var( str_replace( 'SELECT *', 'SELECT COUNT( blog_id )', $query ) ); + + $query .= " LIMIT " . intval( ( $pagenum - 1 ) * $per_page ) . ", " . intval( $per_page ); + $this->items = $wpdb->get_results( $query, ARRAY_A ); + + if ( $large_network ) + $total = count($this->items); + + $this->set_pagination_args( array( + 'total_items' => $total, + 'per_page' => $per_page, + ) ); + } + + function no_items() { + _e( 'No sites found.' ); + } + + function get_bulk_actions() { + $actions = array(); + if ( current_user_can( 'delete_sites' ) ) + $actions['delete'] = __( 'Delete' ); + $actions['spam'] = _x( 'Mark as Spam', 'site' ); + $actions['notspam'] = _x( 'Not Spam', 'site' ); + + return $actions; + } + + function pagination( $which ) { + global $mode; + + parent::pagination( $which ); + + if ( 'top' == $which ) + $this->view_switcher( $mode ); + } + + function get_columns() { + $blogname_columns = ( is_subdomain_install() ) ? __( 'Domain' ) : __( 'Path' ); + $sites_columns = array( + 'cb' => '', + 'blogname' => $blogname_columns, + 'lastupdated' => __( 'Last Updated' ), + 'registered' => _x( 'Registered', 'site' ), + 'users' => __( 'Users' ) + ); + + if ( has_filter( 'wpmublogsaction' ) ) + $sites_columns['plugins'] = __( 'Actions' ); + + $sites_columns = apply_filters( 'wpmu_blogs_columns', $sites_columns ); + + return $sites_columns; + } + + function get_sortable_columns() { + return array( + 'blogname' => 'blogname', + 'lastupdated' => 'lastupdated', + 'registered' => 'blog_id', + ); + } + + function display_rows() { + global $current_site, $mode; + + $status_list = array( + 'archived' => array( 'site-archived', __( 'Archived' ) ), + 'spam' => array( 'site-spammed', _x( 'Spam', 'site' ) ), + 'deleted' => array( 'site-deleted', __( 'Deleted' ) ), + 'mature' => array( 'site-mature', __( 'Mature' ) ) + ); + + $class = ''; + foreach ( $this->items as $blog ) { + $class = ( 'alternate' == $class ) ? '' : 'alternate'; + reset( $status_list ); + + $blog_states = array(); + foreach ( $status_list as $status => $col ) { + if ( get_blog_status( $blog['blog_id'], $status ) == 1 ) { + $class = $col[0]; + $blog_states[] = $col[1]; + } + } + $blog_state = ''; + if ( ! empty( $blog_states ) ) { + $state_count = count( $blog_states ); + $i = 0; + $blog_state .= ' - '; + foreach ( $blog_states as $state ) { + ++$i; + ( $i == $state_count ) ? $sep = '' : $sep = ', '; + $blog_state .= "$state$sep"; + } + } + echo ""; + + $blogname = ( is_subdomain_install() ) ? str_replace( '.'.$current_site->domain, '', $blog['domain'] ) : $blog['path']; + + list( $columns, $hidden ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + switch ( $column_name ) { + case 'cb': ?> + + + + "; ?> + + ' . sprintf( _x( '%1$s – %2$s', '%1$s: site name. %2$s: site tagline.' ), get_blog_option( $blog['blog_id'], 'blogname' ), get_blog_option( $blog['blog_id'], 'blogdescription ' ) ) . '

'; + + // Preordered. + $actions = array( + 'edit' => '', 'backend' => '', + 'activate' => '', 'deactivate' => '', + 'archive' => '', 'unarchive' => '', + 'spam' => '', 'unspam' => '', + 'delete' => '', + 'visit' => '', + ); + + $actions['edit'] = '' . __( 'Edit' ) . ''; + $actions['backend'] = "" . __( 'Dashboard' ) . ''; + if ( $current_site->blog_id != $blog['blog_id'] ) { + if ( get_blog_status( $blog['blog_id'], 'deleted' ) == '1' ) + $actions['activate'] = '' . __( 'Activate' ) . ''; + else + $actions['deactivate'] = '' . __( 'Deactivate' ) . ''; + + if ( get_blog_status( $blog['blog_id'], 'archived' ) == '1' ) + $actions['unarchive'] = '' . __( 'Unarchive' ) . ''; + else + $actions['archive'] = '' . _x( 'Archive', 'verb; site' ) . ''; + + if ( get_blog_status( $blog['blog_id'], 'spam' ) == '1' ) + $actions['unspam'] = '' . _x( 'Not Spam', 'site' ) . ''; + else + $actions['spam'] = '' . _x( 'Spam', 'site' ) . ''; + + if ( current_user_can( 'delete_site', $blog['blog_id'] ) ) + $actions['delete'] = '' . __( 'Delete' ) . ''; + } + + $actions['visit'] = "" . __( 'Visit' ) . ''; + + $actions = apply_filters( 'manage_sites_action_links', array_filter( $actions ), $blog['blog_id'], $blogname ); + echo $this->row_actions( $actions ); + ?> + + "; + if ( 'list' == $mode ) + $date = 'Y/m/d'; + else + $date = 'Y/m/d \<\b\r \/\> g:i:s a'; + echo ( $blog['last_updated'] == '0000-00-00 00:00:00' ) ? __( 'Never' ) : mysql2date( $date, $blog['last_updated'] ); ?> + + "; + if ( $blog['registered'] == '0000-00-00 00:00:00' ) + echo '—'; + else + echo mysql2date( $date, $blog['registered'] ); + ?> + + "; + $blogusers = get_users( array( 'blog_id' => $blog['blog_id'], 'number' => 6) ); + if ( is_array( $blogusers ) ) { + $blogusers_warning = ''; + if ( count( $blogusers ) > 5 ) { + $blogusers = array_slice( $blogusers, 0, 5 ); + $blogusers_warning = __( 'Only showing first 5 users.' ) . ' ' . __( 'More' ) . ''; + } + foreach ( $blogusers as $user_object ) { + echo '' . esc_html( $user_object->user_login ) . ' '; + if ( 'list' != $mode ) + echo '( ' . $user_object->user_email . ' )'; + echo '
'; + } + if ( $blogusers_warning != '' ) + echo '' . $blogusers_warning . '
'; + } + ?> + + + "; + do_action( 'wpmublogsaction', $blog['blog_id'] ); ?> + + "; + do_action( 'manage_sites_custom_column', $column_name, $blog['blog_id'] ); + echo ""; + break; + } + } + ?> + + diff --git a/src/wp-admin/includes/class-wp-ms-themes-list-table.php b/src/wp-admin/includes/class-wp-ms-themes-list-table.php new file mode 100644 index 0000000..cd9841d --- /dev/null +++ b/src/wp-admin/includes/class-wp-ms-themes-list-table.php @@ -0,0 +1,361 @@ +get_pagenum(); + + $screen = get_current_screen(); + $this->is_site_themes = ( 'site-themes-network' == $screen->id ) ? true : false; + + if ( $this->is_site_themes ) + $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; + + parent::__construct( array( + 'plural' => 'themes' + ) ); + } + + function get_table_classes() { + return array( 'widefat', 'plugins' ); // todo: remove and add CSS for .themes + } + + function ajax_user_can() { + $menu_perms = get_site_option( 'menu_items', array() ); + + if ( empty( $menu_perms['themes'] ) && ! is_super_admin() ) + return false; + + if ( $this->is_site_themes && !current_user_can('manage_sites') ) + return false; + elseif ( !$this->is_site_themes && !current_user_can('manage_network_themes') ) + return false; + return true; + } + + function prepare_items() { + global $status, $themes, $totals, $page, $orderby, $order, $s; + + wp_reset_vars( array( 'orderby', 'order', 's' ) ); + + $themes = array( + 'all' => apply_filters( 'all_themes', get_themes() ), + 'search' => array(), + 'enabled' => array(), + 'disabled' => array(), + 'upgrade' => array() + ); + + $site_allowed_themes = get_site_allowed_themes(); + if ( !$this->is_site_themes ) { + $allowed_themes = $site_allowed_themes; + $themes_per_page = $this->get_items_per_page( 'themes_network_per_page' ); + } else { + $allowed_themes = wpmu_get_blog_allowedthemes( $this->site_id ); + $themes_per_page = $this->get_items_per_page( 'site_themes_network_per_page' ); + } + + $current = get_site_transient( 'update_themes' ); + + foreach ( (array) $themes['all'] as $key => $theme ) { + $theme_key = $theme['Stylesheet']; + + if ( isset( $allowed_themes [ $theme_key ] ) ) { + $themes['all'][$key]['enabled'] = true; + $themes['enabled'][$key] = $themes['all'][$key]; + } + else { + $themes['all'][$key]['enabled'] = false; + $themes['disabled'][$key] = $themes['all'][$key]; + } + if ( isset( $current->response[ $theme['Template'] ] ) ) + $themes['upgrade'][$key] = $themes['all'][$key]; + + if ( $this->is_site_themes && isset( $site_allowed_themes[$theme_key] ) ) { + unset( $themes['all'][$key] ); + unset( $themes['enabled'][$key] ); + unset( $themes['disabled'][$key] ); + } + } + + if ( !current_user_can( 'update_themes' ) || $this->is_site_themes ) + $themes['upgrade'] = array(); + + if ( $s ) { + $status = 'search'; + $themes['search'] = array_filter( $themes['all'], array( &$this, '_search_callback' ) ); + } + + $totals = array(); + foreach ( $themes as $type => $list ) + $totals[ $type ] = count( $list ); + + if ( empty( $themes[ $status ] ) && !in_array( $status, array( 'all', 'search' ) ) ) + $status = 'all'; + + $this->items = $themes[ $status ]; + $total_this_page = $totals[ $status ]; + + if ( $orderby ) { + $orderby = ucfirst( $orderby ); + $order = strtoupper( $order ); + + uasort( $this->items, array( &$this, '_order_callback' ) ); + } + + $start = ( $page - 1 ) * $themes_per_page; + + if ( $total_this_page > $themes_per_page ) + $this->items = array_slice( $this->items, $start, $themes_per_page ); + + $this->set_pagination_args( array( + 'total_items' => $total_this_page, + 'per_page' => $themes_per_page, + ) ); + } + + function _search_callback( $theme ) { + static $term; + if ( is_null( $term ) ) + $term = stripslashes( $_REQUEST['s'] ); + + $search_fields = array( 'Name', 'Title', 'Description', 'Author', 'Author Name', 'Author URI', 'Template', 'Stylesheet' ); + foreach ( $search_fields as $field ) + if ( stripos( $theme[ $field ], $term ) !== false ) + return true; + + return false; + } + + function _order_callback( $theme_a, $theme_b ) { + global $orderby, $order; + + $a = $theme_a[$orderby]; + $b = $theme_b[$orderby]; + + if ( $a == $b ) + return 0; + + if ( 'DESC' == $order ) + return ( $a < $b ) ? 1 : -1; + else + return ( $a < $b ) ? -1 : 1; + } + + function no_items() { + global $themes; + + if ( !empty( $themes['all'] ) ) + _e( 'No themes found.' ); + else + _e( 'You do not appear to have any themes available at this time.' ); + } + + function get_columns() { + global $status; + + return array( + 'cb' => '', + 'name' => __( 'Theme' ), + 'description' => __( 'Description' ), + ); + } + + function get_sortable_columns() { + return array( + 'name' => 'name', + ); + } + + function get_views() { + global $totals, $status; + + $status_links = array(); + foreach ( $totals as $type => $count ) { + if ( !$count ) + continue; + + switch ( $type ) { + case 'all': + $text = _nx( 'All (%s)', 'All (%s)', $count, 'themes' ); + break; + case 'enabled': + $text = _n( 'Enabled (%s)', 'Enabled (%s)', $count ); + break; + case 'disabled': + $text = _n( 'Disabled (%s)', 'Disabled (%s)', $count ); + break; + case 'upgrade': + $text = _n( 'Update Available (%s)', 'Update Available (%s)', $count ); + break; + } + + if ( $this->is_site_themes ) + $url = 'site-themes.php?id=' . $this->site_id; + else + $url = 'themes.php'; + + if ( 'search' != $type ) { + $status_links[$type] = sprintf( "%s", + esc_url( add_query_arg('theme_status', $type, $url) ), + ( $type == $status ) ? ' class="current"' : '', + sprintf( $text, number_format_i18n( $count ) ) + ); + } + } + + return $status_links; + } + + function get_bulk_actions() { + global $status; + + $actions = array(); + if ( 'enabled' != $status ) + $actions['enable-selected'] = $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ); + if ( 'disabled' != $status ) + $actions['disable-selected'] = $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ); + if ( ! $this->is_site_themes ) { + if ( current_user_can( 'delete_themes' ) ) + $actions['delete-selected'] = __( 'Delete' ); + if ( current_user_can( 'update_themes' ) ) + $actions['update-selected'] = __( 'Update' ); + } + return $actions; + } + + function bulk_actions( $which ) { + global $status; + parent::bulk_actions( $which ); + } + + function current_action() { + return parent::current_action(); + } + + function display_rows() { + foreach ( $this->items as $key => $theme ) + $this->single_row( $key, $theme ); + } + + function single_row( $key, $theme ) { + global $status, $page, $s; + + $context = $status; + + if ( $this->is_site_themes ) + $url = "site-themes.php?id={$this->site_id}&"; + else + $url = 'themes.php?'; + + // preorder + $actions = array( + 'enable' => '', + 'disable' => '', + 'edit' => '', + 'delete' => '' + ); + + $theme_key = $theme['Stylesheet']; + + if ( empty( $theme['enabled'] ) ) + $actions['enable'] = '' . ( $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ) ) . ''; + else + $actions['disable'] = '' . ( $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ) ) . ''; + + if ( current_user_can('edit_themes') ) + $actions['edit'] = '' . __('Edit') . ''; + + if ( empty( $theme['enabled'] ) && current_user_can( 'delete_themes' ) && ! $this->is_site_themes && $theme_key != get_option( 'stylesheet' ) && $theme_key != get_option( 'template' ) ) + $actions['delete'] = '' . __( 'Delete' ) . ''; + + $actions = apply_filters( 'theme_action_links', array_filter( $actions ), $theme_key, $theme, $context ); + $actions = apply_filters( "theme_action_links_$theme_key", $actions, $theme_key, $theme, $context ); + + $class = empty( $theme['enabled'] ) ? 'inactive' : 'active'; + $checkbox_id = "checkbox_" . md5($theme['Name']); + $checkbox = ""; + + $description = '

' . $theme['Description'] . '

'; + $theme_name = $theme['Name']; + + $id = sanitize_title( $theme_name ); + + echo ""; + + list( $columns, $hidden ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + switch ( $column_name ) { + case 'cb': + echo ""; + break; + case 'name': + echo ""; + break; + case 'description': + echo ""; + break; + + default: + echo ""; + } + } + + echo ""; + + if ( $this->is_site_themes ) + remove_action( "after_theme_row_$theme_key", 'wp_theme_update_row' ); + do_action( 'after_theme_row', $theme_key, $theme, $status ); + do_action( "after_theme_row_$theme_key", $theme_key, $theme, $status ); + } +} + +?> diff --git a/src/wp-admin/includes/class-wp-ms-users-list-table.php b/src/wp-admin/includes/class-wp-ms-users-list-table.php new file mode 100644 index 0000000..66c41c4 --- /dev/null +++ b/src/wp-admin/includes/class-wp-ms-users-list-table.php @@ -0,0 +1,277 @@ +get_items_per_page( 'users_network_per_page' ); + + $role = isset( $_REQUEST['role'] ) ? $_REQUEST['role'] : ''; + + $paged = $this->get_pagenum(); + + $args = array( + 'number' => $users_per_page, + 'offset' => ( $paged-1 ) * $users_per_page, + 'search' => $usersearch, + 'blog_id' => 0, + 'fields' => 'all_with_meta' + ); + + $args['search'] = ltrim($args['search'], '*'); + + if ( $role == 'super' ) { + $logins = implode( "', '", get_super_admins() ); + $args['include'] = $wpdb->get_col( "SELECT ID FROM $wpdb->users WHERE user_login IN ('$logins')" ); + } + + // If the network is large and a search is not being performed, show only the latest users with no paging in order + // to avoid expensive count queries. + if ( !$usersearch && ( get_blog_count() >= 10000 ) ) { + if ( !isset($_REQUEST['orderby']) ) + $_GET['orderby'] = $_REQUEST['orderby'] = 'id'; + if ( !isset($_REQUEST['order']) ) + $_GET['order'] = $_REQUEST['order'] = 'DESC'; + $args['count_total'] = false; + } + + if ( isset( $_REQUEST['orderby'] ) ) + $args['orderby'] = $_REQUEST['orderby']; + + if ( isset( $_REQUEST['order'] ) ) + $args['order'] = $_REQUEST['order']; + + $mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode']; + + // Query the user IDs for this page + $wp_user_search = new WP_User_Query( $args ); + + $this->items = $wp_user_search->get_results(); + + $this->set_pagination_args( array( + 'total_items' => $wp_user_search->get_total(), + 'per_page' => $users_per_page, + ) ); + } + + function get_bulk_actions() { + $actions = array(); + if ( current_user_can( 'delete_users' ) ) + $actions['delete'] = __( 'Delete' ); + $actions['spam'] = _x( 'Mark as Spam', 'user' ); + $actions['notspam'] = _x( 'Not Spam', 'user' ); + + return $actions; + } + + function no_items() { + _e( 'No users found.' ); + } + + function get_views() { + global $wp_roles, $role; + + $total_users = get_user_count(); + $super_admins = get_super_admins(); + $total_admins = count( $super_admins ); + + $current_role = false; + $class = $role != 'super' ? ' class="current"' : ''; + $role_links = array(); + $role_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $total_users, 'users' ), number_format_i18n( $total_users ) ) . ''; + $class = $role == 'super' ? ' class="current"' : ''; + $role_links['super'] = "" . sprintf( _n( 'Super Admin (%s)', 'Super Admins (%s)', $total_admins ), number_format_i18n( $total_admins ) ) . ''; + + return $role_links; + } + + function pagination( $which ) { + global $mode; + + parent::pagination ( $which ); + + if ( 'top' == $which ) + $this->view_switcher( $mode ); + } + + function get_columns() { + $users_columns = array( + 'cb' => '', + 'username' => __( 'Username' ), + 'name' => __( 'Name' ), + 'email' => __( 'E-mail' ), + 'registered' => _x( 'Registered', 'user' ), + 'blogs' => __( 'Sites' ) + ); + $users_columns = apply_filters( 'wpmu_users_columns', $users_columns ); + + return $users_columns; + } + + function get_sortable_columns() { + return array( + 'username' => 'login', + 'name' => 'name', + 'email' => 'email', + 'registered' => 'id', + ); + } + + function display_rows() { + global $current_site, $mode; + + $alt = ''; + $super_admins = get_super_admins(); + foreach ( $this->items as $user ) { + $alt = ( 'alternate' == $alt ) ? '' : 'alternate'; + + $status_list = array( 'spam' => 'site-spammed', 'deleted' => 'site-deleted' ); + + foreach ( $status_list as $status => $col ) { + if ( $user->$status ) + $alt .= " $col"; + } + + ?> + + get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) : + $class = "class='$column_name column-$column_name'"; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = "$class$style"; + + + switch ( $column_name ) { + case 'cb': ?> + + user_email, 32 ); + if ( get_current_user_id() == $user->ID ) { + $edit_link = esc_url( network_admin_url( 'profile.php' ) ); + } else { + $edit_link = esc_url( network_admin_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), 'user-edit.php?user_id=' . $user->ID ) ) ); + } + + echo " + $user->first_name $user->last_name"; + break; + + case 'email': + echo ""; + break; + + case 'registered': + if ( 'list' == $mode ) + $date = 'Y/m/d'; + else + $date = 'Y/m/d \<\b\r \/\> g:i:s a'; + + echo ""; + break; + + case 'blogs': + $blogs = get_blogs_of_user( $user->ID, true ); + echo " + "; + echo apply_filters( 'manage_users_custom_column', '', $column_name, $user->ID ); + echo ""; + break; + } + endforeach + ?> + + diff --git a/src/wp-admin/includes/class-wp-plugin-install-list-table.php b/src/wp-admin/includes/class-wp-plugin-install-list-table.php new file mode 100644 index 0000000..1f809b3 --- /dev/null +++ b/src/wp-admin/includes/class-wp-plugin-install-list-table.php @@ -0,0 +1,244 @@ +get_pagenum(); + + $per_page = 30; + + // These are the tabs which are shown on the page + $tabs = array(); + $tabs['dashboard'] = __( 'Search' ); + if ( 'search' == $tab ) + $tabs['search'] = __( 'Search Results' ); + $tabs['upload'] = __( 'Upload' ); + $tabs['featured'] = _x( 'Featured','Plugin Installer' ); + $tabs['popular'] = _x( 'Popular','Plugin Installer' ); + $tabs['new'] = _x( 'Newest','Plugin Installer' ); + $tabs['updated'] = _x( 'Recently Updated','Plugin Installer' ); + + $nonmenu_tabs = array( 'plugin-information' ); //Valid actions to perform which do not have a Menu item. + + $tabs = apply_filters( 'install_plugins_tabs', $tabs ); + $nonmenu_tabs = apply_filters( 'install_plugins_nonmenu_tabs', $nonmenu_tabs ); + + // If a non-valid menu tab has been selected, And its not a non-menu action. + if ( empty( $tab ) || ( !isset( $tabs[ $tab ] ) && !in_array( $tab, (array) $nonmenu_tabs ) ) ) + $tab = key( $tabs ); + + $args = array( 'page' => $paged, 'per_page' => $per_page ); + + switch ( $tab ) { + case 'search': + $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : ''; + $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : ''; + + switch ( $type ) { + case 'tag': + $args['tag'] = sanitize_title_with_dashes( $term ); + break; + case 'term': + $args['search'] = $term; + break; + case 'author': + $args['author'] = $term; + break; + } + + add_action( 'install_plugins_table_header', 'install_search_form' ); + break; + + case 'featured': + case 'popular': + case 'new': + case 'updated': + $args['browse'] = $tab; + break; + + default: + $args = false; + } + + if ( !$args ) + return; + + $api = plugins_api( 'query_plugins', $args ); + + if ( is_wp_error( $api ) ) + wp_die( $api->get_error_message() . '

' . __( 'Try again' ) . '' ); + + $this->items = $api->plugins; + + $this->set_pagination_args( array( + 'total_items' => $api->info['results'], + 'per_page' => $per_page, + ) ); + } + + function no_items() { + _e( 'No plugins match your request.' ); + } + + function get_views() { + global $tabs, $tab; + + $display_tabs = array(); + foreach ( (array) $tabs as $action => $text ) { + $class = ( $action == $tab ) ? ' class="current"' : ''; + $href = self_admin_url('plugin-install.php?tab=' . $action); + $display_tabs['plugin-install-'.$action] = "$text"; + } + + return $display_tabs; + } + + function display_tablenav( $which ) { + if ( 'top' == $which ) { ?> +

+
+ +
+ pagination( $which ); ?> + +
+
+ +
+ pagination( $which ); ?> + +
+
+ _args ); + + return array( 'widefat', $plural ); + } + + function get_columns() { + return array( + 'name' => _x( 'Name', 'plugin name' ), + 'version' => __( 'Version' ), + 'rating' => __( 'Rating' ), + 'description' => __( 'Description' ), + ); + } + + function display_rows() { + $plugins_allowedtags = array( + 'a' => array( 'href' => array(),'title' => array(), 'target' => array() ), + 'abbr' => array( 'title' => array() ),'acronym' => array( 'title' => array() ), + 'code' => array(), 'pre' => array(), 'em' => array(),'strong' => array(), + 'ul' => array(), 'ol' => array(), 'li' => array(), 'p' => array(), 'br' => array() + ); + + list( $columns, $hidden ) = $this->get_column_info(); + + $style = array(); + foreach ( $columns as $column_name => $column_display_name ) { + $style[ $column_name ] = in_array( $column_name, $hidden ) ? 'style="display:none;"' : ''; + } + + foreach ( (array) $this->items as $plugin ) { + if ( is_object( $plugin ) ) + $plugin = (array) $plugin; + + $title = wp_kses( $plugin['name'], $plugins_allowedtags ); + //Limit description to 400char, and remove any HTML. + $description = strip_tags( $plugin['description'] ); + if ( strlen( $description ) > 400 ) + $description = mb_substr( $description, 0, 400 ) . '…'; + //remove any trailing entities + $description = preg_replace( '/&[^;\s]{0,6}$/', '', $description ); + //strip leading/trailing & multiple consecutive lines + $description = trim( $description ); + $description = preg_replace( "|(\r?\n)+|", "\n", $description ); + //\n =>
+ $description = nl2br( $description ); + $version = wp_kses( $plugin['version'], $plugins_allowedtags ); + + $name = strip_tags( $title . ' ' . $version ); + + $author = $plugin['author']; + if ( ! empty( $plugin['author'] ) ) + $author = ' ' . sprintf( __( 'By %s' ), $author ) . '.'; + + $author = wp_kses( $author, $plugins_allowedtags ); + + $action_links = array(); + $action_links[] = '' . __( 'Details' ) . ''; + + if ( current_user_can( 'install_plugins' ) || current_user_can( 'update_plugins' ) ) { + $status = install_plugin_install_status( $plugin ); + + switch ( $status['status'] ) { + case 'install': + if ( $status['url'] ) + $action_links[] = '' . __( 'Install Now' ) . ''; + break; + case 'update_available': + if ( $status['url'] ) + $action_links[] = '' . sprintf( __( 'Update Now' ), $status['version'] ) . ''; + break; + case 'latest_installed': + case 'newer_installed': + $action_links[] = '' . __( 'Installed' ) . ''; + break; + } + } + + $action_links = apply_filters( 'plugin_install_action_links', $action_links, $plugin ); + ?> + + + + + + + diff --git a/src/wp-admin/includes/class-wp-plugins-list-table.php b/src/wp-admin/includes/class-wp-plugins-list-table.php new file mode 100644 index 0000000..99ce212 --- /dev/null +++ b/src/wp-admin/includes/class-wp-plugins-list-table.php @@ -0,0 +1,458 @@ +get_pagenum(); + + parent::__construct( array( + 'plural' => 'plugins', + ) ); + } + + function get_table_classes() { + return array( 'widefat', $this->_args['plural'] ); + } + + function ajax_user_can() { + if ( is_multisite() ) { + $menu_perms = get_site_option( 'menu_items', array() ); + + if ( empty( $menu_perms['plugins'] ) && ! is_super_admin() ) + return false; + } + + return current_user_can('activate_plugins'); + } + + function prepare_items() { + global $status, $plugins, $totals, $page, $orderby, $order, $s; + + wp_reset_vars( array( 'orderby', 'order', 's' ) ); + + $plugins = array( + 'all' => apply_filters( 'all_plugins', get_plugins() ), + 'search' => array(), + 'active' => array(), + 'inactive' => array(), + 'recently_activated' => array(), + 'upgrade' => array(), + 'mustuse' => array(), + 'dropins' => array() + ); + + $screen = get_current_screen(); + + if ( ! is_multisite() || ( $screen->is_network && current_user_can('manage_network_plugins') ) ) { + if ( apply_filters( 'show_advanced_plugins', true, 'mustuse' ) ) + $plugins['mustuse'] = get_mu_plugins(); + if ( apply_filters( 'show_advanced_plugins', true, 'dropins' ) ) + $plugins['dropins'] = get_dropins(); + + $current = get_site_transient( 'update_plugins' ); + foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) { + if ( isset( $current->response[ $plugin_file ] ) ) + $plugins['upgrade'][ $plugin_file ] = $plugin_data; + } + } + + set_transient( 'plugin_slugs', array_keys( $plugins['all'] ), 86400 ); + + $recently_activated = get_option( 'recently_activated', array() ); + + $one_week = 7*24*60*60; + foreach ( $recently_activated as $key => $time ) + if ( $time + $one_week < time() ) + unset( $recently_activated[$key] ); + update_option( 'recently_activated', $recently_activated ); + + foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) { + // Filter into individual sections + if ( is_multisite() && is_network_only_plugin( $plugin_file ) && !$screen->is_network ) { + unset( $plugins['all'][ $plugin_file] ); + } elseif ( is_plugin_active_for_network($plugin_file) && !$screen->is_network ) { + unset( $plugins['all'][ $plugin_file ] ); + } elseif ( is_multisite() && is_network_only_plugin( $plugin_file ) && !current_user_can( 'manage_network_plugins' ) ) { + $plugins['network'][ $plugin_file ] = $plugin_data; + } elseif ( ( !$screen->is_network && is_plugin_active( $plugin_file ) ) + || ( $screen->is_network && is_plugin_active_for_network( $plugin_file ) ) ) { + $plugins['active'][ $plugin_file ] = $plugin_data; + } else { + if ( !$screen->is_network && isset( $recently_activated[ $plugin_file ] ) ) // Was the plugin recently activated? + $plugins['recently_activated'][ $plugin_file ] = $plugin_data; + $plugins['inactive'][ $plugin_file ] = $plugin_data; + } + } + + if ( !current_user_can( 'update_plugins' ) ) + $plugins['upgrade'] = array(); + + if ( $s ) { + $status = 'search'; + $plugins['search'] = array_filter( $plugins['all'], array( &$this, '_search_callback' ) ); + } + + $totals = array(); + foreach ( $plugins as $type => $list ) + $totals[ $type ] = count( $list ); + + if ( empty( $plugins[ $status ] ) && !in_array( $status, array( 'all', 'search' ) ) ) + $status = 'all'; + + $this->items = array(); + foreach ( $plugins[ $status ] as $plugin_file => $plugin_data ) { + // Translate, Don't Apply Markup, Sanitize HTML + $this->items[$plugin_file] = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, false, true ); + } + + $total_this_page = $totals[ $status ]; + + if ( $orderby ) { + $orderby = ucfirst( $orderby ); + $order = strtoupper( $order ); + + uasort( $this->items, array( &$this, '_order_callback' ) ); + } + + $plugins_per_page = $this->get_items_per_page( str_replace( '-', '_', $screen->id . '_per_page' ), 999 ); + + $start = ( $page - 1 ) * $plugins_per_page; + + if ( $total_this_page > $plugins_per_page ) + $this->items = array_slice( $this->items, $start, $plugins_per_page ); + + $this->set_pagination_args( array( + 'total_items' => $total_this_page, + 'per_page' => $plugins_per_page, + ) ); + } + + function _search_callback( $plugin ) { + static $term; + if ( is_null( $term ) ) + $term = stripslashes( $_REQUEST['s'] ); + + foreach ( $plugin as $value ) + if ( stripos( $value, $term ) !== false ) + return true; + + return false; + } + + function _order_callback( $plugin_a, $plugin_b ) { + global $orderby, $order; + + $a = $plugin_a[$orderby]; + $b = $plugin_b[$orderby]; + + if ( $a == $b ) + return 0; + + if ( 'DESC' == $order ) + return ( $a < $b ) ? 1 : -1; + else + return ( $a < $b ) ? -1 : 1; + } + + function no_items() { + global $plugins; + + if ( !empty( $plugins['all'] ) ) + _e( 'No plugins found.' ); + else + _e( 'You do not appear to have any plugins available at this time.' ); + } + + function get_columns() { + global $status; + + return array( + 'cb' => !in_array( $status, array( 'mustuse', 'dropins' ) ) ? '' : '', + 'name' => __( 'Plugin' ), + 'description' => __( 'Description' ), + ); + } + + function get_sortable_columns() { + return array(); + } + + function get_views() { + global $totals, $status; + + $status_links = array(); + foreach ( $totals as $type => $count ) { + if ( !$count ) + continue; + + switch ( $type ) { + case 'all': + $text = _nx( 'All (%s)', 'All (%s)', $count, 'plugins' ); + break; + case 'active': + $text = _n( 'Active (%s)', 'Active (%s)', $count ); + break; + case 'recently_activated': + $text = _n( 'Recently Active (%s)', 'Recently Active (%s)', $count ); + break; + case 'inactive': + $text = _n( 'Inactive (%s)', 'Inactive (%s)', $count ); + break; + case 'network': + $text = _n( 'Network (%s)', 'Network (%s)', $count ); + break; + case 'mustuse': + $text = _n( 'Must-Use (%s)', 'Must-Use (%s)', $count ); + break; + case 'dropins': + $text = _n( 'Drop-ins (%s)', 'Drop-ins (%s)', $count ); + break; + case 'upgrade': + $text = _n( 'Update Available (%s)', 'Update Available (%s)', $count ); + break; + } + + if ( 'search' != $type ) { + $status_links[$type] = sprintf( "%s", + add_query_arg('plugin_status', $type, 'plugins.php'), + ( $type == $status ) ? ' class="current"' : '', + sprintf( $text, number_format_i18n( $count ) ) + ); + } + } + + return $status_links; + } + + function get_bulk_actions() { + global $status; + + $actions = array(); + + $screen = get_current_screen(); + + if ( 'active' != $status ) { + $action = $screen->is_network ? 'network-activate-selected' : 'activate-selected'; + $actions[ $action ] = __( 'Activate' ); + } + + if ( 'inactive' != $status && 'recent' != $status ) + $actions['deactivate-selected'] = __( 'Deactivate' ); + + if ( !is_multisite() || $screen->is_network ) { + if ( current_user_can( 'update_plugins' ) ) + $actions['update-selected'] = __( 'Update' ); + if ( current_user_can( 'delete_plugins' ) && ( 'active' != $status ) ) + $actions['delete-selected'] = __( 'Delete' ); + } + + return $actions; + } + + function bulk_actions( $which ) { + global $status; + + if ( in_array( $status, array( 'mustuse', 'dropins' ) ) ) + return; + + parent::bulk_actions( $which ); + } + + function extra_tablenav( $which ) { + global $status; + + if ( ! in_array($status, array('recently_activated', 'mustuse', 'dropins') ) ) + return; + + echo '
'; + + if ( 'recently_activated' == $status ) + submit_button( __( 'Clear List' ), 'secondary', 'clear-recent-list', false ); + elseif ( 'top' == $which && 'mustuse' == $status ) + echo '

' . sprintf( __( 'Files in the %s directory are executed automatically.' ), str_replace( ABSPATH, '/', WPMU_PLUGIN_DIR ) ) . '

'; + elseif ( 'top' == $which && 'dropins' == $status ) + echo '

' . sprintf( __( 'Drop-ins are advanced plugins in the %s directory that replace WordPress functionality when present.' ), str_replace( ABSPATH, '', WP_CONTENT_DIR ) ) . '

'; + + echo '
'; + } + + function current_action() { + if ( isset($_POST['clear-recent-list']) ) + return 'clear-recent-list'; + + return parent::current_action(); + } + + function display_rows() { + global $status; + + $screen = get_current_screen(); + + if ( is_multisite() && !$screen->is_network && in_array( $status, array( 'mustuse', 'dropins' ) ) ) + return; + + foreach ( $this->items as $plugin_file => $plugin_data ) + $this->single_row( $plugin_file, $plugin_data ); + } + + function single_row( $plugin_file, $plugin_data ) { + global $status, $page, $s; + + $context = $status; + + $screen = get_current_screen(); + + // preorder + $actions = array( + 'network_deactivate' => '', 'deactivate' => '', + 'network_only' => '', 'activate' => '', + 'network_activate' => '', + 'edit' => '', + 'delete' => '', + ); + + if ( 'mustuse' == $context ) { + $is_active = true; + } elseif ( 'dropins' == $context ) { + $dropins = _get_dropins(); + $plugin_name = $plugin_file; + if ( $plugin_file != $plugin_data['Name'] ) + $plugin_name .= '
' . $plugin_data['Name']; + if ( true === ( $dropins[ $plugin_file ][1] ) ) { // Doesn't require a constant + $is_active = true; + $description = '

' . $dropins[ $plugin_file ][0] . '

'; + } elseif ( constant( $dropins[ $plugin_file ][1] ) ) { // Constant is true + $is_active = true; + $description = '

' . $dropins[ $plugin_file ][0] . '

'; + } else { + $is_active = false; + $description = '

' . $dropins[ $plugin_file ][0] . ' ' . __('Inactive:') . ' ' . sprintf( __( 'Requires %s in wp-config.php.' ), "define('" . $dropins[ $plugin_file ][1] . "', true);" ) . '

'; + } + if ( $plugin_data['Description'] ) + $description .= '

' . $plugin_data['Description'] . '

'; + } else { + $is_active_for_network = is_plugin_active_for_network($plugin_file); + if ( $screen->is_network ) + $is_active = $is_active_for_network; + else + $is_active = is_plugin_active( $plugin_file ); + + if ( $is_active_for_network && !is_super_admin() && !$screen->is_network ) + return; + + if ( $screen->is_network ) { + if ( $is_active_for_network ) { + if ( current_user_can( 'manage_network_plugins' ) ) + $actions['network_deactivate'] = '' . __('Network Deactivate') . ''; + } else { + if ( current_user_can( 'manage_network_plugins' ) ) + $actions['network_activate'] = '' . __('Network Activate') . ''; + if ( current_user_can( 'delete_plugins' ) && ! is_plugin_active( $plugin_file ) ) + $actions['delete'] = '' . __('Delete') . ''; + } + } else { + if ( $is_active ) { + $actions['deactivate'] = '' . __('Deactivate') . ''; + } else { + $actions['activate'] = '' . __('Activate') . ''; + + if ( ! is_multisite() && current_user_can('delete_plugins') ) + $actions['delete'] = '' . __('Delete') . ''; + } // end if $is_active + } // end if $screen->is_network + + if ( ( ! is_multisite() || $screen->is_network ) && current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) ) + $actions['edit'] = '' . __('Edit') . ''; + } // end if $context + + $prefix = $screen->is_network ? 'network_admin_' : ''; + $actions = apply_filters( $prefix . 'plugin_action_links', array_filter( $actions ), $plugin_file, $plugin_data, $context ); + $actions = apply_filters( $prefix . "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context ); + + $class = $is_active ? 'active' : 'inactive'; + $checkbox_id = "checkbox_" . md5($plugin_data['Name']); + $checkbox = in_array( $status, array( 'mustuse', 'dropins' ) ) ? '' : ""; + if ( 'dropins' != $context ) { + $description = '

' . ( $plugin_data['Description'] ? $plugin_data['Description'] : ' ' ) . '

'; + $plugin_name = $plugin_data['Name']; + } + + $id = sanitize_title( $plugin_name ); + + echo ""; + + list( $columns, $hidden ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + switch ( $column_name ) { + case 'cb': + echo ""; + break; + case 'name': + echo ""; + break; + case 'description': + echo ""; + break; + default: + echo ""; + } + } + + echo ""; + + do_action( 'after_plugin_row', $plugin_file, $plugin_data, $status ); + do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status ); + } +} + +?> diff --git a/src/wp-admin/includes/class-wp-posts-list-table.php b/src/wp-admin/includes/class-wp-posts-list-table.php new file mode 100644 index 0000000..bdd24a6 --- /dev/null +++ b/src/wp-admin/includes/class-wp-posts-list-table.php @@ -0,0 +1,1021 @@ + true ) ) ) ) + $post_type = $_REQUEST['post_type']; + else + wp_die( __( 'Invalid post type' ) ); + $_REQUEST['post_type'] = $post_type; + + $post_type_object = get_post_type_object( $post_type ); + + if ( !current_user_can( $post_type_object->cap->edit_others_posts ) ) { + $this->user_posts_count = $wpdb->get_var( $wpdb->prepare( " + SELECT COUNT( 1 ) FROM $wpdb->posts + WHERE post_type = %s AND post_status NOT IN ( 'trash', 'auto-draft' ) + AND post_author = %d + ", $post_type, get_current_user_id() ) ); + + if ( $this->user_posts_count && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['all_posts'] ) && empty( $_REQUEST['author'] ) && empty( $_REQUEST['show_sticky'] ) ) + $_GET['author'] = get_current_user_id(); + } + + if ( 'post' == $post_type && $sticky_posts = get_option( 'sticky_posts' ) ) { + $sticky_posts = implode( ', ', array_map( 'absint', (array) $sticky_posts ) ); + $this->sticky_posts_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT( 1 ) FROM $wpdb->posts WHERE post_type = %s AND post_status != 'trash' AND ID IN ($sticky_posts)", $post_type ) ); + } + + parent::__construct( array( + 'plural' => 'posts', + ) ); + } + + function ajax_user_can() { + global $post_type_object; + + return current_user_can( $post_type_object->cap->edit_posts ); + } + + function prepare_items() { + global $post_type_object, $post_type, $avail_post_stati, $wp_query, $per_page, $mode; + + $avail_post_stati = wp_edit_posts_query(); + + $this->hierarchical_display = ( $post_type_object->hierarchical && 'menu_order title' == $wp_query->query['orderby'] ); + + $total_items = $this->hierarchical_display ? $wp_query->post_count : $wp_query->found_posts; + + $per_page = $this->get_items_per_page( 'edit_' . $post_type . '_per_page' ); + $per_page = apply_filters( 'edit_posts_per_page', $per_page, $post_type ); + + if ( $this->hierarchical_display ) + $total_pages = ceil( $total_items / $per_page ); + else + $total_pages = $wp_query->max_num_pages; + + $mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode']; + + $this->is_trash = isset( $_REQUEST['post_status'] ) && $_REQUEST['post_status'] == 'trash'; + + $this->set_pagination_args( array( + 'total_items' => $total_items, + 'total_pages' => $total_pages, + 'per_page' => $per_page + ) ); + } + + function has_items() { + return have_posts(); + } + + function no_items() { + global $post_type_object; + + if ( isset( $_REQUEST['post_status'] ) && 'trash' == $_REQUEST['post_status'] ) + echo $post_type_object->labels->not_found_in_trash; + else + echo $post_type_object->labels->not_found; + } + + function get_views() { + global $post_type, $post_type_object, $locked_post_status, $avail_post_stati; + + if ( !empty($locked_post_status) ) + return array(); + + $status_links = array(); + $num_posts = wp_count_posts( $post_type, 'readable' ); + $class = ''; + $allposts = ''; + + $current_user_id = get_current_user_id(); + + if ( $this->user_posts_count ) { + if ( isset( $_GET['author'] ) && ( $_GET['author'] == $current_user_id ) ) + $class = ' class="current"'; + $status_links['mine'] = "" . sprintf( _nx( 'Mine (%s)', 'Mine (%s)', $this->user_posts_count, 'posts' ), number_format_i18n( $this->user_posts_count ) ) . ''; + $allposts = '&all_posts=1'; + } + + $total_posts = array_sum( (array) $num_posts ); + + // Subtract post types that are not included in the admin all list. + foreach ( get_post_stati( array('show_in_admin_all_list' => false) ) as $state ) + $total_posts -= $num_posts->$state; + + $class = empty( $class ) && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['show_sticky'] ) ? ' class="current"' : ''; + $status_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $total_posts, 'posts' ), number_format_i18n( $total_posts ) ) . ''; + + foreach ( get_post_stati(array('show_in_admin_status_list' => true), 'objects') as $status ) { + $class = ''; + + $status_name = $status->name; + + if ( !in_array( $status_name, $avail_post_stati ) ) + continue; + + if ( empty( $num_posts->$status_name ) ) + continue; + + if ( isset($_REQUEST['post_status']) && $status_name == $_REQUEST['post_status'] ) + $class = ' class="current"'; + + $status_links[$status_name] = "" . sprintf( translate_nooped_plural( $status->label_count, $num_posts->$status_name ), number_format_i18n( $num_posts->$status_name ) ) . ''; + } + + if ( ! empty( $this->sticky_posts_count ) ) { + $class = ! empty( $_REQUEST['show_sticky'] ) ? ' class="current"' : ''; + + $sticky_link = array( 'sticky' => "" . sprintf( _nx( 'Sticky (%s)', 'Sticky (%s)', $this->sticky_posts_count, 'posts' ), number_format_i18n( $this->sticky_posts_count ) ) . '' ); + + // Sticky comes after Publish, or if not listed, after All. + $split = 1 + array_search( ( isset( $status_links['publish'] ) ? 'publish' : 'all' ), array_keys( $status_links ) ); + $status_links = array_merge( array_slice( $status_links, 0, $split ), $sticky_link, array_slice( $status_links, $split ) ); + } + + return $status_links; + } + + function get_bulk_actions() { + $actions = array(); + + if ( $this->is_trash ) + $actions['untrash'] = __( 'Restore' ); + else + $actions['edit'] = __( 'Edit' ); + + if ( $this->is_trash || !EMPTY_TRASH_DAYS ) + $actions['delete'] = __( 'Delete Permanently' ); + else + $actions['trash'] = __( 'Move to Trash' ); + + return $actions; + } + + function extra_tablenav( $which ) { + global $post_type, $post_type_object, $cat; +?> +
+months_dropdown( $post_type ); + + if ( is_object_in_taxonomy( $post_type, 'category' ) ) { + $dropdown_options = array( + 'show_option_all' => __( 'View all categories' ), + 'hide_empty' => 0, + 'hierarchical' => 1, + 'show_count' => 0, + 'orderby' => 'name', + 'selected' => $cat + ); + wp_dropdown_categories( $dropdown_options ); + } + do_action( 'restrict_manage_posts' ); + submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) ); + } + + if ( $this->is_trash && current_user_can( $post_type_object->cap->edit_others_posts ) ) { + submit_button( __( 'Empty Trash' ), 'button-secondary apply', 'delete_all', false ); + } +?> +
+hierarchical ) + $this->view_switcher( $mode ); + } + + function get_table_classes() { + global $post_type_object; + + return array( 'widefat', 'fixed', $post_type_object->hierarchical ? 'pages' : 'posts' ); + } + + function get_columns() { + $screen = get_current_screen(); + + if ( empty( $screen ) ) + $post_type = 'post'; + else + $post_type = $screen->post_type; + + $posts_columns = array(); + + $posts_columns['cb'] = ''; + + /* translators: manage posts column name */ + $posts_columns['title'] = _x( 'Title', 'column name' ); + + if ( post_type_supports( $post_type, 'author' ) ) + $posts_columns['author'] = __( 'Author' ); + + if ( empty( $post_type ) || is_object_in_taxonomy( $post_type, 'category' ) ) + $posts_columns['categories'] = __( 'Categories' ); + + if ( empty( $post_type ) || is_object_in_taxonomy( $post_type, 'post_tag' ) ) + $posts_columns['tags'] = __( 'Tags' ); + + $post_status = !empty( $_REQUEST['post_status'] ) ? $_REQUEST['post_status'] : 'all'; + if ( post_type_supports( $post_type, 'comments' ) && !in_array( $post_status, array( 'pending', 'draft', 'future' ) ) ) + $posts_columns['comments'] = '' . esc_attr__( 'Comments' ) . ''; + + $posts_columns['date'] = __( 'Date' ); + + if ( 'page' == $post_type ) + $posts_columns = apply_filters( 'manage_pages_columns', $posts_columns ); + else + $posts_columns = apply_filters( 'manage_posts_columns', $posts_columns, $post_type ); + $posts_columns = apply_filters( "manage_{$post_type}_posts_columns", $posts_columns ); + + return $posts_columns; + } + + function get_sortable_columns() { + return array( + 'title' => 'title', + 'author' => 'author', + 'parent' => 'parent', + 'comments' => 'comment_count', + 'date' => array( 'date', true ) + ); + } + + function display_rows( $posts = array() ) { + global $wp_query, $post_type_object, $per_page; + + if ( empty( $posts ) ) + $posts = $wp_query->posts; + + add_filter( 'the_title', 'esc_html' ); + + if ( $this->hierarchical_display ) { + $this->_display_rows_hierarchical( $posts, $this->get_pagenum(), $per_page ); + } else { + $this->_display_rows( $posts ); + } + } + + function _display_rows( $posts ) { + global $post, $mode; + + // Create array of post IDs. + $post_ids = array(); + + foreach ( $posts as $a_post ) + $post_ids[] = $a_post->ID; + + $this->comment_pending_count = get_pending_comments_num( $post_ids ); + + foreach ( $posts as $post ) + $this->single_row( $post ); + } + + function _display_rows_hierarchical( $pages, $pagenum = 1, $per_page = 20 ) { + global $wpdb; + + $level = 0; + + if ( ! $pages ) { + $pages = get_pages( array( 'sort_column' => 'menu_order' ) ); + + if ( ! $pages ) + return false; + } + + /* + * arrange pages into two parts: top level pages and children_pages + * children_pages is two dimensional array, eg. + * children_pages[10][] contains all sub-pages whose parent is 10. + * It only takes O( N ) to arrange this and it takes O( 1 ) for subsequent lookup operations + * If searching, ignore hierarchy and treat everything as top level + */ + if ( empty( $_REQUEST['s'] ) ) { + + $top_level_pages = array(); + $children_pages = array(); + + foreach ( $pages as $page ) { + + // catch and repair bad pages + if ( $page->post_parent == $page->ID ) { + $page->post_parent = 0; + $wpdb->update( $wpdb->posts, array( 'post_parent' => 0 ), array( 'ID' => $page->ID ) ); + clean_page_cache( $page->ID ); + } + + if ( 0 == $page->post_parent ) + $top_level_pages[] = $page; + else + $children_pages[ $page->post_parent ][] = $page; + } + + $pages = &$top_level_pages; + } + + $count = 0; + $start = ( $pagenum - 1 ) * $per_page; + $end = $start + $per_page; + + foreach ( $pages as $page ) { + if ( $count >= $end ) + break; + + if ( $count >= $start ) + echo "\t" . $this->single_row( $page, $level ); + + $count++; + + if ( isset( $children_pages ) ) + $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page ); + } + + // if it is the last pagenum and there are orphaned pages, display them with paging as well + if ( isset( $children_pages ) && $count < $end ){ + foreach ( $children_pages as $orphans ){ + foreach ( $orphans as $op ) { + if ( $count >= $end ) + break; + if ( $count >= $start ) + echo "\t" . $this->single_row( $op, 0 ); + $count++; + } + } + } + } + + /** + * Given a top level page ID, display the nested hierarchy of sub-pages + * together with paging support + * + * @since 3.1.0 (Standalone function exists since 2.6.0) + * + * @param unknown_type $children_pages + * @param unknown_type $count + * @param unknown_type $parent + * @param unknown_type $level + * @param unknown_type $pagenum + * @param unknown_type $per_page + */ + function _page_rows( &$children_pages, &$count, $parent, $level, $pagenum, $per_page ) { + + if ( ! isset( $children_pages[$parent] ) ) + return; + + $start = ( $pagenum - 1 ) * $per_page; + $end = $start + $per_page; + + foreach ( $children_pages[$parent] as $page ) { + + if ( $count >= $end ) + break; + + // If the page starts in a subtree, print the parents. + if ( $count == $start && $page->post_parent > 0 ) { + $my_parents = array(); + $my_parent = $page->post_parent; + while ( $my_parent ) { + $my_parent = get_post( $my_parent ); + $my_parents[] = $my_parent; + if ( !$my_parent->post_parent ) + break; + $my_parent = $my_parent->post_parent; + } + $num_parents = count( $my_parents ); + while ( $my_parent = array_pop( $my_parents ) ) { + echo "\t" . $this->single_row( $my_parent, $level - $num_parents ); + $num_parents--; + } + } + + if ( $count >= $start ) + echo "\t" . $this->single_row( $page, $level ); + + $count++; + + $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page ); + } + + unset( $children_pages[$parent] ); //required in order to keep track of orphans + } + + function single_row( $a_post, $level = 0 ) { + global $post, $current_screen, $mode; + static $rowclass; + + $global_post = $post; + $post = $a_post; + setup_postdata( $post ); + + $rowclass = 'alternate' == $rowclass ? '' : 'alternate'; + $post_owner = ( get_current_user_id() == $post->post_author ? 'self' : 'other' ); + $edit_link = get_edit_post_link( $post->ID ); + $title = _draft_or_post_title(); + $post_type_object = get_post_type_object( $post->post_type ); + $can_edit_post = current_user_can( $post_type_object->cap->edit_post, $post->ID ); + $post_format = get_post_format( $post->ID ); + $post_format_class = ( $post_format && !is_wp_error($post_format) ) ? 'format-' . sanitize_html_class( $post_format ) : 'format-default'; + ?> + post_status . ' ' . $post_format_class); ?> iedit' valign="top"> + get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $class = "class=\"$column_name column-$column_name\""; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = "$class$style"; + + switch ( $column_name ) { + + case 'cb': + ?> + + hierarchical_display ) { + $attributes = 'class="post-title page-title column-title"' . $style; + + if ( 0 == $level && (int) $post->post_parent > 0 ) { + //sent level 0 by accident, by default, or because we don't know the actual level + $find_main_page = (int) $post->post_parent; + while ( $find_main_page > 0 ) { + $parent = get_page( $find_main_page ); + + if ( is_null( $parent ) ) + break; + + $level++; + $find_main_page = (int) $parent->post_parent; + + if ( !isset( $parent_name ) ) + $parent_name = apply_filters( 'the_title', $parent->post_title, $parent->ID ); + } + } + + $pad = str_repeat( '— ', $level ); +?> + '; + break; + + case 'date': + if ( '0000-00-00 00:00:00' == $post->post_date && 'date' == $column_name ) { + $t_time = $h_time = __( 'Unpublished' ); + $time_diff = 0; + } else { + $t_time = get_the_time( __( 'Y/m/d g:i:s A' ) ); + $m_time = $post->post_date; + $time = get_post_time( 'G', true, $post ); + + $time_diff = time() - $time; + + if ( $time_diff > 0 && $time_diff < 24*60*60 ) + $h_time = sprintf( __( '%s ago' ), human_time_diff( $time ) ); + else + $h_time = mysql2date( __( 'Y/m/d' ), $m_time ); + } + + echo ''; + break; + + case 'categories': + ?> + + + + + + + + + + + + post_type ); + $post_type_object = get_post_type_object( $screen->post_type ); + + $taxonomy_names = get_object_taxonomies( $screen->post_type ); + $hierarchical_taxonomies = array(); + $flat_taxonomies = array(); + foreach ( $taxonomy_names as $taxonomy_name ) { + $taxonomy = get_taxonomy( $taxonomy_name ); + + if ( !$taxonomy->show_ui ) + continue; + + if ( $taxonomy->hierarchical ) + $hierarchical_taxonomies[] = $taxonomy; + else + $flat_taxonomies[] = $taxonomy; + } + + $m = ( isset( $mode ) && 'excerpt' == $mode ) ? 'excerpt' : 'list'; + $can_publish = current_user_can( $post_type_object->cap->publish_posts ); + $core_columns = array( 'cb' => true, 'date' => true, 'title' => true, 'categories' => true, 'tags' => true, 'comments' => true, 'author' => true ); + + ?> + +
'; + $this->no_items(); + echo '
'; + echo $this->column_cb( $item ); + echo '"; + echo call_user_func( array( &$this, 'column_' . $column_name ), $item ); + echo ""; + echo $this->column_default( $item, $column_name ); + echo "
ID ) ) { ?>>ID, array( 80, 60 ), true ) ) { + if ( $this->is_trash ) { + echo $thumb; + } else { +?> + + + + + + >is_trash ) echo $att_title; else { ?> +

+ID ), $matches ) ) + echo esc_html( strtoupper( $matches[1] ) ); + else + echo strtoupper( str_replace( 'image/', '', get_post_mime_type() ) ); +?> +

+row_actions( $this->_get_row_actions( $post, $att_title ) ); +?> +
>>slug'> " . esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'post_tag', 'display' ) ) . ""; + echo join( ', ', $out ); + } else { + _e( 'No Tags' ); + } +?> + >post_excerpt : ''; ?>>> + , + + >
+
> +
+ID ); + + $this->comments_bubble( $post->ID, $pending_comments ); +?> +
+
> + +
+ + + +
$checkbox$theme_name"; + echo $this->row_actions( $actions, true ); + echo " +
$description
+
"; + + $theme_meta = array(); + + if ( !empty( $theme['Version'] ) ) + $theme_meta[] = sprintf( __( 'Version %s' ), $theme['Version'] ); + + if ( !empty( $theme['Author'] ) ) + $theme_meta[] = sprintf( __( 'By %s' ), $theme['Author'] ); + + if ( !empty( $theme['Theme URI'] ) ) + $theme_meta[] = '' . __( 'Visit Theme Site' ) . ''; + + $theme_meta = apply_filters( 'theme_row_meta', $theme_meta, $theme_key, $theme, $status ); + echo implode( ' | ', $theme_meta ); + + echo "
"; + do_action( 'manage_themes_custom_column', $column_name, $theme_key, $theme ); + echo "
+ + "; ?> + user_login ); ?>user_login, $super_admins ) ) + echo ' - ' . __( 'Super Admin' ); + ?> +
+ ' . __( 'Edit' ) . ''; + + if ( current_user_can( 'delete_user', $user->ID) && ! in_array( $user->user_login, $super_admins ) ) { + $actions['delete'] = '' . __( 'Delete' ) . ''; + } + + $actions = apply_filters( 'ms_user_row_actions', $actions, $user ); + echo $this->row_actions( $actions ); + ?> +
$user->user_email" . mysql2date( $date, $user->user_registered ) . ""; + if ( is_array( $blogs ) ) { + foreach ( (array) $blogs as $key => $val ) { + if ( !can_edit_network( $val->site_id ) ) + continue; + + $path = ( $val->path == '/' ) ? '' : $val->path; + echo ''; + echo '' . str_replace( '.' . $current_site->domain, '', $val->domain . $path ) . ''; + echo ' '; + $actions = array(); + $actions['edit'] = '' . __( 'Edit' ) . ''; + + $class = ''; + if ( get_blog_status( $val->userblog_id, 'spam' ) == 1 ) + $class .= 'site-spammed '; + if ( get_blog_status( $val->userblog_id, 'mature' ) == 1 ) + $class .= 'site-mature '; + if ( get_blog_status( $val->userblog_id, 'deleted' ) == 1 ) + $class .= 'site-deleted '; + if ( get_blog_status( $val->userblog_id, 'archived' ) == 1 ) + $class .= 'site-archived '; + + $actions['view'] = '' . __( 'View' ) . ''; + + $actions = apply_filters('ms_user_list_site_actions', $actions, $val->userblog_id); + + $i=0; + $action_count = count( $actions ); + foreach ( $actions as $action => $link ) { + ++$i; + ( $i == $action_count ) ? $sep = '' : $sep = ' | '; + echo "$link$sep"; + } + echo '
'; + } + } + ?> +
> + + >> +
+
+ +
<?php _e( '5 stars' ) ?>
+
<?php _e( '4 stars' ) ?>
+
<?php _e( '3 stars' ) ?>
+
<?php _e( '2 stars' ) ?>
+
<?php _e( '1 star' ) ?>
+
+
>
$checkbox$plugin_name"; + echo $this->row_actions( $actions, true ); + echo " +
$description
+
"; + + $plugin_meta = array(); + if ( !empty( $plugin_data['Version'] ) ) + $plugin_meta[] = sprintf( __( 'Version %s' ), $plugin_data['Version'] ); + if ( !empty( $plugin_data['Author'] ) ) { + $author = $plugin_data['Author']; + if ( !empty( $plugin_data['AuthorURI'] ) ) + $author = '' . $plugin_data['Author'] . ''; + $plugin_meta[] = sprintf( __( 'By %s' ), $author ); + } + if ( ! empty( $plugin_data['PluginURI'] ) ) + $plugin_meta[] = '' . __( 'Visit plugin site' ) . ''; + + $plugin_meta = apply_filters( 'plugin_row_meta', $plugin_meta, $plugin_file, $plugin_data, $status ); + echo implode( ' | ', $plugin_meta ); + + echo "
"; + do_action( 'manage_plugins_custom_column', $column_name, $plugin_file, $plugin_data ); + echo "
>post_status != 'trash' ) { ?>labels->parent_item_colon . ' ' . esc_html( $parent_name ) : ''; ?> + + >post_status != 'trash' ) { ?> +post_status ) { + $actions['edit'] = '' . __( 'Edit' ) . ''; + $actions['inline hide-if-no-js'] = '' . __( 'Quick Edit' ) . ''; + } + if ( current_user_can( $post_type_object->cap->delete_post, $post->ID ) ) { + if ( 'trash' == $post->post_status ) + $actions['untrash'] = "ID ) ), 'untrash-' . $post->post_type . '_' . $post->ID ) . "'>" . __( 'Restore' ) . ""; + elseif ( EMPTY_TRASH_DAYS ) + $actions['trash'] = "" . __( 'Trash' ) . ""; + if ( 'trash' == $post->post_status || !EMPTY_TRASH_DAYS ) + $actions['delete'] = "" . __( 'Delete Permanently' ) . ""; + } + if ( $post_type_object->public ) { + if ( in_array( $post->post_status, array( 'pending', 'draft' ) ) ) { + if ( $can_edit_post ) + $actions['view'] = '' . __( 'Preview' ) . ''; + } elseif ( 'trash' != $post->post_status ) { + $actions['view'] = '' . __( 'View' ) . ''; + } + } + + $actions = apply_filters( is_post_type_hierarchical( $post->post_type ) ? 'page_row_actions' : 'post_row_actions', $actions, $post ); + echo $this->row_actions( $actions ); + + get_inline_data( $post ); + echo ''; + if ( 'excerpt' == $mode ) + echo apply_filters( 'post_date_column_time', $t_time, $post, $column_name, $mode ); + else + echo '' . apply_filters( 'post_date_column_time', $h_time, $post, $column_name, $mode ) . ''; + echo '
'; + if ( 'publish' == $post->post_status ) { + _e( 'Published' ); + } elseif ( 'future' == $post->post_status ) { + if ( $time_diff > 0 ) + echo '' . __( 'Missed schedule' ) . ''; + else + _e( 'Scheduled' ); + } else { + _e( 'Last Modified' ); + } + echo '
>%s', + esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'category_name' => $c->slug ), 'edit.php' ) ), + esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'category', 'display' ) ) + ); + } + echo join( ', ', $out ); + } else { + _e( 'Uncategorized' ); + } + ?>>ID ); + if ( !empty( $tags ) ) { + $out = array(); + foreach ( $tags as $c ) { + $out[] = sprintf( '%s', + esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'tag' => $c->slug ), 'edit.php' ) ), + esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'tag', 'display' ) ) + ); + } + echo join( ', ', $out ); + } else { + _e( 'No Tags' ); + } + ?>>
+ comment_pending_count[$post->ID] ) ? $this->comment_pending_count[$post->ID] : 0; + + $this->comments_bubble( $post->ID, $pending_comments ); + ?> +
>%s', + esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'author' => get_the_author_meta( 'ID' ) ), 'edit.php' )), + get_the_author() + ); + ?>>post_type ) ) + do_action( 'manage_pages_custom_column', $column_name, $post->ID ); + else + do_action( 'manage_posts_custom_column', $column_name, $post->ID ); + do_action( "manage_{$post->post_type}_posts_custom_column", $column_name, $post->ID ); + ?>
+ + + post_type "; + echo $bulk ? "bulk-edit-row bulk-edit-row-$hclass bulk-edit-$screen->post_type" : "quick-edit-row quick-edit-row-$hclass inline-edit-$screen->post_type"; + ?>" style="display: none"> + +
+ +
+

+ post_type, 'title' ) ) : + if ( $bulk ) : ?> +
+
+
+ + + + + + + + + + + +
+ +
+
+ post_type, 'author' ) ) : + $authors_dropdown = ''; + + if ( is_super_admin() || current_user_can( $post_type_object->cap->edit_others_posts ) ) : + $users_opt = array( + 'hide_if_only_one_author' => false, + 'who' => 'authors', + 'name' => 'post_author', + 'class'=> 'authors', + 'multi' => 1, + 'echo' => 0 + ); + if ( $bulk ) + $users_opt['show_option_none'] = __( '— No Change —' ); + + if ( $authors = wp_dropdown_users( $users_opt ) ) : + $authors_dropdown = ''; + endif; + endif; // authors + ?> + + + +
+ + + + + + +
+ + + +
+ + + +
+ + + + labels->name ) ?> + + + + +
    + $taxonomy->name ) ) ?> +
+ + + +
+ + + +
+ + post_type, 'author' ) && $bulk ) + echo $authors_dropdown; + ?> + + hierarchical ) : ?> + + + + post_type, 'page-attributes' ) ) : + if ( !$bulk ) : ?> + + + + + + + + hierarchical ?> + + + + + + + + + + + + post_type, 'comments' ) || post_type_supports( $screen->post_type, 'trackbacks' ) ) : + if ( $bulk ) : ?> + +
+ post_type, 'comments' ) ) : ?> + + post_type, 'trackbacks' ) ) : ?> + + +
+ + + +
+ post_type, 'comments' ) ) : ?> + + post_type, 'trackbacks' ) ) : ?> + + +
+ + + +
+ + + post_type && $can_publish && current_user_can( $post_type_object->cap->edit_others_posts ) ) : ?> + + + + + + + + + + + + + +
+ +
+ + get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + if ( isset( $core_columns[$column_name] ) ) + continue; + do_action( $bulk ? 'bulk_edit_custom_box' : 'quick_edit_custom_box', $column_name, $screen->post_type ); + } + ?> +

+ + + + + 's' ) ); + } ?> + + + +
+

+
+ diff --git a/src/wp-admin/includes/class-wp-terms-list-table.php b/src/wp-admin/includes/class-wp-terms-list-table.php new file mode 100644 index 0000000..7778d88 --- /dev/null +++ b/src/wp-admin/includes/class-wp-terms-list-table.php @@ -0,0 +1,380 @@ + true ) ) ) ) + $post_type = 'post'; + + parent::__construct( array( + 'plural' => 'tags', + 'singular' => 'tag', + ) ); + } + + function ajax_user_can() { + global $tax; + + return current_user_can( $tax->cap->manage_terms ); + } + + function prepare_items() { + global $taxonomy; + + $tags_per_page = $this->get_items_per_page( 'edit_' . $taxonomy . '_per_page' ); + + if ( 'post_tag' == $taxonomy ) { + $tags_per_page = apply_filters( 'edit_tags_per_page', $tags_per_page ); + $tags_per_page = apply_filters( 'tagsperpage', $tags_per_page ); // Old filter + } elseif ( 'category' == $taxonomy ) { + $tags_per_page = apply_filters( 'edit_categories_per_page', $tags_per_page ); // Old filter + } + + $search = !empty( $_REQUEST['s'] ) ? trim( stripslashes( $_REQUEST['s'] ) ) : ''; + + $args = array( + 'search' => $search, + 'page' => $this->get_pagenum(), + 'number' => $tags_per_page, + ); + + if ( !empty( $_REQUEST['orderby'] ) ) + $args['orderby'] = trim( stripslashes( $_REQUEST['orderby'] ) ); + + if ( !empty( $_REQUEST['order'] ) ) + $args['order'] = trim( stripslashes( $_REQUEST['order'] ) ); + + $this->callback_args = $args; + + $this->set_pagination_args( array( + 'total_items' => wp_count_terms( $taxonomy, compact( 'search' ) ), + 'per_page' => $tags_per_page, + ) ); + } + + function has_items() { + // todo: populate $this->items in prepare_items() + return true; + } + + function get_bulk_actions() { + $actions = array(); + $actions['delete'] = __( 'Delete' ); + + return $actions; + } + + function current_action() { + if ( isset( $_REQUEST['action'] ) && isset( $_REQUEST['delete_tags'] ) && ( 'delete' == $_REQUEST['action'] || 'delete' == $_REQUEST['action2'] ) ) + return 'bulk-delete'; + + return parent::current_action(); + } + + function get_columns() { + global $taxonomy, $typenow; + + $columns = array( + 'cb' => '', + 'name' => _x( 'Name', 'term name' ), + 'description' => __( 'Description' ), + 'slug' => __( 'Slug' ), + ); + + if ( 'link_category' == $taxonomy ) { + $columns['links'] = __( 'Links' ); + } else { + $post_type = empty( $typenow ) ? 'post' : $typenow; + $post_type_object = get_post_type_object( $post_type ); + $columns['posts'] = $post_type_object ? $post_type_object->labels->name : __( 'Posts' ); + } + + return $columns; + } + + function get_sortable_columns() { + return array( + 'name' => 'name', + 'description' => 'description', + 'slug' => 'slug', + 'posts' => 'count', + 'links' => 'count' + ); + } + + function display_rows_or_placeholder() { + global $taxonomy; + + $args = wp_parse_args( $this->callback_args, array( + 'page' => 1, + 'number' => 20, + 'search' => '', + 'hide_empty' => 0 + ) ); + + extract( $args, EXTR_SKIP ); + + $args['offset'] = $offset = ( $page - 1 ) * $number; + + // convert it to table rows + $out = ''; + $count = 0; + + $terms = array(); + + if ( is_taxonomy_hierarchical( $taxonomy ) && !isset( $orderby ) ) { + // We'll need the full set of terms then. + $args['number'] = $args['offset'] = 0; + + $terms = get_terms( $taxonomy, $args ); + if ( !empty( $search ) ) // Ignore children on searches. + $children = array(); + else + $children = _get_term_hierarchy( $taxonomy ); + + // Some funky recursion to get the job done( Paging & parents mainly ) is contained within, Skip it for non-hierarchical taxonomies for performance sake + $out .= $this->_rows( $taxonomy, $terms, $children, $offset, $number, $count ); + } else { + $terms = get_terms( $taxonomy, $args ); + foreach ( $terms as $term ) + $out .= $this->single_row( $term, 0, $taxonomy ); + $count = $number; // Only displaying a single page. + } + + if ( empty( $terms ) ) { + list( $columns, $hidden ) = $this->get_column_info(); + echo ''; + $this->no_items(); + echo ''; + } else { + echo $out; + } + } + + function _rows( $taxonomy, $terms, &$children, $start = 0, $per_page = 20, &$count, $parent = 0, $level = 0 ) { + + $end = $start + $per_page; + + $output = ''; + foreach ( $terms as $key => $term ) { + + if ( $count >= $end ) + break; + + if ( $term->parent != $parent && empty( $_REQUEST['s'] ) ) + continue; + + // If the page starts in a subtree, print the parents. + if ( $count == $start && $term->parent > 0 && empty( $_REQUEST['s'] ) ) { + $my_parents = $parent_ids = array(); + $p = $term->parent; + while ( $p ) { + $my_parent = get_term( $p, $taxonomy ); + $my_parents[] = $my_parent; + $p = $my_parent->parent; + if ( in_array( $p, $parent_ids ) ) // Prevent parent loops. + break; + $parent_ids[] = $p; + } + unset( $parent_ids ); + + $num_parents = count( $my_parents ); + while ( $my_parent = array_pop( $my_parents ) ) { + $output .= "\t" . $this->single_row( $my_parent, $level - $num_parents, $taxonomy ); + $num_parents--; + } + } + + if ( $count >= $start ) + $output .= "\t" . $this->single_row( $term, $level, $taxonomy ); + + ++$count; + + unset( $terms[$key] ); + + if ( isset( $children[$term->term_id] ) && empty( $_REQUEST['s'] ) ) + $output .= $this->_rows( $taxonomy, $terms, $children, $start, $per_page, $count, $term->term_id, $level + 1 ); + } + + return $output; + } + + function single_row( $tag, $level = 0 ) { + static $row_class = ''; + $row_class = ( $row_class == '' ? ' class="alternate"' : '' ); + + $this->level = $level; + + echo ''; + echo $this->single_row_columns( $tag ); + echo ''; + } + + function column_cb( $tag ) { + global $taxonomy, $tax; + + $default_term = get_option( 'default_' . $taxonomy ); + + if ( current_user_can( $tax->cap->delete_terms ) && $tag->term_id != $default_term ) + return ''; + else + return ' '; + } + + function column_name( $tag ) { + global $taxonomy, $tax, $post_type; + + $default_term = get_option( 'default_' . $taxonomy ); + + $pad = str_repeat( '— ', max( 0, $this->level ) ); + $name = apply_filters( 'term_name', $pad . ' ' . $tag->name, $tag ); + $qe_data = get_term( $tag->term_id, $taxonomy, OBJECT, 'edit' ); + $edit_link = esc_url( get_edit_term_link( $tag->term_id, $taxonomy, $post_type ) ); + + $out = '' . $name . '
'; + + $actions = array(); + if ( current_user_can( $tax->cap->edit_terms ) ) { + $actions['edit'] = '' . __( 'Edit' ) . ''; + $actions['inline hide-if-no-js'] = '' . __( 'Quick Edit' ) . ''; + } + if ( current_user_can( $tax->cap->delete_terms ) && $tag->term_id != $default_term ) + $actions['delete'] = "term_id ) . "'>" . __( 'Delete' ) . ""; + $actions['view'] = '' . __( 'View' ) . ''; + + $actions = apply_filters( 'tag_row_actions', $actions, $tag ); + $actions = apply_filters( "{$taxonomy}_row_actions", $actions, $tag ); + + $out .= $this->row_actions( $actions ); + $out .= ''; + + return $out; + } + + function column_description( $tag ) { + return $tag->description; + } + + function column_slug( $tag ) { + return apply_filters( 'editable_slug', $tag->slug ); + } + + function column_posts( $tag ) { + global $taxonomy, $post_type; + + $count = number_format_i18n( $tag->count ); + + $tax = get_taxonomy( $taxonomy ); + + if ( ! $tax->public ) + return $count; + + if ( $tax->query_var ) { + $args = array( $tax->query_var => $tag->slug ); + } else { + $args = array( 'taxonomy' => $tax->name, 'term' => $tag->slug ); + } + + $args['post_type'] = $post_type; + + return "$count"; + } + + function column_links( $tag ) { + $count = number_format_i18n( $tag->count ); + if ( $count ) + $count = "$count"; + return $count; + } + + function column_default( $tag, $column_name ) { + $screen = get_current_screen(); + + return apply_filters( "manage_{$screen->taxonomy}_custom_column", '', $column_name, $tag->term_id ); + } + + /** + * Outputs the hidden row displayed when inline editing + * + * @since 3.1.0 + */ + function inline_edit() { + global $tax; + + if ( ! current_user_can( $tax->cap->edit_terms ) ) + return; +?> + +
+ +
+ diff --git a/src/wp-admin/includes/class-wp-theme-install-list-table.php b/src/wp-admin/includes/class-wp-theme-install-list-table.php new file mode 100644 index 0000000..7e44267 --- /dev/null +++ b/src/wp-admin/includes/class-wp-theme-install-list-table.php @@ -0,0 +1,185 @@ +get_pagenum(); + + $per_page = 30; + + // These are the tabs which are shown on the page, + $tabs = array(); + $tabs['dashboard'] = __( 'Search' ); + if ( 'search' == $tab ) + $tabs['search'] = __( 'Search Results' ); + $tabs['upload'] = __( 'Upload' ); + $tabs['featured'] = _x( 'Featured','Theme Installer' ); + //$tabs['popular'] = _x( 'Popular','Theme Installer' ); + $tabs['new'] = _x( 'Newest','Theme Installer' ); + $tabs['updated'] = _x( 'Recently Updated','Theme Installer' ); + + $nonmenu_tabs = array( 'theme-information' ); // Valid actions to perform which do not have a Menu item. + + $tabs = apply_filters( 'install_themes_tabs', $tabs ); + $nonmenu_tabs = apply_filters( 'install_themes_nonmenu_tabs', $nonmenu_tabs ); + + // If a non-valid menu tab has been selected, And its not a non-menu action. + if ( empty( $tab ) || ( ! isset( $tabs[ $tab ] ) && ! in_array( $tab, (array) $nonmenu_tabs ) ) ) + $tab = key( $tabs ); + + $args = array( 'page' => $paged, 'per_page' => $per_page, 'fields' => $theme_field_defaults ); + + switch ( $tab ) { + case 'search': + $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : ''; + $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : ''; + + switch ( $type ) { + case 'tag': + $terms = explode( ',', $term ); + $terms = array_map( 'trim', $terms ); + $terms = array_map( 'sanitize_title_with_dashes', $terms ); + $args['tag'] = $terms; + break; + case 'term': + $args['search'] = $term; + break; + case 'author': + $args['author'] = $term; + break; + } + + if ( !empty( $_POST['features'] ) ) { + $terms = $_POST['features']; + $terms = array_map( 'trim', $terms ); + $terms = array_map( 'sanitize_title_with_dashes', $terms ); + $args['tag'] = $terms; + $_REQUEST['s'] = implode( ',', $terms ); + $_REQUEST['type'] = 'tag'; + } + + add_action( 'install_themes_table_header', 'install_theme_search_form' ); + break; + + case 'featured': + //case 'popular': + case 'new': + case 'updated': + $args['browse'] = $tab; + break; + + default: + $args = false; + } + + if ( !$args ) + return; + + $api = themes_api( 'query_themes', $args ); + + if ( is_wp_error( $api ) ) + wp_die( $api->get_error_message() . '

' . __( 'Try again' ) . '' ); + + $this->items = $api->themes; + + $this->set_pagination_args( array( + 'total_items' => $api->info['results'], + 'per_page' => $per_page, + ) ); + } + + function no_items() { + _e( 'No themes match your request.' ); + } + + function get_views() { + global $tabs, $tab; + + $display_tabs = array(); + foreach ( (array) $tabs as $action => $text ) { + $class = ( $action == $tab ) ? ' class="current"' : ''; + $href = self_admin_url('theme-install.php?tab=' . $action); + $display_tabs['theme-install-'.$action] = "$text"; + } + + return $display_tabs; + } + + function get_columns() { + return array(); + } + + function display() { + + // wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' ); +?> +

+
+ +
+ pagination( 'top' ); ?> + +
+
+ + + + display_rows_or_placeholder(); ?> + +
+ +
+ pagination( 'bottom' ); ?> + +
+
+items; + + $rows = ceil( count( $themes ) / 3 ); + $table = array(); + $theme_keys = array_keys( $themes ); + for ( $row = 1; $row <= $rows; $row++ ) + for ( $col = 1; $col <= 3; $col++ ) + $table[$row][$col] = array_shift( $theme_keys ); + + foreach ( $table as $row => $cols ) { + echo "\t\n"; + foreach ( $cols as $col => $theme_index ) { + $class = array( 'available-theme' ); + if ( $row == 1 ) $class[] = 'top'; + if ( $col == 1 ) $class[] = 'left'; + if ( $row == $rows ) $class[] = 'bottom'; + if ( $col == 3 ) $class[] = 'right'; + ?> + + \n"; + } // end foreach $table + } +} + +?> diff --git a/src/wp-admin/includes/class-wp-themes-list-table.php b/src/wp-admin/includes/class-wp-themes-list-table.php new file mode 100644 index 0000000..5cb7648 --- /dev/null +++ b/src/wp-admin/includes/class-wp-themes-list-table.php @@ -0,0 +1,240 @@ +search = array_merge( $this->search, array_filter( array_map( 'trim', explode( ',', $search ) ) ) ); + $this->search = array_unique( $this->search ); + } + + if ( !empty( $_REQUEST['features'] ) ) { + $this->features = $_REQUEST['features']; + $this->features = array_map( 'trim', $this->features ); + $this->features = array_map( 'sanitize_title_with_dashes', $this->features ); + $this->features = array_unique( $this->features ); + } + + if ( $this->search || $this->features ) { + foreach ( $themes as $key => $theme ) { + if ( !$this->search_theme( $theme ) ) + unset( $themes[ $key ] ); + } + } + + unset( $themes[$ct->name] ); + uksort( $themes, "strnatcasecmp" ); + + $per_page = 15; + $page = $this->get_pagenum(); + + $start = ( $page - 1 ) * $per_page; + + $this->items = array_slice( $themes, $start, $per_page ); + + $this->set_pagination_args( array( + 'total_items' => count( $themes ), + 'per_page' => $per_page, + ) ); + } + + function no_items() { + if ( $this->search || $this->features ) { + _e( 'No items found.' ); + return; + } + + if ( is_multisite() ) { + if ( current_user_can( 'install_themes' ) && current_user_can( 'manage_network_themes' ) ) { + printf( __( 'You only have one theme enabled for this site right now. Visit the Network Admin to enable or install more themes.' ), network_admin_url( 'site-themes.php?id=' . $GLOBALS['blog_id'] ), network_admin_url( 'theme-install.php' ) ); + + return; + } elseif ( current_user_can( 'manage_network_themes' ) ) { + printf( __( 'You only have one theme enabled for this site right now. Visit the Network Admin to enable more themes.' ), network_admin_url( 'site-themes.php?id=' . $GLOBALS['blog_id'] ) ); + + return; + } + // else, fallthrough. install_themes doesn't help if you can't enable it. + } else { + if ( current_user_can( 'install_themes' ) ) { + printf( __( 'You only have one theme installed right now. Live a little! You can choose from over 1,000 free themes in the WordPress.org Theme Directory at any time: just click on the Install Themes tab above.' ), admin_url( 'theme-install.php' ) ); + + return; + } + } + // Fallthrough. + printf( __( 'Only the current theme is available to you. Contact the %s administrator for information about accessing additional themes.' ), get_site_option( 'site_name' ) ); + } + + function tablenav( $which = 'top' ) { + if ( $this->get_pagination_arg( 'total_pages' ) <= 1 ) + return; + ?> +
+ pagination( $which ); ?> + +
+
+ + tablenav( 'top' ); ?> + + + + display_rows_or_placeholder(); ?> + +
+ + tablenav( 'bottom' ); ?> +items; + $theme_names = array_keys( $themes ); + natcasesort( $theme_names ); + + $table = array(); + $rows = ceil( count( $theme_names ) / 3 ); + for ( $row = 1; $row <= $rows; $row++ ) + for ( $col = 1; $col <= 3; $col++ ) + $table[$row][$col] = array_shift( $theme_names ); + + foreach ( $table as $row => $cols ) { +?> + + $theme_name ) { + $class = array( 'available-theme' ); + if ( $row == 1 ) $class[] = 'top'; + if ( $col == 1 ) $class[] = 'left'; + if ( $row == $rows ) $class[] = 'bottom'; + if ( $col == 3 ) $class[] = 'right'; +?> + + 1, 'template' => $template, 'stylesheet' => $stylesheet, 'preview_iframe' => true, 'TB_iframe' => 'true' ), $preview_link ) ); + $preview_text = esc_attr( sprintf( __( 'Preview of “%s”' ), $title ) ); + $tags = $themes[$theme_name]['Tags']; + $thickbox_class = 'thickbox thickbox-preview'; + $activate_link = wp_nonce_url( "themes.php?action=activate&template=".urlencode( $template )."&stylesheet=".urlencode( $stylesheet ), 'switch-theme_' . $template ); + $activate_text = esc_attr( sprintf( __( 'Activate “%s”' ), $title ) ); + $actions = array(); + $actions[] = '' . __( 'Activate' ) . ''; + $actions[] = '' . __( 'Preview' ) . ''; + if ( ! is_multisite() && current_user_can( 'delete_themes' ) ) + $actions[] = '' . __( 'Delete' ) . ''; + $actions = apply_filters( 'theme_action_links', $actions, $themes[$theme_name] ); + + $actions = implode ( ' | ', $actions ); +?> + + + + + +

+

+ + +

%2$s. The stylesheet files are located in %3$s. %4$s uses templates from %5$s. Changes made to the templates will affect both themes.' ), $title, str_replace( WP_CONTENT_DIR, '', $template_dir ), str_replace( WP_CONTENT_DIR, '', $stylesheet_dir ), $title, $parent_theme ); ?>

+ +

%2$s.' ), $title, str_replace( WP_CONTENT_DIR, '', $template_dir ), str_replace( WP_CONTENT_DIR, '', $stylesheet_dir ) ); ?>

+ + +

+ + + + + + +search ) > 0 ) { + foreach ( $this->search as $word ) { + $matched = 0; + + // In a tag? + if ( in_array( $word, array_map( 'sanitize_title_with_dashes', $theme['Tags'] ) ) ) + $matched = 1; + + // In one of the fields? + foreach ( array( 'Name', 'Title', 'Description', 'Author', 'Template', 'Stylesheet' ) AS $field ) { + if ( stripos( $theme[$field], $word ) !== false ) + $matched++; + } + + if ( $matched == 0 ) + return false; + } + } + + // Now search the features + if ( count( $this->features ) > 0 ) { + foreach ( $this->features as $word ) { + // In a tag? + if ( !in_array( $word, array_map( 'sanitize_title_with_dashes', $theme['Tags'] ) ) ) + return false; + } + } + + // Only get here if each word exists in the tags or one of the fields + return true; + } +} + +?> diff --git a/src/wp-admin/includes/class-wp-upgrader.php b/src/wp-admin/includes/class-wp-upgrader.php new file mode 100644 index 0000000..1cf4c41 --- /dev/null +++ b/src/wp-admin/includes/class-wp-upgrader.php @@ -0,0 +1,1457 @@ +skin = new WP_Upgrader_Skin(); + else + $this->skin = $skin; + } + + function init() { + $this->skin->set_upgrader($this); + $this->generic_strings(); + } + + function generic_strings() { + $this->strings['bad_request'] = __('Invalid Data provided.'); + $this->strings['fs_unavailable'] = __('Could not access filesystem.'); + $this->strings['fs_error'] = __('Filesystem error.'); + $this->strings['fs_no_root_dir'] = __('Unable to locate WordPress Root directory.'); + $this->strings['fs_no_content_dir'] = __('Unable to locate WordPress Content directory (wp-content).'); + $this->strings['fs_no_plugins_dir'] = __('Unable to locate WordPress Plugin directory.'); + $this->strings['fs_no_themes_dir'] = __('Unable to locate WordPress Theme directory.'); + /* translators: %s: directory name */ + $this->strings['fs_no_folder'] = __('Unable to locate needed folder (%s).'); + + $this->strings['download_failed'] = __('Download failed.'); + $this->strings['installing_package'] = __('Installing the latest version…'); + $this->strings['folder_exists'] = __('Destination folder already exists.'); + $this->strings['mkdir_failed'] = __('Could not create directory.'); + $this->strings['bad_package'] = __('Incompatible Archive.'); + + $this->strings['maintenance_start'] = __('Enabling Maintenance mode…'); + $this->strings['maintenance_end'] = __('Disabling Maintenance mode…'); + } + + function fs_connect( $directories = array() ) { + global $wp_filesystem; + + if ( false === ($credentials = $this->skin->request_filesystem_credentials()) ) + return false; + + if ( ! WP_Filesystem($credentials) ) { + $error = true; + if ( is_object($wp_filesystem) && $wp_filesystem->errors->get_error_code() ) + $error = $wp_filesystem->errors; + $this->skin->request_filesystem_credentials($error); //Failed to connect, Error and request again + return false; + } + + if ( ! is_object($wp_filesystem) ) + return new WP_Error('fs_unavailable', $this->strings['fs_unavailable'] ); + + if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) + return new WP_Error('fs_error', $this->strings['fs_error'], $wp_filesystem->errors); + + foreach ( (array)$directories as $dir ) { + switch ( $dir ) { + case ABSPATH: + if ( ! $wp_filesystem->abspath() ) + return new WP_Error('fs_no_root_dir', $this->strings['fs_no_root_dir']); + break; + case WP_CONTENT_DIR: + if ( ! $wp_filesystem->wp_content_dir() ) + return new WP_Error('fs_no_content_dir', $this->strings['fs_no_content_dir']); + break; + case WP_PLUGIN_DIR: + if ( ! $wp_filesystem->wp_plugins_dir() ) + return new WP_Error('fs_no_plugins_dir', $this->strings['fs_no_plugins_dir']); + break; + case WP_CONTENT_DIR . '/themes': + if ( ! $wp_filesystem->find_folder(WP_CONTENT_DIR . '/themes') ) + return new WP_Error('fs_no_themes_dir', $this->strings['fs_no_themes_dir']); + break; + default: + if ( ! $wp_filesystem->find_folder($dir) ) + return new WP_Error('fs_no_folder', sprintf($this->strings['fs_no_folder'], $dir)); + break; + } + } + return true; + } //end fs_connect(); + + function download_package($package) { + + if ( ! preg_match('!^(http|https|ftp)://!i', $package) && file_exists($package) ) //Local file or remote? + return $package; //must be a local file.. + + if ( empty($package) ) + return new WP_Error('no_package', $this->strings['no_package']); + + $this->skin->feedback('downloading_package', $package); + + $download_file = download_url($package); + + if ( is_wp_error($download_file) ) + return new WP_Error('download_failed', $this->strings['download_failed'], $download_file->get_error_message()); + + return $download_file; + } + + function unpack_package($package, $delete_package = true) { + global $wp_filesystem; + + $this->skin->feedback('unpack_package'); + + $upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade/'; + + //Clean up contents of upgrade directory beforehand. + $upgrade_files = $wp_filesystem->dirlist($upgrade_folder); + if ( !empty($upgrade_files) ) { + foreach ( $upgrade_files as $file ) + $wp_filesystem->delete($upgrade_folder . $file['name'], true); + } + + //We need a working directory + $working_dir = $upgrade_folder . basename($package, '.zip'); + + // Clean up working directory + if ( $wp_filesystem->is_dir($working_dir) ) + $wp_filesystem->delete($working_dir, true); + + // Unzip package to working directory + $result = unzip_file($package, $working_dir); //TODO optimizations, Copy when Move/Rename would suffice? + + // Once extracted, delete the package if required. + if ( $delete_package ) + unlink($package); + + if ( is_wp_error($result) ) { + $wp_filesystem->delete($working_dir, true); + return $result; + } + + return $working_dir; + } + + function install_package($args = array()) { + global $wp_filesystem; + $defaults = array( 'source' => '', 'destination' => '', //Please always pass these + 'clear_destination' => false, 'clear_working' => false, + 'hook_extra' => array()); + + $args = wp_parse_args($args, $defaults); + extract($args); + + @set_time_limit( 300 ); + + if ( empty($source) || empty($destination) ) + return new WP_Error('bad_request', $this->strings['bad_request']); + + $this->skin->feedback('installing_package'); + + $res = apply_filters('upgrader_pre_install', true, $hook_extra); + if ( is_wp_error($res) ) + return $res; + + //Retain the Original source and destinations + $remote_source = $source; + $local_destination = $destination; + + $source_files = array_keys( $wp_filesystem->dirlist($remote_source) ); + $remote_destination = $wp_filesystem->find_folder($local_destination); + + //Locate which directory to copy to the new folder, This is based on the actual folder holding the files. + if ( 1 == count($source_files) && $wp_filesystem->is_dir( trailingslashit($source) . $source_files[0] . '/') ) //Only one folder? Then we want its contents. + $source = trailingslashit($source) . trailingslashit($source_files[0]); + elseif ( count($source_files) == 0 ) + return new WP_Error('bad_package', $this->strings['bad_package']); //There are no files? + //else //Its only a single file, The upgrader will use the foldername of this file as the destination folder. foldername is based on zip filename. + + //Hook ability to change the source file location.. + $source = apply_filters('upgrader_source_selection', $source, $remote_source, $this); + if ( is_wp_error($source) ) + return $source; + + //Has the source location changed? If so, we need a new source_files list. + if ( $source !== $remote_source ) + $source_files = array_keys( $wp_filesystem->dirlist($source) ); + + //Protection against deleting files in any important base directories. + if ( in_array( $destination, array(ABSPATH, WP_CONTENT_DIR, WP_PLUGIN_DIR, WP_CONTENT_DIR . '/themes') ) ) { + $remote_destination = trailingslashit($remote_destination) . trailingslashit(basename($source)); + $destination = trailingslashit($destination) . trailingslashit(basename($source)); + } + + if ( $clear_destination ) { + //We're going to clear the destination if theres something there + $this->skin->feedback('remove_old'); + $removed = true; + if ( $wp_filesystem->exists($remote_destination) ) + $removed = $wp_filesystem->delete($remote_destination, true); + $removed = apply_filters('upgrader_clear_destination', $removed, $local_destination, $remote_destination, $hook_extra); + + if ( is_wp_error($removed) ) + return $removed; + else if ( ! $removed ) + return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']); + } elseif ( $wp_filesystem->exists($remote_destination) ) { + //If we're not clearing the destination folder and something exists there allready, Bail. + //But first check to see if there are actually any files in the folder. + $_files = $wp_filesystem->dirlist($remote_destination); + if ( ! empty($_files) ) { + $wp_filesystem->delete($remote_source, true); //Clear out the source files. + return new WP_Error('folder_exists', $this->strings['folder_exists'], $remote_destination ); + } + } + + //Create destination if needed + if ( !$wp_filesystem->exists($remote_destination) ) + if ( !$wp_filesystem->mkdir($remote_destination, FS_CHMOD_DIR) ) + return new WP_Error('mkdir_failed', $this->strings['mkdir_failed'], $remote_destination); + + // Copy new version of item into place. + $result = copy_dir($source, $remote_destination); + if ( is_wp_error($result) ) { + if ( $clear_working ) + $wp_filesystem->delete($remote_source, true); + return $result; + } + + //Clear the Working folder? + if ( $clear_working ) + $wp_filesystem->delete($remote_source, true); + + $destination_name = basename( str_replace($local_destination, '', $destination) ); + if ( '.' == $destination_name ) + $destination_name = ''; + + $this->result = compact('local_source', 'source', 'source_name', 'source_files', 'destination', 'destination_name', 'local_destination', 'remote_destination', 'clear_destination', 'delete_source_dir'); + + $res = apply_filters('upgrader_post_install', true, $hook_extra, $this->result); + if ( is_wp_error($res) ) { + $this->result = $res; + return $res; + } + + //Bombard the calling function will all the info which we've just used. + return $this->result; + } + + function run($options) { + + $defaults = array( 'package' => '', //Please always pass this. + 'destination' => '', //And this + 'clear_destination' => false, + 'clear_working' => true, + 'is_multi' => false, + 'hook_extra' => array() //Pass any extra $hook_extra args here, this will be passed to any hooked filters. + ); + + $options = wp_parse_args($options, $defaults); + extract($options); + + //Connect to the Filesystem first. + $res = $this->fs_connect( array(WP_CONTENT_DIR, $destination) ); + if ( ! $res ) //Mainly for non-connected filesystem. + return false; + + if ( is_wp_error($res) ) { + $this->skin->error($res); + return $res; + } + + if ( !$is_multi ) // call $this->header separately if running multiple times + $this->skin->header(); + + $this->skin->before(); + + //Download the package (Note, This just returns the filename of the file if the package is a local file) + $download = $this->download_package( $package ); + if ( is_wp_error($download) ) { + $this->skin->error($download); + $this->skin->after(); + return $download; + } + + $delete_package = ($download != $package); // Do not delete a "local" file + + //Unzip's the file into a temporary directory + $working_dir = $this->unpack_package( $download, $delete_package ); + if ( is_wp_error($working_dir) ) { + $this->skin->error($working_dir); + $this->skin->after(); + return $working_dir; + } + + //With the given options, this installs it to the destination directory. + $result = $this->install_package( array( + 'source' => $working_dir, + 'destination' => $destination, + 'clear_destination' => $clear_destination, + 'clear_working' => $clear_working, + 'hook_extra' => $hook_extra + ) ); + $this->skin->set_result($result); + if ( is_wp_error($result) ) { + $this->skin->error($result); + $this->skin->feedback('process_failed'); + } else { + //Install Suceeded + $this->skin->feedback('process_success'); + } + $this->skin->after(); + + if ( !$is_multi ) + $this->skin->footer(); + + return $result; + } + + function maintenance_mode($enable = false) { + global $wp_filesystem; + $file = $wp_filesystem->abspath() . '.maintenance'; + if ( $enable ) { + $this->skin->feedback('maintenance_start'); + // Create maintenance file to signal that we are upgrading + $maintenance_string = ''; + $wp_filesystem->delete($file); + $wp_filesystem->put_contents($file, $maintenance_string, FS_CHMOD_FILE); + } else if ( !$enable && $wp_filesystem->exists($file) ) { + $this->skin->feedback('maintenance_end'); + $wp_filesystem->delete($file); + } + } + +} + +/** + * Plugin Upgrader class for WordPress Plugins, It is designed to upgrade/install plugins from a local zip, remote zip URL, or uploaded zip file. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Plugin_Upgrader extends WP_Upgrader { + + var $result; + var $bulk = false; + var $show_before = ''; + + function upgrade_strings() { + $this->strings['up_to_date'] = __('The plugin is at the latest version.'); + $this->strings['no_package'] = __('Update package not available.'); + $this->strings['downloading_package'] = __('Downloading update from %s…'); + $this->strings['unpack_package'] = __('Unpacking the update…'); + $this->strings['deactivate_plugin'] = __('Deactivating the plugin…'); + $this->strings['remove_old'] = __('Removing the old version of the plugin…'); + $this->strings['remove_old_failed'] = __('Could not remove the old plugin.'); + $this->strings['process_failed'] = __('Plugin update failed.'); + $this->strings['process_success'] = __('Plugin updated successfully.'); + } + + function install_strings() { + $this->strings['no_package'] = __('Install package not available.'); + $this->strings['downloading_package'] = __('Downloading install package from %s…'); + $this->strings['unpack_package'] = __('Unpacking the package…'); + $this->strings['installing_package'] = __('Installing the plugin…'); + $this->strings['process_failed'] = __('Plugin install failed.'); + $this->strings['process_success'] = __('Plugin installed successfully.'); + } + + function install($package) { + + $this->init(); + $this->install_strings(); + + $this->run(array( + 'package' => $package, + 'destination' => WP_PLUGIN_DIR, + 'clear_destination' => false, //Do not overwrite files. + 'clear_working' => true, + 'hook_extra' => array() + )); + + // Force refresh of plugin update information + delete_site_transient('update_plugins'); + + } + + function upgrade($plugin) { + + $this->init(); + $this->upgrade_strings(); + + $current = get_site_transient( 'update_plugins' ); + if ( !isset( $current->response[ $plugin ] ) ) { + $this->skin->before(); + $this->skin->set_result(false); + $this->skin->error('up_to_date'); + $this->skin->after(); + return false; + } + + // Get the URL to the zip file + $r = $current->response[ $plugin ]; + + add_filter('upgrader_pre_install', array(&$this, 'deactivate_plugin_before_upgrade'), 10, 2); + add_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin'), 10, 4); + //'source_selection' => array(&$this, 'source_selection'), //theres a track ticket to move up the directory for zip's which are made a bit differently, useful for non-.org plugins. + + $this->run(array( + 'package' => $r->package, + 'destination' => WP_PLUGIN_DIR, + 'clear_destination' => true, + 'clear_working' => true, + 'hook_extra' => array( + 'plugin' => $plugin + ) + )); + + // Cleanup our hooks, incase something else does a upgrade on this connection. + remove_filter('upgrader_pre_install', array(&$this, 'deactivate_plugin_before_upgrade')); + remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin')); + + if ( ! $this->result || is_wp_error($this->result) ) + return $this->result; + + // Force refresh of plugin update information + delete_site_transient('update_plugins'); + } + + function bulk_upgrade($plugins) { + + $this->init(); + $this->bulk = true; + $this->upgrade_strings(); + + $current = get_site_transient( 'update_plugins' ); + + add_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin'), 10, 4); + + $this->skin->header(); + + // Connect to the Filesystem first. + $res = $this->fs_connect( array(WP_CONTENT_DIR, WP_PLUGIN_DIR) ); + if ( ! $res ) { + $this->skin->footer(); + return false; + } + + $this->skin->bulk_header(); + + // Only start maintenance mode if running in Multisite OR the plugin is in use + $maintenance = is_multisite(); // @TODO: This should only kick in for individual sites if at all possible. + foreach ( $plugins as $plugin ) + $maintenance = $maintenance || (is_plugin_active($plugin) && isset($current->response[ $plugin ]) ); // Only activate Maintenance mode if a plugin is active AND has an update available + if ( $maintenance ) + $this->maintenance_mode(true); + + $results = array(); + + $this->update_count = count($plugins); + $this->update_current = 0; + foreach ( $plugins as $plugin ) { + $this->update_current++; + $this->skin->plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin, false, true); + + if ( !isset( $current->response[ $plugin ] ) ) { + $this->skin->set_result(false); + $this->skin->before(); + $this->skin->error('up_to_date'); + $this->skin->after(); + $results[$plugin] = false; + continue; + } + + // Get the URL to the zip file + $r = $current->response[ $plugin ]; + + $this->skin->plugin_active = is_plugin_active($plugin); + + $result = $this->run(array( + 'package' => $r->package, + 'destination' => WP_PLUGIN_DIR, + 'clear_destination' => true, + 'clear_working' => true, + 'is_multi' => true, + 'hook_extra' => array( + 'plugin' => $plugin + ) + )); + + $results[$plugin] = $this->result; + + // Prevent credentials auth screen from displaying multiple times + if ( false === $result ) + break; + } //end foreach $plugins + + $this->maintenance_mode(false); + + $this->skin->bulk_footer(); + + $this->skin->footer(); + + // Cleanup our hooks, incase something else does a upgrade on this connection. + remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin')); + + // Force refresh of plugin update information + delete_site_transient('update_plugins'); + + return $results; + } + + //return plugin info. + function plugin_info() { + if ( ! is_array($this->result) ) + return false; + if ( empty($this->result['destination_name']) ) + return false; + + $plugin = get_plugins('/' . $this->result['destination_name']); //Ensure to pass with leading slash + if ( empty($plugin) ) + return false; + + $pluginfiles = array_keys($plugin); //Assume the requested plugin is the first in the list + + return $this->result['destination_name'] . '/' . $pluginfiles[0]; + } + + //Hooked to pre_install + function deactivate_plugin_before_upgrade($return, $plugin) { + + if ( is_wp_error($return) ) //Bypass. + return $return; + + $plugin = isset($plugin['plugin']) ? $plugin['plugin'] : ''; + if ( empty($plugin) ) + return new WP_Error('bad_request', $this->strings['bad_request']); + + if ( is_plugin_active($plugin) ) { + $this->skin->feedback('deactivate_plugin'); + //Deactivate the plugin silently, Prevent deactivation hooks from running. + deactivate_plugins($plugin, true); + } + } + + //Hooked to upgrade_clear_destination + function delete_old_plugin($removed, $local_destination, $remote_destination, $plugin) { + global $wp_filesystem; + + if ( is_wp_error($removed) ) + return $removed; //Pass errors through. + + $plugin = isset($plugin['plugin']) ? $plugin['plugin'] : ''; + if ( empty($plugin) ) + return new WP_Error('bad_request', $this->strings['bad_request']); + + $plugins_dir = $wp_filesystem->wp_plugins_dir(); + $this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin) ); + + if ( ! $wp_filesystem->exists($this_plugin_dir) ) //If its already vanished. + return $removed; + + // If plugin is in its own directory, recursively delete the directory. + if ( strpos($plugin, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory separator AND that its not the root plugin folder + $deleted = $wp_filesystem->delete($this_plugin_dir, true); + else + $deleted = $wp_filesystem->delete($plugins_dir . $plugin); + + if ( ! $deleted ) + return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']); + + return true; + } +} + +/** + * Theme Upgrader class for WordPress Themes, It is designed to upgrade/install themes from a local zip, remote zip URL, or uploaded zip file. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Theme_Upgrader extends WP_Upgrader { + + var $result; + + function upgrade_strings() { + $this->strings['up_to_date'] = __('The theme is at the latest version.'); + $this->strings['no_package'] = __('Update package not available.'); + $this->strings['downloading_package'] = __('Downloading update from %s…'); + $this->strings['unpack_package'] = __('Unpacking the update…'); + $this->strings['remove_old'] = __('Removing the old version of the theme…'); + $this->strings['remove_old_failed'] = __('Could not remove the old theme.'); + $this->strings['process_failed'] = __('Theme update failed.'); + $this->strings['process_success'] = __('Theme updated successfully.'); + } + + function install_strings() { + $this->strings['no_package'] = __('Install package not available.'); + $this->strings['downloading_package'] = __('Downloading install package from %s…'); + $this->strings['unpack_package'] = __('Unpacking the package…'); + $this->strings['installing_package'] = __('Installing the theme…'); + $this->strings['process_failed'] = __('Theme install failed.'); + $this->strings['process_success'] = __('Theme installed successfully.'); + } + + function install($package) { + + $this->init(); + $this->install_strings(); + + $options = array( + 'package' => $package, + 'destination' => WP_CONTENT_DIR . '/themes', + 'clear_destination' => false, //Do not overwrite files. + 'clear_working' => true + ); + + $this->run($options); + + if ( ! $this->result || is_wp_error($this->result) ) + return $this->result; + + // Force refresh of theme update information + delete_site_transient('update_themes'); + + if ( empty($result['destination_name']) ) + return false; + else + return $result['destination_name']; + } + + function upgrade($theme) { + + $this->init(); + $this->upgrade_strings(); + + // Is an update available? + $current = get_site_transient( 'update_themes' ); + if ( !isset( $current->response[ $theme ] ) ) { + $this->skin->before(); + $this->skin->set_result(false); + $this->skin->error('up_to_date'); + $this->skin->after(); + return false; + } + + $r = $current->response[ $theme ]; + + add_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2); + add_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2); + add_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4); + + $options = array( + 'package' => $r['package'], + 'destination' => WP_CONTENT_DIR . '/themes', + 'clear_destination' => true, + 'clear_working' => true, + 'hook_extra' => array( + 'theme' => $theme + ) + ); + + $this->run($options); + + if ( ! $this->result || is_wp_error($this->result) ) + return $this->result; + + // Force refresh of theme update information + delete_site_transient('update_themes'); + + return true; + } + + function bulk_upgrade($themes) { + + $this->init(); + $this->bulk = true; + $this->upgrade_strings(); + + $current = get_site_transient( 'update_themes' ); + + add_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2); + add_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2); + add_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4); + + $this->skin->header(); + + // Connect to the Filesystem first. + $res = $this->fs_connect( array(WP_CONTENT_DIR) ); + if ( ! $res ) { + $this->skin->footer(); + return false; + } + + $this->skin->bulk_header(); + + // Only start maintenance mode if running in Multisite OR the theme is in use + $maintenance = is_multisite(); // @TODO: This should only kick in for individual sites if at all possible. + foreach ( $themes as $theme ) + $maintenance = $maintenance || $theme == get_stylesheet() || $theme == get_template(); + if ( $maintenance ) + $this->maintenance_mode(true); + + $results = array(); + + $this->update_count = count($themes); + $this->update_current = 0; + foreach ( $themes as $theme ) { + $this->update_current++; + + if ( !isset( $current->response[ $theme ] ) ) { + $this->skin->set_result(false); + $this->skin->before(); + $this->skin->error('up_to_date'); + $this->skin->after(); + $results[$theme] = false; + continue; + } + + $this->skin->theme_info = $this->theme_info($theme); + + // Get the URL to the zip file + $r = $current->response[ $theme ]; + + $options = array( + 'package' => $r['package'], + 'destination' => WP_CONTENT_DIR . '/themes', + 'clear_destination' => true, + 'clear_working' => true, + 'hook_extra' => array( + 'theme' => $theme + ) + ); + + $result = $this->run($options); + + $results[$theme] = $this->result; + + // Prevent credentials auth screen from displaying multiple times + if ( false === $result ) + break; + } //end foreach $plugins + + $this->maintenance_mode(false); + + $this->skin->bulk_footer(); + + $this->skin->footer(); + + // Cleanup our hooks, incase something else does a upgrade on this connection. + remove_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2); + remove_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2); + remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4); + + // Force refresh of theme update information + delete_site_transient('update_themes'); + + return $results; + } + + function current_before($return, $theme) { + + if ( is_wp_error($return) ) + return $return; + + $theme = isset($theme['theme']) ? $theme['theme'] : ''; + + if ( $theme != get_stylesheet() ) //If not current + return $return; + //Change to maintenance mode now. + if ( ! $this->bulk ) + $this->maintenance_mode(true); + + return $return; + } + function current_after($return, $theme) { + if ( is_wp_error($return) ) + return $return; + + $theme = isset($theme['theme']) ? $theme['theme'] : ''; + + if ( $theme != get_stylesheet() ) //If not current + return $return; + + //Ensure stylesheet name hasnt changed after the upgrade: + // @TODO: Note, This doesnt handle the Template changing, or the Template name changing. + if ( $theme == get_stylesheet() && $theme != $this->result['destination_name'] ) { + $theme_info = $this->theme_info(); + $stylesheet = $this->result['destination_name']; + $template = !empty($theme_info['Template']) ? $theme_info['Template'] : $stylesheet; + switch_theme($template, $stylesheet, true); + } + + //Time to remove maintenance mode + if ( ! $this->bulk ) + $this->maintenance_mode(false); + return $return; + } + + function delete_old_theme($removed, $local_destination, $remote_destination, $theme) { + global $wp_filesystem; + + $theme = isset($theme['theme']) ? $theme['theme'] : ''; + + if ( is_wp_error($removed) || empty($theme) ) + return $removed; //Pass errors through. + + $themes_dir = $wp_filesystem->wp_themes_dir(); + if ( $wp_filesystem->exists( trailingslashit($themes_dir) . $theme ) ) + if ( ! $wp_filesystem->delete( trailingslashit($themes_dir) . $theme, true ) ) + return false; + return true; + } + + function theme_info($theme = null) { + + if ( empty($theme) ) { + if ( !empty($this->result['destination_name']) ) + $theme = $this->result['destination_name']; + else + return false; + } + return get_theme_data(WP_CONTENT_DIR . '/themes/' . $theme . '/style.css'); + } + +} + +/** + * Core Upgrader class for WordPress. It allows for WordPress to upgrade itself in combiantion with the wp-admin/includes/update-core.php file + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Core_Upgrader extends WP_Upgrader { + + function upgrade_strings() { + $this->strings['up_to_date'] = __('WordPress is at the latest version.'); + $this->strings['no_package'] = __('Update package not available.'); + $this->strings['downloading_package'] = __('Downloading update from %s…'); + $this->strings['unpack_package'] = __('Unpacking the update…'); + $this->strings['copy_failed'] = __('Could not copy files.'); + } + + function upgrade($current) { + global $wp_filesystem, $wp_version; + + $this->init(); + $this->upgrade_strings(); + + if ( !empty($feedback) ) + add_filter('update_feedback', $feedback); + + // Is an update available? + if ( !isset( $current->response ) || $current->response == 'latest' ) + return new WP_Error('up_to_date', $this->strings['up_to_date']); + + $res = $this->fs_connect( array(ABSPATH, WP_CONTENT_DIR) ); + if ( is_wp_error($res) ) + return $res; + + $wp_dir = trailingslashit($wp_filesystem->abspath()); + + // If partial update is returned from the API, use that, unless we're doing a reinstall. + // If we cross the new_bundled version number, then use the new_bundled zip. + // Don't though if the constant is set to skip bundled items. + // If the API returns a no_content zip, go with it. Finally, default to the full zip. + if ( $current->packages->partial && 'reinstall' != $current->response && $wp_version == $current->partial_version ) + $to_download = 'partial'; + elseif ( $current->packages->new_bundled && version_compare( $wp_version, $current->new_bundled, '<' ) + && ( ! defined( 'CORE_UPGRADE_SKIP_NEW_BUNDLED' ) || ! CORE_UPGRADE_SKIP_NEW_BUNDLED ) ) + $to_download = 'new_bundled'; + elseif ( $current->packages->no_content ) + $to_download = 'no_content'; + else + $to_download = 'full'; + + $download = $this->download_package( $current->packages->$to_download ); + if ( is_wp_error($download) ) + return $download; + + $working_dir = $this->unpack_package( $download ); + if ( is_wp_error($working_dir) ) + return $working_dir; + + // Copy update-core.php from the new version into place. + if ( !$wp_filesystem->copy($working_dir . '/wordpress/wp-admin/includes/update-core.php', $wp_dir . 'wp-admin/includes/update-core.php', true) ) { + $wp_filesystem->delete($working_dir, true); + return new WP_Error('copy_failed', $this->strings['copy_failed']); + } + $wp_filesystem->chmod($wp_dir . 'wp-admin/includes/update-core.php', FS_CHMOD_FILE); + + require(ABSPATH . 'wp-admin/includes/update-core.php'); + + return update_core($working_dir, $wp_dir); + } + +} + +/** + * Generic Skin for the WordPress Upgrader classes. This skin is designed to be extended for specific purposes. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class WP_Upgrader_Skin { + + var $upgrader; + var $done_header = false; + var $result = false; + + function __construct($args = array()) { + $defaults = array( 'url' => '', 'nonce' => '', 'title' => '', 'context' => false ); + $this->options = wp_parse_args($args, $defaults); + } + + function set_upgrader(&$upgrader) { + if ( is_object($upgrader) ) + $this->upgrader =& $upgrader; + $this->add_strings(); + } + + function add_strings() { + } + + function set_result($result) { + $this->result = $result; + } + + function request_filesystem_credentials($error = false) { + $url = $this->options['url']; + $context = $this->options['context']; + if ( !empty($this->options['nonce']) ) + $url = wp_nonce_url($url, $this->options['nonce']); + return request_filesystem_credentials($url, '', $error, $context); //Possible to bring inline, Leaving as is for now. + } + + function header() { + if ( $this->done_header ) + return; + $this->done_header = true; + echo '
'; + echo screen_icon(); + echo '

' . $this->options['title'] . '

'; + } + function footer() { + echo '
'; + } + + function error($errors) { + if ( ! $this->done_header ) + $this->header(); + if ( is_string($errors) ) { + $this->feedback($errors); + } elseif ( is_wp_error($errors) && $errors->get_error_code() ) { + foreach ( $errors->get_error_messages() as $message ) { + if ( $errors->get_error_data() ) + $this->feedback($message . ' ' . $errors->get_error_data() ); + else + $this->feedback($message); + } + } + } + + function feedback($string) { + if ( isset( $this->upgrader->strings[$string] ) ) + $string = $this->upgrader->strings[$string]; + + if ( strpos($string, '%') !== false ) { + $args = func_get_args(); + $args = array_splice($args, 1); + if ( !empty($args) ) + $string = vsprintf($string, $args); + } + if ( empty($string) ) + return; + show_message($string); + } + function before() {} + function after() {} + +} + +/** + * Plugin Upgrader Skin for WordPress Plugin Upgrades. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Plugin_Upgrader_Skin extends WP_Upgrader_Skin { + var $plugin = ''; + var $plugin_active = false; + var $plugin_network_active = false; + + function __construct($args = array()) { + $defaults = array( 'url' => '', 'plugin' => '', 'nonce' => '', 'title' => __('Update Plugin') ); + $args = wp_parse_args($args, $defaults); + + $this->plugin = $args['plugin']; + + $this->plugin_active = is_plugin_active( $this->plugin ); + $this->plugin_network_active = is_plugin_active_for_network( $this->plugin ); + + parent::__construct($args); + } + + function after() { + $this->plugin = $this->upgrader->plugin_info(); + if ( !empty($this->plugin) && !is_wp_error($this->result) && $this->plugin_active ){ + show_message(__('Reactivating the plugin…')); + echo ''; + } + + $update_actions = array( + 'activate_plugin' => '' . __('Activate Plugin') . '', + 'plugins_page' => '' . __('Return to Plugins page') . '' + ); + if ( $this->plugin_active ) + unset( $update_actions['activate_plugin'] ); + if ( ! $this->result || is_wp_error($this->result) ) + unset( $update_actions['activate_plugin'] ); + + $update_actions = apply_filters('update_plugin_complete_actions', $update_actions, $this->plugin); + if ( ! empty($update_actions) ) + $this->feedback(implode(' | ', (array)$update_actions)); + } + + function before() { + if ( $this->upgrader->show_before ) { + echo $this->upgrader->show_before; + $this->upgrader->show_before = ''; + } + } +} + +/** + * Plugin Upgrader Skin for WordPress Plugin Upgrades. + * + * @package WordPress + * @subpackage Upgrader + * @since 3.0.0 + */ +class Bulk_Upgrader_Skin extends WP_Upgrader_Skin { + var $in_loop = false; + var $error = false; + + function __construct($args = array()) { + $defaults = array( 'url' => '', 'nonce' => '' ); + $args = wp_parse_args($args, $defaults); + + parent::__construct($args); + } + + function add_strings() { + $this->upgrader->strings['skin_upgrade_start'] = __('The update process is starting. This process may take a while on some hosts, so please be patient.'); + $this->upgrader->strings['skin_update_failed_error'] = __('An error occurred while updating %1$s: %2$s.'); + $this->upgrader->strings['skin_update_failed'] = __('The update of %1$s failed.'); + $this->upgrader->strings['skin_update_successful'] = __('%1$s updated successfully.').' '.__('Show Details').'.'; + $this->upgrader->strings['skin_upgrade_end'] = __('All updates have been completed.'); + } + + function feedback($string) { + if ( isset( $this->upgrader->strings[$string] ) ) + $string = $this->upgrader->strings[$string]; + + if ( strpos($string, '%') !== false ) { + $args = func_get_args(); + $args = array_splice($args, 1); + if ( !empty($args) ) + $string = vsprintf($string, $args); + } + if ( empty($string) ) + return; + if ( $this->in_loop ) + echo "$string
\n"; + else + echo "

$string

\n"; + } + + function header() { + // Nothing, This will be displayed within a iframe. + } + + function footer() { + // Nothing, This will be displayed within a iframe. + } + function error($error) { + if ( is_string($error) && isset( $this->upgrader->strings[$error] ) ) + $this->error = $this->upgrader->strings[$error]; + + if ( is_wp_error($error) ) { + foreach ( $error->get_error_messages() as $emessage ) { + if ( $error->get_error_data() ) + $messages[] = $emessage . ' ' . $error->get_error_data(); + else + $messages[] = $emessage; + } + $this->error = implode(', ', $messages); + } + echo ''; + } + + function bulk_header() { + $this->feedback('skin_upgrade_start'); + } + + function bulk_footer() { + $this->feedback('skin_upgrade_end'); + } + + function before($title = '') { + $this->in_loop = true; + printf( '

' . $this->upgrader->strings['skin_before_update_header'] . '

', $title, $this->upgrader->update_current, $this->upgrader->update_count); + echo ''; + echo '

'; + $this->flush_output(); + } + + function after($title = '') { + echo '

'; + if ( $this->error || ! $this->result ) { + if ( $this->error ) + echo '

' . sprintf($this->upgrader->strings['skin_update_failed_error'], $title, $this->error) . '

'; + else + echo '

' . sprintf($this->upgrader->strings['skin_update_failed'], $title) . '

'; + + echo ''; + } + if ( !empty($this->result) && !is_wp_error($this->result) ) { + echo '

' . sprintf($this->upgrader->strings['skin_update_successful'], $title, 'jQuery(\'#progress-' . esc_js($this->upgrader->update_current) . '\').toggle();jQuery(\'span\', this).toggle(); return false;') . '

'; + echo ''; + } + + $this->reset(); + $this->flush_output(); + } + + function reset() { + $this->in_loop = false; + $this->error = false; + } + + function flush_output() { + wp_ob_end_flush_all(); + flush(); + } +} + +class Bulk_Plugin_Upgrader_Skin extends Bulk_Upgrader_Skin { + var $plugin_info = array(); // Plugin_Upgrader::bulk() will fill this in. + + function __construct($args = array()) { + parent::__construct($args); + } + + function add_strings() { + parent::add_strings(); + $this->upgrader->strings['skin_before_update_header'] = __('Updating Plugin %1$s (%2$d/%3$d)'); + } + + function before() { + parent::before($this->plugin_info['Title']); + } + + function after() { + parent::after($this->plugin_info['Title']); + } + function bulk_footer() { + parent::bulk_footer(); + $update_actions = array( + 'plugins_page' => '' . __('Return to Plugins page') . '', + 'updates_page' => '' . __('Return to WordPress Updates') . '' + ); + + $update_actions = apply_filters('update_bulk_plugins_complete_actions', $update_actions, $this->plugin_info); + if ( ! empty($update_actions) ) + $this->feedback(implode(' | ', (array)$update_actions)); + } +} + +class Bulk_Theme_Upgrader_Skin extends Bulk_Upgrader_Skin { + var $theme_info = array(); // Theme_Upgrader::bulk() will fill this in. + + function __construct($args = array()) { + parent::__construct($args); + } + + function add_strings() { + parent::add_strings(); + $this->upgrader->strings['skin_before_update_header'] = __('Updating Theme %1$s (%2$d/%3$d)'); + } + + function before() { + parent::before($this->theme_info['Name']); + } + + function after() { + parent::after($this->theme_info['Name']); + } + function bulk_footer() { + parent::bulk_footer(); + $update_actions = array( + 'themes_page' => '' . __('Return to Themes page') . '', + 'updates_page' => '' . __('Return to WordPress Updates') . '' + ); + + $update_actions = apply_filters('update_bulk_theme_complete_actions', $update_actions, $this->theme_info); + if ( ! empty($update_actions) ) + $this->feedback(implode(' | ', (array)$update_actions)); + } +} + +/** + * Plugin Installer Skin for WordPress Plugin Installer. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Plugin_Installer_Skin extends WP_Upgrader_Skin { + var $api; + var $type; + + function __construct($args = array()) { + $defaults = array( 'type' => 'web', 'url' => '', 'plugin' => '', 'nonce' => '', 'title' => '' ); + $args = wp_parse_args($args, $defaults); + + $this->type = $args['type']; + $this->api = isset($args['api']) ? $args['api'] : array(); + + parent::__construct($args); + } + + function before() { + if ( !empty($this->api) ) + $this->upgrader->strings['process_success'] = sprintf( __('Successfully installed the plugin %s %s.'), $this->api->name, $this->api->version); + } + + function after() { + + $plugin_file = $this->upgrader->plugin_info(); + + $install_actions = array(); + + $from = isset($_GET['from']) ? stripslashes($_GET['from']) : 'plugins'; + + if ( 'import' == $from ) + $install_actions['activate_plugin'] = '' . __('Activate Plugin & Run Importer') . ''; + else + $install_actions['activate_plugin'] = '' . __('Activate Plugin') . ''; + + if ( is_multisite() && current_user_can( 'manage_network_plugins' ) ) { + $install_actions['network_activate'] = '' . __('Network Activate') . ''; + unset( $install_actions['activate_plugin'] ); + } + + if ( 'import' == $from ) + $install_actions['importers_page'] = '' . __('Return to Importers') . ''; + else if ( $this->type == 'web' ) + $install_actions['plugins_page'] = '' . __('Return to Plugin Installer') . ''; + else + $install_actions['plugins_page'] = '' . __('Return to Plugins page') . ''; + + + if ( ! $this->result || is_wp_error($this->result) ) { + unset( $install_actions['activate_plugin'] ); + unset( $install_actions['network_activate'] ); + } + $install_actions = apply_filters('install_plugin_complete_actions', $install_actions, $this->api, $plugin_file); + if ( ! empty($install_actions) ) + $this->feedback(implode(' | ', (array)$install_actions)); + } +} + +/** + * Theme Installer Skin for the WordPress Theme Installer. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Theme_Installer_Skin extends WP_Upgrader_Skin { + var $api; + var $type; + + function __construct($args = array()) { + $defaults = array( 'type' => 'web', 'url' => '', 'theme' => '', 'nonce' => '', 'title' => '' ); + $args = wp_parse_args($args, $defaults); + + $this->type = $args['type']; + $this->api = isset($args['api']) ? $args['api'] : array(); + + parent::__construct($args); + } + + function before() { + if ( !empty($this->api) ) { + /* translators: 1: theme name, 2: version */ + $this->upgrader->strings['process_success'] = sprintf( __('Successfully installed the theme %1$s %2$s.'), $this->api->name, $this->api->version); + } + } + + function after() { + if ( empty($this->upgrader->result['destination_name']) ) + return; + + $theme_info = $this->upgrader->theme_info(); + if ( empty($theme_info) ) + return; + $name = $theme_info['Name']; + $stylesheet = $this->upgrader->result['destination_name']; + $template = !empty($theme_info['Template']) ? $theme_info['Template'] : $stylesheet; + + $preview_link = htmlspecialchars( add_query_arg( array('preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'preview_iframe' => 1, 'TB_iframe' => 'true' ), trailingslashit(esc_url(get_option('home'))) ) ); + $activate_link = wp_nonce_url("themes.php?action=activate&template=" . urlencode($template) . "&stylesheet=" . urlencode($stylesheet), 'switch-theme_' . $template); + + $install_actions = array( + 'preview' => '' . __('Preview') . '', + 'activate' => '' . __('Activate') . '' + ); + + if ( $this->type == 'web' ) + $install_actions['themes_page'] = '' . __('Return to Theme Installer') . ''; + else + $install_actions['themes_page'] = '' . __('Return to Themes page') . ''; + + if ( ! $this->result || is_wp_error($this->result) || is_network_admin() ) + unset( $install_actions['activate'], $install_actions['preview'] ); + + $install_actions = apply_filters('install_theme_complete_actions', $install_actions, $this->api, $stylesheet, $theme_info); + if ( ! empty($install_actions) ) + $this->feedback(implode(' | ', (array)$install_actions)); + } +} + +/** + * Theme Upgrader Skin for WordPress Theme Upgrades. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class Theme_Upgrader_Skin extends WP_Upgrader_Skin { + var $theme = ''; + + function __construct($args = array()) { + $defaults = array( 'url' => '', 'theme' => '', 'nonce' => '', 'title' => __('Update Theme') ); + $args = wp_parse_args($args, $defaults); + + $this->theme = $args['theme']; + + parent::__construct($args); + } + + function after() { + + $update_actions = array(); + if ( !empty($this->upgrader->result['destination_name']) && + ($theme_info = $this->upgrader->theme_info()) && + !empty($theme_info) ) { + + $name = $theme_info['Name']; + $stylesheet = $this->upgrader->result['destination_name']; + $template = !empty($theme_info['Template']) ? $theme_info['Template'] : $stylesheet; + + $preview_link = htmlspecialchars( add_query_arg( array('preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'TB_iframe' => 'true' ), trailingslashit(esc_url(get_option('home'))) ) ); + $activate_link = wp_nonce_url("themes.php?action=activate&template=" . urlencode($template) . "&stylesheet=" . urlencode($stylesheet), 'switch-theme_' . $template); + + $update_actions['preview'] = '' . __('Preview') . ''; + $update_actions['activate'] = '' . __('Activate') . ''; + + if ( ( ! $this->result || is_wp_error($this->result) ) || $stylesheet == get_stylesheet() ) + unset($update_actions['preview'], $update_actions['activate']); + } + + $update_actions['themes_page'] = '' . __('Return to Themes page') . ''; + + $update_actions = apply_filters('update_theme_complete_actions', $update_actions, $this->theme); + if ( ! empty($update_actions) ) + $this->feedback(implode(' | ', (array)$update_actions)); + } +} + +/** + * Upgrade Skin helper for File uploads. This class handles the upload process and passes it as if its a local file to the Upgrade/Installer functions. + * + * @TODO More Detailed docs, for methods as well. + * + * @package WordPress + * @subpackage Upgrader + * @since 2.8.0 + */ +class File_Upload_Upgrader { + var $package; + var $filename; + + function __construct($form, $urlholder) { + if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) ) + wp_die($uploads['error']); + + if ( empty($_FILES[$form]['name']) && empty($_GET[$urlholder]) ) + wp_die(__('Please select a file')); + + if ( !empty($_FILES) ) + $this->filename = $_FILES[$form]['name']; + else if ( isset($_GET[$urlholder]) ) + $this->filename = $_GET[$urlholder]; + + //Handle a newly uploaded file, Else assume its already been uploaded + if ( !empty($_FILES) ) { + $this->filename = wp_unique_filename( $uploads['basedir'], $this->filename ); + $this->package = $uploads['basedir'] . '/' . $this->filename; + + // Move the file to the uploads dir + if ( false === @ move_uploaded_file( $_FILES[$form]['tmp_name'], $this->package) ) + wp_die( sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'])); + } else { + $this->package = $uploads['basedir'] . '/' . $this->filename; + } + } +} \ No newline at end of file diff --git a/src/wp-admin/includes/class-wp-users-list-table.php b/src/wp-admin/includes/class-wp-users-list-table.php new file mode 100644 index 0000000..de22748 --- /dev/null +++ b/src/wp-admin/includes/class-wp-users-list-table.php @@ -0,0 +1,320 @@ +is_site_users = 'site-users-network' == $screen->id; + + if ( $this->is_site_users ) + $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; + + parent::__construct( array( + 'singular' => 'user', + 'plural' => 'users' + ) ); + } + + function ajax_user_can() { + if ( $this->is_site_users ) + return current_user_can( 'manage_sites' ); + else + return current_user_can( 'list_users' ); + } + + function prepare_items() { + global $role, $usersearch; + + $usersearch = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : ''; + + $role = isset( $_REQUEST['role'] ) ? $_REQUEST['role'] : ''; + + $per_page = ( $this->is_site_users ) ? 'site_users_network_per_page' : 'users_per_page'; + $users_per_page = $this->get_items_per_page( $per_page ); + + $paged = $this->get_pagenum(); + + $args = array( + 'number' => $users_per_page, + 'offset' => ( $paged-1 ) * $users_per_page, + 'role' => $role, + 'search' => $usersearch, + 'fields' => 'all_with_meta' + ); + + if ( '' !== $args['search'] ) + $args['search'] = '*' . $args['search'] . '*'; + + if ( $this->is_site_users ) + $args['blog_id'] = $this->site_id; + + if ( isset( $_REQUEST['orderby'] ) ) + $args['orderby'] = $_REQUEST['orderby']; + + if ( isset( $_REQUEST['order'] ) ) + $args['order'] = $_REQUEST['order']; + + // Query the user IDs for this page + $wp_user_search = new WP_User_Query( $args ); + + $this->items = $wp_user_search->get_results(); + + $this->set_pagination_args( array( + 'total_items' => $wp_user_search->get_total(), + 'per_page' => $users_per_page, + ) ); + } + + function no_items() { + _e( 'No matching users were found.' ); + } + + function get_views() { + global $wp_roles, $role; + + if ( $this->is_site_users ) { + $url = 'site-users.php?id=' . $this->site_id; + switch_to_blog( $this->site_id ); + $users_of_blog = count_users(); + restore_current_blog(); + } else { + $url = 'users.php'; + $users_of_blog = count_users(); + } + $total_users = $users_of_blog['total_users']; + $avail_roles =& $users_of_blog['avail_roles']; + unset($users_of_blog); + + $current_role = false; + $class = empty($role) ? ' class="current"' : ''; + $role_links = array(); + $role_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $total_users, 'users' ), number_format_i18n( $total_users ) ) . ''; + foreach ( $wp_roles->get_names() as $this_role => $name ) { + if ( !isset($avail_roles[$this_role]) ) + continue; + + $class = ''; + + if ( $this_role == $role ) { + $current_role = $role; + $class = ' class="current"'; + } + + $name = translate_user_role( $name ); + /* translators: User role name with count */ + $name = sprintf( __('%1$s (%2$s)'), $name, $avail_roles[$this_role] ); + $role_links[$this_role] = "$name"; + } + + return $role_links; + } + + function get_bulk_actions() { + $actions = array(); + + if ( is_multisite() ) { + if ( current_user_can( 'remove_users' ) ) + $actions['remove'] = __( 'Remove' ); + } else { + if ( current_user_can( 'delete_users' ) ) + $actions['delete'] = __( 'Delete' ); + } + + return $actions; + } + + function extra_tablenav( $which ) { + if ( 'top' != $which ) + return; + if ( ! current_user_can( 'promote_users' ) ) + return; +?> +
+ + + +
+ '', + 'username' => __( 'Username' ), + 'name' => __( 'Name' ), + 'email' => __( 'E-mail' ), + 'role' => __( 'Role' ), + 'posts' => __( 'Posts' ) + ); + + if ( $this->is_site_users ) + unset( $c['posts'] ); + + return $c; + } + + function get_sortable_columns() { + $c = array( + 'username' => 'login', + 'name' => 'name', + 'email' => 'email', + ); + + if ( $this->is_site_users ) + unset( $c['posts'] ); + + return $c; + } + + function display_rows() { + // Query the post counts for this page + if ( ! $this->is_site_users ) + $post_counts = count_many_users_posts( array_keys( $this->items ) ); + + $style = ''; + foreach ( $this->items as $userid => $user_object ) { + $role = reset( $user_object->roles ); + + if ( is_multisite() && empty( $role ) ) + continue; + + $style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"'; + echo "\n\t", $this->single_row( $user_object, $style, $role, isset( $post_counts ) ? $post_counts[ $userid ] : 0 ); + } + } + + /** + * Generate HTML for a single row on the users.php admin panel. + * + * @since 2.1.0 + * + * @param object $user_object + * @param string $style Optional. Attributes added to the TR element. Must be sanitized. + * @param string $role Key for the $wp_roles array. + * @param int $numposts Optional. Post count to display for this user. Defaults to zero, as in, a new user has made zero posts. + * @return string + */ + function single_row( $user_object, $style = '', $role = '', $numposts = 0 ) { + global $wp_roles; + + if ( !( is_object( $user_object ) && is_a( $user_object, 'WP_User' ) ) ) + $user_object = new WP_User( (int) $user_object ); + $user_object = sanitize_user_object( $user_object, 'display' ); + $email = $user_object->user_email; + + if ( $this->is_site_users ) + $url = "site-users.php?id={$this->site_id}&"; + else + $url = 'users.php?'; + + $checkbox = ''; + // Check if the user for this row is editable + if ( current_user_can( 'list_users' ) ) { + // Set up the user editing link + // TODO: make profile/user-edit determination a separate function + if ( get_current_user_id() == $user_object->ID ) { + $edit_link = 'profile.php'; + } else { + $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), "user-edit.php?user_id=$user_object->ID" ) ); + } + + // Set up the hover actions for this user + $actions = array(); + + if ( current_user_can( 'edit_user', $user_object->ID ) ) { + $edit = "$user_object->user_login
"; + $actions['edit'] = '' . __( 'Edit' ) . ''; + } else { + $edit = "$user_object->user_login
"; + } + + if ( !is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'delete_user', $user_object->ID ) ) + $actions['delete'] = "" . __( 'Delete' ) . ""; + if ( is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'remove_user', $user_object->ID ) ) + $actions['remove'] = "" . __( 'Remove' ) . ""; + $actions = apply_filters( 'user_row_actions', $actions, $user_object ); + $edit .= $this->row_actions( $actions ); + + // Set up the checkbox ( because the user is editable, otherwise its empty ) + $checkbox = ""; + + } else { + $edit = '' . $user_object->user_login . ''; + } + $role_name = isset( $wp_roles->role_names[$role] ) ? translate_user_role( $wp_roles->role_names[$role] ) : __( 'None' ); + $avatar = get_avatar( $user_object->ID, 32 ); + + $r = ""; + + list( $columns, $hidden ) = $this->get_column_info(); + + foreach ( $columns as $column_name => $column_display_name ) { + $class = "class=\"$column_name column-$column_name\""; + + $style = ''; + if ( in_array( $column_name, $hidden ) ) + $style = ' style="display:none;"'; + + $attributes = "$class$style"; + + switch ( $column_name ) { + case 'cb': + $r .= "$checkbox"; + break; + case 'username': + $r .= "$avatar $edit"; + break; + case 'name': + $r .= "$user_object->first_name $user_object->last_name"; + break; + case 'email': + $r .= "$email"; + break; + case 'role': + $r .= "$role_name"; + break; + case 'posts': + $attributes = 'class="posts column-posts num"' . $style; + $r .= ""; + if ( $numposts > 0 ) { + $r .= ""; + $r .= $numposts; + $r .= ''; + } else { + $r .= 0; + } + $r .= ""; + break; + default: + $r .= ""; + $r .= apply_filters( 'manage_users_custom_column', '', $column_name, $user_object->ID ); + $r .= ""; + } + } + $r .= ''; + + return $r; + } +} + +?> diff --git a/src/wp-admin/includes/comment.php b/src/wp-admin/includes/comment.php new file mode 100644 index 0000000..d731130 --- /dev/null +++ b/src/wp-admin/includes/comment.php @@ -0,0 +1,159 @@ +get_var( $wpdb->prepare("SELECT comment_post_ID FROM $wpdb->comments + WHERE comment_author = %s AND comment_date = %s", $comment_author, $comment_date) ); +} + +/** + * Update a comment with values provided in $_POST. + * + * @since 2.0.0 + */ +function edit_comment() { + + if ( ! current_user_can( 'edit_comment', (int) $_POST['comment_ID'] ) ) + wp_die ( __( 'You are not allowed to edit comments on this post.' ) ); + + $_POST['comment_author'] = $_POST['newcomment_author']; + $_POST['comment_author_email'] = $_POST['newcomment_author_email']; + $_POST['comment_author_url'] = $_POST['newcomment_author_url']; + $_POST['comment_approved'] = $_POST['comment_status']; + $_POST['comment_content'] = $_POST['content']; + $_POST['comment_ID'] = (int) $_POST['comment_ID']; + + foreach ( array ('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) { + if ( !empty( $_POST['hidden_' . $timeunit] ) && $_POST['hidden_' . $timeunit] != $_POST[$timeunit] ) { + $_POST['edit_date'] = '1'; + break; + } + } + + if ( !empty ( $_POST['edit_date'] ) ) { + $aa = $_POST['aa']; + $mm = $_POST['mm']; + $jj = $_POST['jj']; + $hh = $_POST['hh']; + $mn = $_POST['mn']; + $ss = $_POST['ss']; + $jj = ($jj > 31 ) ? 31 : $jj; + $hh = ($hh > 23 ) ? $hh -24 : $hh; + $mn = ($mn > 59 ) ? $mn -60 : $mn; + $ss = ($ss > 59 ) ? $ss -60 : $ss; + $_POST['comment_date'] = "$aa-$mm-$jj $hh:$mn:$ss"; + } + + wp_update_comment( $_POST ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.0.0 + * + * @param int $id ID of comment to retrieve + * @return bool|object Comment if found. False on failure. + */ +function get_comment_to_edit( $id ) { + if ( !$comment = get_comment($id) ) + return false; + + $comment->comment_ID = (int) $comment->comment_ID; + $comment->comment_post_ID = (int) $comment->comment_post_ID; + + $comment->comment_content = format_to_edit( $comment->comment_content ); + $comment->comment_content = apply_filters( 'comment_edit_pre', $comment->comment_content); + + $comment->comment_author = format_to_edit( $comment->comment_author ); + $comment->comment_author_email = format_to_edit( $comment->comment_author_email ); + $comment->comment_author_url = format_to_edit( $comment->comment_author_url ); + $comment->comment_author_url = esc_url($comment->comment_author_url); + + return $comment; +} + +/** + * Get the number of pending comments on a post or posts + * + * @since 2.3.0 + * @uses $wpdb + * + * @param int|array $post_id Either a single Post ID or an array of Post IDs + * @return int|array Either a single Posts pending comments as an int or an array of ints keyed on the Post IDs + */ +function get_pending_comments_num( $post_id ) { + global $wpdb; + + $single = false; + if ( !is_array($post_id) ) { + $post_id_array = (array) $post_id; + $single = true; + } else { + $post_id_array = $post_id; + } + $post_id_array = array_map('intval', $post_id_array); + $post_id_in = "'" . implode("', '", $post_id_array) . "'"; + + $pending = $wpdb->get_results( "SELECT comment_post_ID, COUNT(comment_ID) as num_comments FROM $wpdb->comments WHERE comment_post_ID IN ( $post_id_in ) AND comment_approved = '0' GROUP BY comment_post_ID", ARRAY_A ); + + if ( $single ) { + if ( empty($pending) ) + return 0; + else + return absint($pending[0]['num_comments']); + } + + $pending_keyed = array(); + + // Default to zero pending for all posts in request + foreach ( $post_id_array as $id ) + $pending_keyed[$id] = 0; + + if ( !empty($pending) ) + foreach ( $pending as $pend ) + $pending_keyed[$pend['comment_post_ID']] = absint($pend['num_comments']); + + return $pending_keyed; +} + +/** + * Add avatars to relevant places in admin, or try to. + * + * @since 2.5.0 + * @uses $comment + * + * @param string $name User name. + * @return string Avatar with Admin name. + */ +function floated_admin_avatar( $name ) { + global $comment; + $avatar = get_avatar( $comment, 32 ); + return "$avatar $name"; +} + +function enqueue_comment_hotkeys_js() { + if ( 'true' == get_user_option( 'comment_shortcuts' ) ) + wp_enqueue_script( 'jquery-table-hotkeys' ); +} +?> diff --git a/src/wp-admin/includes/continents-cities.php b/src/wp-admin/includes/continents-cities.php new file mode 100644 index 0000000..0ebc4f3 --- /dev/null +++ b/src/wp-admin/includes/continents-cities.php @@ -0,0 +1,493 @@ + 5, + ); + } + $recent_comments_title = __( 'Recent Comments' ); + wp_add_dashboard_widget( 'dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments', 'wp_dashboard_recent_comments_control' ); + } + + // Incoming Links Widget + if ( is_blog_admin() && current_user_can('publish_posts') ) { + if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) { + $update = true; + $num_items = isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10; + $widget_options['dashboard_incoming_links'] = array( + 'home' => get_option('home'), + 'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ), + 'url' => isset($widget_options['dashboard_incoming_links']['url']) ? apply_filters( 'dashboard_incoming_links_feed', $widget_options['dashboard_incoming_links']['url'] ) : apply_filters( 'dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=' . $num_items . '&output=rss&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ), + 'items' => $num_items, + 'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false + ); + } + wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' ); + } + + // WP Plugins Widget + if ( ( ! is_multisite() && is_blog_admin() && current_user_can( 'install_plugins' ) ) || ( is_network_admin() && current_user_can( 'manage_network_plugins' ) && current_user_can( 'install_plugins' ) ) ) + wp_add_dashboard_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_plugins' ); + + // QuickPress Widget + if ( is_blog_admin() && current_user_can('edit_posts') ) + wp_add_dashboard_widget( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_quick_press' ); + + // Recent Drafts + if ( is_blog_admin() && current_user_can('edit_posts') ) + wp_add_dashboard_widget( 'dashboard_recent_drafts', __('Recent Drafts'), 'wp_dashboard_recent_drafts' ); + + // Primary feed (Dev Blog) Widget + if ( !isset( $widget_options['dashboard_primary'] ) ) { + $update = true; + $widget_options['dashboard_primary'] = array( + 'link' => apply_filters( 'dashboard_primary_link', __( 'http://wordpress.org/news/' ) ), + 'url' => apply_filters( 'dashboard_primary_feed', __( 'http://wordpress.org/news/feed/' ) ), + 'title' => apply_filters( 'dashboard_primary_title', __( 'WordPress Blog' ) ), + 'items' => 2, + 'show_summary' => 1, + 'show_author' => 0, + 'show_date' => 1, + ); + } + wp_add_dashboard_widget( 'dashboard_primary', $widget_options['dashboard_primary']['title'], 'wp_dashboard_primary', 'wp_dashboard_primary_control' ); + + // Secondary Feed (Planet) Widget + if ( !isset( $widget_options['dashboard_secondary'] ) ) { + $update = true; + $widget_options['dashboard_secondary'] = array( + 'link' => apply_filters( 'dashboard_secondary_link', __( 'http://planet.wordpress.org/' ) ), + 'url' => apply_filters( 'dashboard_secondary_feed', __( 'http://planet.wordpress.org/feed/' ) ), + 'title' => apply_filters( 'dashboard_secondary_title', __( 'Other WordPress News' ) ), + 'items' => 5, + 'show_summary' => 0, + 'show_author' => 0, + 'show_date' => 0, + ); + } + wp_add_dashboard_widget( 'dashboard_secondary', $widget_options['dashboard_secondary']['title'], 'wp_dashboard_secondary', 'wp_dashboard_secondary_control' ); + + // Hook to register new widgets + // Filter widget order + if ( is_network_admin() ) { + do_action( 'wp_network_dashboard_setup' ); + $dashboard_widgets = apply_filters( 'wp_network_dashboard_widgets', array() ); + } elseif ( is_user_admin() ) { + do_action( 'wp_user_dashboard_setup' ); + $dashboard_widgets = apply_filters( 'wp_user_dashboard_widgets', array() ); + } else { + do_action( 'wp_dashboard_setup' ); + $dashboard_widgets = apply_filters( 'wp_dashboard_widgets', array() ); + } + + foreach ( $dashboard_widgets as $widget_id ) { + $name = empty( $wp_registered_widgets[$widget_id]['all_link'] ) ? $wp_registered_widgets[$widget_id]['name'] : $wp_registered_widgets[$widget_id]['name'] . " " . __('View all') . ''; + wp_add_dashboard_widget( $widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback'] ); + } + + if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id']) ) { + ob_start(); // hack - but the same hack wp-admin/widgets.php uses + wp_dashboard_trigger_widget_control( $_POST['widget_id'] ); + ob_end_clean(); + wp_redirect( remove_query_arg( 'edit' ) ); + exit; + } + + if ( $update ) + update_option( 'dashboard_widget_options', $widget_options ); + + do_action('do_meta_boxes', $screen->id, 'normal', ''); + do_action('do_meta_boxes', $screen->id, 'side', ''); +} + +function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null ) { + $screen = get_current_screen(); + global $wp_dashboard_control_callbacks; + + if ( $control_callback && current_user_can( 'edit_dashboard' ) && is_callable( $control_callback ) ) { + $wp_dashboard_control_callbacks[$widget_id] = $control_callback; + if ( isset( $_GET['edit'] ) && $widget_id == $_GET['edit'] ) { + list($url) = explode( '#', add_query_arg( 'edit', false ), 2 ); + $widget_name .= ' ' . __( 'Cancel' ) . ''; + $callback = '_wp_dashboard_control_callback'; + } else { + list($url) = explode( '#', add_query_arg( 'edit', $widget_id ), 2 ); + $widget_name .= ' ' . __( 'Configure' ) . ''; + } + } + + if ( is_blog_admin () ) + $side_widgets = array('dashboard_quick_press', 'dashboard_recent_drafts', 'dashboard_primary', 'dashboard_secondary'); + else if (is_network_admin() ) + $side_widgets = array('dashboard_primary', 'dashboard_secondary'); + else + $side_widgets = array(); + + $location = 'normal'; + if ( in_array($widget_id, $side_widgets) ) + $location = 'side'; + + $priority = 'core'; + if ( 'dashboard_browser_nag' === $widget_id ) + $priority = 'high'; + + add_meta_box( $widget_id, $widget_name, $callback, $screen->id, $location, $priority ); +} + +function _wp_dashboard_control_callback( $dashboard, $meta_box ) { + echo '
'; + wp_dashboard_trigger_widget_control( $meta_box['id'] ); + echo ''; + submit_button( __('Submit') ); + echo '
'; +} + +/** + * Displays the dashboard. + * + * @since 2.5.0 + */ +function wp_dashboard() { + global $screen_layout_columns; + + $screen = get_current_screen(); + + $hide2 = $hide3 = $hide4 = ''; + switch ( $screen_layout_columns ) { + case 4: + $width = 'width:24.5%;'; + break; + case 3: + $width = 'width:32.67%;'; + $hide4 = 'display:none;'; + break; + case 2: + $width = 'width:49%;'; + $hide3 = $hide4 = 'display:none;'; + break; + default: + $width = 'width:98%;'; + $hide2 = $hide3 = $hide4 = 'display:none;'; + } +?> +
+\n"; + do_meta_boxes( $screen->id, 'normal', '' ); + + echo "\t
\n"; + do_meta_boxes( $screen->id, 'side', '' ); + + echo "\t
\n"; + do_meta_boxes( $screen->id, 'column3', '' ); + + echo "\t
\n"; + do_meta_boxes( $screen->id, 'column4', '' ); +?> +
+ +
+

+ +

+
+ +'; + echo "\n\t".'

' . __('Content') . '

'."\n\t".''; + echo "\n\t".''; + + // Posts + $num = number_format_i18n( $num_posts->publish ); + $text = _n( 'Post', 'Posts', intval($num_posts->publish) ); + if ( current_user_can( 'edit_posts' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo ''; + /* TODO: Show status breakdown on hover + if ( $can_edit_pages && !empty($num_pages->publish) ) { // how many pages is not exposed in feeds. Don't show if !current_user_can + $post_type_texts[] = ''.sprintf( _n( '%s page', '%s pages', $num_pages->publish ), number_format_i18n( $num_pages->publish ) ).''; + } + if ( $can_edit_posts && !empty($num_posts->draft) ) { + $post_type_texts[] = ''.sprintf( _n( '%s draft', '%s drafts', $num_posts->draft ), number_format_i18n( $num_posts->draft ) ).''; + } + if ( $can_edit_posts && !empty($num_posts->future) ) { + $post_type_texts[] = ''.sprintf( _n( '%s scheduled post', '%s scheduled posts', $num_posts->future ), number_format_i18n( $num_posts->future ) ).''; + } + if ( current_user_can('publish_posts') && !empty($num_posts->pending) ) { + $pending_text = sprintf( _n( 'There is %2$s post pending your review.', 'There are %2$s posts pending your review.', $num_posts->pending ), 'edit.php?post_status=pending', number_format_i18n( $num_posts->pending ) ); + } else { + $pending_text = ''; + } + */ + + // Pages + $num = number_format_i18n( $num_pages->publish ); + $text = _n( 'Page', 'Pages', $num_pages->publish ); + if ( current_user_can( 'edit_pages' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo ''; + + // Categories + $num = number_format_i18n( $num_cats ); + $text = _n( 'Category', 'Categories', $num_cats ); + if ( current_user_can( 'manage_categories' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo ''; + + // Tags + $num = number_format_i18n( $num_tags ); + $text = _n( 'Tag', 'Tags', $num_tags ); + if ( current_user_can( 'manage_categories' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo ""; + do_action('right_now_content_table_end'); + echo "\n\t
' . $num . '' . $text . '
' . $num . '' . $text . '
' . $num . '' . $text . '
' . $num . '' . $text . '
\n\t
"; + + + echo "\n\t".'
'; + echo "\n\t".'

' . __('Discussion') . '

'."\n\t".''; + echo "\n\t".''; + + // Total Comments + $num = '' . number_format_i18n($num_comm->total_comments) . ''; + $text = _n( 'Comment', 'Comments', $num_comm->total_comments ); + if ( current_user_can( 'moderate_comments' ) ) { + $num = '' . $num . ''; + $text = '' . $text . ''; + } + echo ''; + echo ''; + + echo ''; + + // Approved Comments + $num = '' . number_format_i18n($num_comm->approved) . ''; + $text = _nx( 'Approved', 'Approved', $num_comm->approved, 'Right Now' ); + if ( current_user_can( 'moderate_comments' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo "\n\t"; + + // Pending Comments + $num = '' . number_format_i18n($num_comm->moderated) . ''; + $text = _n( 'Pending', 'Pending', $num_comm->moderated ); + if ( current_user_can( 'moderate_comments' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo "\n\t"; + + // Spam Comments + $num = number_format_i18n($num_comm->spam); + $text = _nx( 'Spam', 'Spam', $num_comm->spam, 'comment' ); + if ( current_user_can( 'moderate_comments' ) ) { + $num = "$num"; + $text = "$text"; + } + echo ''; + echo ''; + + echo ""; + do_action('right_now_table_end'); + do_action('right_now_discussion_table_end'); + echo "\n\t
' . $num . '' . $text . '
' . $num . '' . $text . '
' . $num . '' . $text . '
' . $num . '' . $text . '
\n\t
"; + + echo "\n\t".'
'; + $ct = current_theme_info(); + + echo "\n\t

"; + if ( !empty($wp_registered_sidebars) ) { + $sidebars_widgets = wp_get_sidebars_widgets(); + $num_widgets = 0; + foreach ( (array) $sidebars_widgets as $k => $v ) { + if ( 'wp_inactive_widgets' == $k ) + continue; + if ( is_array($v) ) + $num_widgets = $num_widgets + count($v); + } + $num = number_format_i18n( $num_widgets ); + + $switch_themes = $ct->title; + if ( current_user_can( 'switch_themes') ) + $switch_themes = '' . $switch_themes . ''; + if ( current_user_can( 'edit_theme_options' ) ) { + printf(_n('Theme %1$s with %2$s Widget', 'Theme %1$s with %2$s Widgets', $num_widgets), $switch_themes, $num); + } else { + printf(_n('Theme %1$s with %2$s Widget', 'Theme %1$s with %2$s Widgets', $num_widgets), $switch_themes, $num); + } + } else { + if ( current_user_can( 'switch_themes' ) ) + printf( __('Theme %1$s'), $ct->title ); + else + printf( __('Theme %1$s'), $ct->title ); + } + echo '

'; + + // Check if search engines are blocked. + if ( !is_network_admin() && !is_user_admin() && current_user_can('manage_options') && '1' != get_option('blog_public') ) { + $title = apply_filters('privacy_on_link_title', __('Your site is asking search engines not to index its content') ); + $content = apply_filters('privacy_on_link_text', __('Search Engines Blocked') ); + + echo "

$content

"; + } + + update_right_now_message(); + + echo "\n\t".'
'; + do_action( 'rightnow_end' ); + do_action( 'activity_box_end' ); +} + +function wp_network_dashboard_right_now() { + $actions = array(); + if ( current_user_can('create_sites') ) + $actions['create-site'] = '' . __( 'Create a New Site' ) . ''; + if ( current_user_can('create_users') ) + $actions['create-user'] = '' . __( 'Create a New User' ) . ''; + + $c_users = get_user_count(); + $c_blogs = get_blog_count(); + + $user_text = sprintf( _n( '%s user', '%s users', $c_users ), number_format_i18n( $c_users ) ); + $blog_text = sprintf( _n( '%s site', '%s sites', $c_blogs ), number_format_i18n( $c_blogs ) ); + + $sentence = sprintf( __( 'You have %1$s and %2$s.' ), $blog_text, $user_text ); + + if ( $actions ) { + echo '
    '; + foreach ( $actions as $class => $action ) { + $actions[ $class ] = "\t
  • $action"; + } + echo implode( " |
  • \n", $actions ) . "\n"; + echo '
'; + } +?> +
+ +

+ + +
+

+ + 'submit_users' ) ); ?> +

+
+ +
+

+ + 'submit_sites' ) ); ?> +

+
+

' . __( 'Post published. View post | Edit post' ) . '

', esc_url( $view ), $edit ); + else + printf( '

' . __( 'Post submitted. Preview post | Edit post' ) . '

', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit ); + } else { + printf( '

' . __( 'Draft saved. Preview post | Edit post' ) . '

', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit ); + $drafts_query = new WP_Query( array( + 'post_type' => 'post', + 'post_status' => 'draft', + 'author' => $GLOBALS['current_user']->ID, + 'posts_per_page' => 1, + 'orderby' => 'modified', + 'order' => 'DESC' + ) ); + + if ( $drafts_query->posts ) + $drafts =& $drafts_query->posts; + } + printf('

' . __('You can also try %s, easy blogging from anywhere on the Web.') . '

', '' . __('Press This') . '' ); + $_REQUEST = array(); // hack for get_default_post_to_edit() + } + + /* Check if a new auto-draft (= no new post_ID) is needed or if the old can be used */ + $last_post_id = (int) get_user_option( 'dashboard_quick_press_last_post_id' ); // Get the last post_ID + if ( $last_post_id ) { + $post = get_post( $last_post_id ); + if ( empty( $post ) || $post->post_status != 'auto-draft' ) { // auto-draft doesn't exists anymore + $post = get_default_post_to_edit('post', true); + update_user_option( (int) $GLOBALS['current_user']->ID, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID + } else { + $post->post_title = ''; // Remove the auto draft title + } + } else { + $post = get_default_post_to_edit('post', true); + update_user_option( (int) $GLOBALS['current_user']->ID, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID + } + + $post_ID = (int) $post->ID; +?> + +
+

+
+ +
+ + +
+ +
+ + +

+
+ +
+ + + +

+
+ +
+ +

+ + + + + 'save-post', 'tabindex'=> 4 ) ); ?> + + + + + +
+

+ +
+ + 'post', + 'post_status' => 'draft', + 'author' => $GLOBALS['current_user']->ID, + 'posts_per_page' => 5, + 'orderby' => 'modified', + 'order' => 'DESC' + ) ); + $drafts =& $drafts_query->posts; + } + + if ( $drafts && is_array( $drafts ) ) { + $list = array(); + foreach ( $drafts as $draft ) { + $url = get_edit_post_link( $draft->ID ); + $title = _draft_or_post_title( $draft->ID ); + $item = "

" . esc_html($title) . " " . get_the_time( get_option( 'date_format' ), $draft ) . '

'; + if ( $the_content = preg_split( '#\s#', strip_tags( $draft->post_content ), 11, PREG_SPLIT_NO_EMPTY ) ) + $item .= '

' . join( ' ', array_slice( $the_content, 0, 10 ) ) . ( 10 < count( $the_content ) ? '…' : '' ) . '

'; + $list[] = $item; + } +?> +
    +
  • \n
  • ", $list ); ?>
  • +
+

+get_results( "SELECT * FROM $wpdb->comments c LEFT JOIN $wpdb->posts p ON c.comment_post_ID = p.ID WHERE p.post_status != 'trash' ORDER BY c.comment_date_gmt DESC LIMIT $start, 50" ) ) { + + foreach ( $possible as $comment ) { + if ( count( $comments ) >= $total_items ) + break; + if ( in_array( $comment->comment_approved, $allowed_states ) && current_user_can( 'read_post', $comment->comment_post_ID ) ) + $comments[] = $comment; + } + + $start = $start + 50; + } + + if ( $comments ) : +?> + +
+ + +
+ + + views(); ?> + + +

+ +comment_post_ID ); + $comment_post_title = strip_tags(get_the_title( $comment->comment_post_ID )); + $comment_post_link = "$comment_post_title"; + $comment_link = '#'; + + $actions_string = ''; + if ( current_user_can( 'edit_comment', $comment->comment_ID ) ) { + // preorder it: Approve | Reply | Edit | Spam | Trash + $actions = array( + 'approve' => '', 'unapprove' => '', + 'reply' => '', + 'edit' => '', + 'spam' => '', + 'trash' => '', 'delete' => '' + ); + + $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) ); + $approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) ); + + $approve_url = esc_url( "comment.php?action=approvecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" ); + $unapprove_url = esc_url( "comment.php?action=unapprovecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" ); + $spam_url = esc_url( "comment.php?action=spamcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); + $trash_url = esc_url( "comment.php?action=trashcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); + $delete_url = esc_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); + + $actions['approve'] = "" . __( 'Approve' ) . ''; + $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; + $actions['edit'] = "". __('Edit') . ''; + $actions['reply'] = '' . __('Reply') . ''; + $actions['spam'] = "" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . ''; + if ( !EMPTY_TRASH_DAYS ) + $actions['delete'] = "" . __('Delete Permanently') . ''; + else + $actions['trash'] = "" . _x('Trash', 'verb') . ''; + + $actions = apply_filters( 'comment_row_actions', array_filter($actions), $comment ); + + $i = 0; + foreach ( $actions as $action => $link ) { + ++$i; + ( ( ('approve' == $action || 'unapprove' == $action) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | '; + + // Reply and quickedit need a hide-if-no-js span + if ( 'reply' == $action || 'quickedit' == $action ) + $action .= ' hide-if-no-js'; + + $actions_string .= "$sep$link"; + } + } + +?> + +
comment_ID) ) ); ?>> + comment_type || 'comment' == $comment->comment_type ) : ?> + + + +
+

+ ' . get_comment_author_link() . '', $comment_post_link.' '.$comment_link, ' ' . __( '[Pending]' ) . '' ); ?> +

+ + comment_type ) : + case 'pingback' : + $type = __( 'Pingback' ); + break; + case 'trackback' : + $type = __( 'Trackback' ); + break; + default : + $type = ucwords( $comment->comment_type ); + endswitch; + $type = esc_html( $type ); + ?> +
+ +

$type", $comment_post_link." ".$comment_link ); ?>

+

+ + +

+

+
+
+'; + echo '

'; +} + +function wp_dashboard_incoming_links() { + wp_dashboard_cached_rss_widget( 'dashboard_incoming_links', 'wp_dashboard_incoming_links_output' ); +} + +/** + * Display incoming links dashboard widget content. + * + * @since 2.5.0 + */ +function wp_dashboard_incoming_links_output() { + $widgets = get_option( 'dashboard_widget_options' ); + @extract( @$widgets['dashboard_incoming_links'], EXTR_SKIP ); + $rss = fetch_feed( $url ); + + if ( is_wp_error($rss) ) { + if ( is_admin() || current_user_can('manage_options') ) { + echo '

'; + printf(__('RSS Error: %s'), $rss->get_error_message()); + echo '

'; + } + return; + } + + if ( !$rss->get_item_quantity() ) { + echo '

' . __('This dashboard widget queries Google Blog Search so that when another blog links to your site it will show up here. It has found no incoming links… yet. It’s okay — there is no rush.') . "

\n"; + $rss->__destruct(); + unset($rss); + return; + } + + echo "
    \n"; + + if ( !isset($items) ) + $items = 10; + + foreach ( $rss->get_items(0, $items) as $item ) { + $publisher = ''; + $site_link = ''; + $link = ''; + $content = ''; + $date = ''; + $link = esc_url( strip_tags( $item->get_link() ) ); + + $author = $item->get_author(); + if ( $author ) { + $site_link = esc_url( strip_tags( $author->get_link() ) ); + + if ( !$publisher = esc_html( strip_tags( $author->get_name() ) ) ) + $publisher = __( 'Somebody' ); + } else { + $publisher = __( 'Somebody' ); + } + if ( $site_link ) + $publisher = "$publisher"; + else + $publisher = "$publisher"; + + $content = $item->get_content(); + $content = wp_html_excerpt($content, 50) . ' ...'; + + if ( $link ) + /* translators: incoming links feed, %1$s is other person, %3$s is content */ + $text = __( '%1$s linked here saying, "%3$s"' ); + else + /* translators: incoming links feed, %1$s is other person, %3$s is content */ + $text = __( '%1$s linked here saying, "%3$s"' ); + + if ( !empty($show_date) ) { + if ( !empty($show_author) || !empty($show_summary) ) + /* translators: incoming links feed, %4$s is the date */ + $text .= ' ' . __( 'on %4$s' ); + $date = esc_html( strip_tags( $item->get_date() ) ); + $date = strtotime( $date ); + $date = gmdate( get_option( 'date_format' ), $date ); + } + + echo "\t
  • " . sprintf( $text, $publisher, $link, $content, $date ) . "
  • \n"; + } + + echo "
\n"; + $rss->__destruct(); + unset($rss); +} + +function wp_dashboard_incoming_links_control() { + wp_dashboard_rss_control( 'dashboard_incoming_links', array( 'title' => false, 'show_summary' => false, 'show_author' => false ) ); +} + +function wp_dashboard_primary() { + wp_dashboard_cached_rss_widget( 'dashboard_primary', 'wp_dashboard_rss_output' ); +} + +function wp_dashboard_primary_control() { + wp_dashboard_rss_control( 'dashboard_primary' ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param string $widget_id + */ +function wp_dashboard_rss_output( $widget_id ) { + $widgets = get_option( 'dashboard_widget_options' ); + echo '
'; + wp_widget_rss_output( $widgets[$widget_id] ); + echo "
"; +} + +function wp_dashboard_secondary() { + wp_dashboard_cached_rss_widget( 'dashboard_secondary', 'wp_dashboard_secondary_output' ); +} + +function wp_dashboard_secondary_control() { + wp_dashboard_rss_control( 'dashboard_secondary' ); +} + +/** + * Display secondary dashboard RSS widget feed. + * + * @since 2.5.0 + * + * @return unknown + */ +function wp_dashboard_secondary_output() { + $widgets = get_option( 'dashboard_widget_options' ); + @extract( @$widgets['dashboard_secondary'], EXTR_SKIP ); + $rss = @fetch_feed( $url ); + + if ( is_wp_error($rss) ) { + if ( is_admin() || current_user_can('manage_options') ) { + echo '

'; + printf(__('RSS Error: %s'), $rss->get_error_message()); + echo '

'; + } + } elseif ( !$rss->get_item_quantity() ) { + $rss->__destruct(); + unset($rss); + return false; + } else { + echo '
'; + wp_widget_rss_output( $rss, $widgets['dashboard_secondary'] ); + echo '
'; + $rss->__destruct(); + unset($rss); + } +} + +function wp_dashboard_plugins() { + wp_dashboard_cached_rss_widget( 'dashboard_plugins', 'wp_dashboard_plugins_output', array( + 'http://wordpress.org/extend/plugins/rss/browse/popular/', + 'http://wordpress.org/extend/plugins/rss/browse/new/', + 'http://wordpress.org/extend/plugins/rss/browse/updated/' + ) ); +} + +/** + * Display plugins most popular, newest plugins, and recently updated widget text. + * + * @since 2.5.0 + */ +function wp_dashboard_plugins_output() { + $popular = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/popular/' ); + $new = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/new/' ); + $updated = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/updated/' ); + + if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) { + $plugin_slugs = array_keys( get_plugins() ); + set_transient( 'plugin_slugs', $plugin_slugs, 86400 ); + } + + foreach ( array( 'popular' => __('Most Popular'), 'new' => __('Newest Plugins'), 'updated' => __('Recently Updated') ) as $feed => $label ) { + if ( is_wp_error($$feed) || !$$feed->get_item_quantity() ) + continue; + + $items = $$feed->get_items(0, 5); + + // Pick a random, non-installed plugin + while ( true ) { + // Abort this foreach loop iteration if there's no plugins left of this type + if ( 0 == count($items) ) + continue 2; + + $item_key = array_rand($items); + $item = $items[$item_key]; + + list($link, $frag) = explode( '#', $item->get_link() ); + + $link = esc_url($link); + if ( preg_match( '|/([^/]+?)/?$|', $link, $matches ) ) + $slug = $matches[1]; + else { + unset( $items[$item_key] ); + continue; + } + + // Is this random plugin's slug already installed? If so, try again. + reset( $plugin_slugs ); + foreach ( $plugin_slugs as $plugin_slug ) { + if ( $slug == substr( $plugin_slug, 0, strlen( $slug ) ) ) { + unset( $items[$item_key] ); + continue 2; + } + } + + // If we get to this point, then the random plugin isn't installed and we can stop the while(). + break; + } + + // Eliminate some common badly formed plugin descriptions + while ( ( null !== $item_key = array_rand($items) ) && false !== strpos( $items[$item_key]->get_description(), 'Plugin Name:' ) ) + unset($items[$item_key]); + + if ( !isset($items[$item_key]) ) + continue; + + // current bbPress feed item titles are: user on "topic title" + if ( preg_match( '/"(.*)"/s', $item->get_title(), $matches ) ) + $title = $matches[1]; + else // but let's make it forward compatible if things change + $title = $item->get_title(); + $title = esc_html( $title ); + + $description = esc_html( strip_tags(@html_entity_decode($item->get_description(), ENT_QUOTES, get_option('blog_charset'))) ); + + $ilink = wp_nonce_url('plugin-install.php?tab=plugin-information&plugin=' . $slug, 'install-plugin_' . $slug) . + '&TB_iframe=true&width=600&height=800'; + + echo "

$label

\n"; + echo "
$title
 (" . __( 'Install' ) . ")\n"; + echo "

$description

\n"; + + $$feed->__destruct(); + unset($$feed); + } +} + +/** + * Checks to see if all of the feed url in $check_urls are cached. + * + * If $check_urls is empty, look for the rss feed url found in the dashboard + * widget optios of $widget_id. If cached, call $callback, a function that + * echoes out output for this widget. If not cache, echo a "Loading..." stub + * which is later replaced by AJAX call (see top of /wp-admin/index.php) + * + * @since 2.5.0 + * + * @param string $widget_id + * @param callback $callback + * @param array $check_urls RSS feeds + * @return bool False on failure. True on success. + */ +function wp_dashboard_cached_rss_widget( $widget_id, $callback, $check_urls = array() ) { + $loading = '

' . __( 'Loading…' ) . '

' . __( 'This widget requires JavaScript.' ) . '

'; + $doing_ajax = ( defined('DOING_AJAX') && DOING_AJAX ); + + if ( empty($check_urls) ) { + $widgets = get_option( 'dashboard_widget_options' ); + if ( empty($widgets[$widget_id]['url']) && ! $doing_ajax ) { + echo $loading; + return false; + } + $check_urls = array( $widgets[$widget_id]['url'] ); + } + + $cache_key = 'dash_' . md5( $widget_id ); + if ( false !== ( $output = get_transient( $cache_key ) ) ) { + echo $output; + return true; + } + + if ( ! $doing_ajax ) { + echo $loading; + return false; + } + + if ( $callback && is_callable( $callback ) ) { + $args = array_slice( func_get_args(), 2 ); + array_unshift( $args, $widget_id ); + ob_start(); + call_user_func_array( $callback, $args ); + set_transient( $cache_key, ob_get_flush(), 43200); // Default lifetime in cache of 12 hours (same as the feeds) + } + + return true; +} + +/* Dashboard Widgets Controls */ + +// Calls widget_control callback +/** + * Calls widget control callback. + * + * @since 2.5.0 + * + * @param int $widget_control_id Registered Widget ID. + */ +function wp_dashboard_trigger_widget_control( $widget_control_id = false ) { + global $wp_dashboard_control_callbacks; + + if ( is_scalar($widget_control_id) && $widget_control_id && isset($wp_dashboard_control_callbacks[$widget_control_id]) && is_callable($wp_dashboard_control_callbacks[$widget_control_id]) ) { + call_user_func( $wp_dashboard_control_callbacks[$widget_control_id], '', array( 'id' => $widget_control_id, 'callback' => $wp_dashboard_control_callbacks[$widget_control_id] ) ); + } +} + +/** + * The RSS dashboard widget control. + * + * Sets up $args to be used as input to wp_widget_rss_form(). Handles POST data + * from RSS-type widgets. + * + * @since 2.5.0 + * + * @param string $widget_id + * @param array $form_inputs + */ +function wp_dashboard_rss_control( $widget_id, $form_inputs = array() ) { + if ( !$widget_options = get_option( 'dashboard_widget_options' ) ) + $widget_options = array(); + + if ( !isset($widget_options[$widget_id]) ) + $widget_options[$widget_id] = array(); + + $number = 1; // Hack to use wp_widget_rss_form() + $widget_options[$widget_id]['number'] = $number; + + if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget-rss'][$number]) ) { + $_POST['widget-rss'][$number] = stripslashes_deep( $_POST['widget-rss'][$number] ); + $widget_options[$widget_id] = wp_widget_rss_process( $_POST['widget-rss'][$number] ); + // title is optional. If black, fill it if possible + if ( !$widget_options[$widget_id]['title'] && isset($_POST['widget-rss'][$number]['title']) ) { + $rss = fetch_feed($widget_options[$widget_id]['url']); + if ( is_wp_error($rss) ) { + $widget_options[$widget_id]['title'] = htmlentities(__('Unknown Feed')); + } else { + $widget_options[$widget_id]['title'] = htmlentities(strip_tags($rss->get_title())); + $rss->__destruct(); + unset($rss); + } + } + update_option( 'dashboard_widget_options', $widget_options ); + $cache_key = 'dash_' . md5( $widget_id ); + delete_transient( $cache_key ); + } + + wp_widget_rss_form( $widget_options[$widget_id], $form_inputs ); +} + +// Display File upload quota on dashboard +function wp_dashboard_quota() { + if ( !is_multisite() || !current_user_can('upload_files') || get_site_option( 'upload_space_check_disabled' ) ) + return true; + + $quota = get_space_allowed(); + $used = get_dirsize( BLOGUPLOADDIR ) / 1024 / 1024; + + if ( $used > $quota ) + $percentused = '100'; + else + $percentused = ( $used / $quota ) * 100; + $used_color = ( $percentused >= 70 ) ? ' spam' : ''; + $used = round( $used, 2 ); + $percentused = number_format( $percentused ); + + ?> +

+
+ + + + + +
%2$sMB' ), esc_url( admin_url( 'upload.php' ) ), $quota ); ?>
+
+
+ + + + + +
%2$sMB (%3$s%%)' ), esc_url( admin_url( 'upload.php' ) ), $used, $percentused ); ?>
+
+
+ %s. Using an outdated browser makes your computer unsafe. For the best WordPress experience, please update your browser." ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ) ); + } else { + $msg = sprintf( __( "It looks like you're using an old version of %s. For the best WordPress experience, please update your browser." ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ) ); + } + + $browser_nag_class = ''; + if ( !empty( $response['img_src'] ) ) { + $img_src = ( is_ssl() && ! empty( $response['img_src_ssl'] ) )? $response['img_src_ssl'] : $response['img_src']; + + $notice .= '
'; + $browser_nag_class = ' has-browser-icon'; + } + $notice .= "

{$msg}

"; + $notice .= sprintf( __( '

Update %2$s or learn how to browse happy

' ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ), 'http://browsehappy.com/' ); + $notice .= '

' . __( 'Dismiss' ) . '

'; + $notice .= '
'; + } + + echo apply_filters( 'browse-happy-notice', $notice, $response ); +} + +function dashboard_browser_nag_class( $classes ) { + $response = wp_check_browser_version(); + + if ( $response && $response['insecure'] ) + $classes[] = 'browser-insecure'; + + return $classes; +} + +/** + * Check if the user needs a browser update + * + * @since 3.2.0 + * + * @return array|bool False on failure, array of browser data on success. + */ +function wp_check_browser_version() { + if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) + return false; + + $key = md5( $_SERVER['HTTP_USER_AGENT'] ); + + if ( false === ($response = get_site_transient('browser_' . $key) ) ) { + global $wp_version; + + $options = array( + 'body' => array( 'useragent' => $_SERVER['HTTP_USER_AGENT'] ), + 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) + ); + + $response = wp_remote_post( 'http://api.wordpress.org/core/browse-happy/1.0/', $options ); + + if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) + return false; + + /** + * Response should be an array with: + * 'name' - string - A user friendly browser name + * 'version' - string - The most recent version of the browser + * 'current_version' - string - The version of the browser the user is using + * 'upgrade' - boolean - Whether the browser needs an upgrade + * 'insecure' - boolean - Whether the browser is deemed insecure + * 'upgrade_url' - string - The url to visit to upgrade + * 'img_src' - string - An image representing the browser + * 'img_src_ssl' - string - An image (over SSL) representing the browser + */ + $response = unserialize( wp_remote_retrieve_body( $response ) ); + + if ( ! $response ) + return false; + + set_site_transient( 'browser_' . $key, $response, 604800 ); // cache for 1 week + } + + return $response; +} + +/** + * Empty function usable by plugins to output empty dashboard widget (to be populated later by JS). + */ +function wp_dashboard_empty() {} + +?> diff --git a/src/wp-admin/includes/deprecated.php b/src/wp-admin/includes/deprecated.php new file mode 100644 index 0000000..3e02dbc --- /dev/null +++ b/src/wp-admin/includes/deprecated.php @@ -0,0 +1,703 @@ + 0) ); + + if ( $categories ) { + foreach ( $categories as $category ) { + if ( $currentcat != $category->term_id && $parent == $category->parent) { + $pad = str_repeat( '– ', $level ); + $category->name = esc_html( $category->name ); + echo "\n\t"; + wp_dropdown_cats( $currentcat, $currentparent, $category->term_id, $level +1, $categories ); + } + } + } else { + return false; + } +} + +/** + * Register a setting and its sanitization callback + * + * @since 2.7.0 + * @deprecated 3.0.0 + * @deprecated Use register_setting() + * @see register_setting() + * + * @param string $option_group A settings group name. Should correspond to a whitelisted option key name. + * Default whitelisted option key names include "general," "discussion," and "reading," among others. + * @param string $option_name The name of an option to sanitize and save. + * @param unknown_type $sanitize_callback A callback function that sanitizes the option's value. + * @return unknown + */ +function add_option_update_handler( $option_group, $option_name, $sanitize_callback = '' ) { + _deprecated_function( __FUNCTION__, '3.0', 'register_setting()' ); + return register_setting( $option_group, $option_name, $sanitize_callback ); +} + +/** + * Unregister a setting + * + * @since 2.7.0 + * @deprecated 3.0.0 + * @deprecated Use unregister_setting() + * @see unregister_setting() + * + * @param unknown_type $option_group + * @param unknown_type $option_name + * @param unknown_type $sanitize_callback + * @return unknown + */ +function remove_option_update_handler( $option_group, $option_name, $sanitize_callback = '' ) { + _deprecated_function( __FUNCTION__, '3.0', 'unregister_setting()' ); + return unregister_setting( $option_group, $option_name, $sanitize_callback ); +} + +/** + * Determines the language to use for CodePress syntax highlighting. + * + * @since 2.8.0 + * @deprecated 3.0.0 + * + * @param string $filename +**/ +function codepress_get_lang( $filename ) { + _deprecated_function( __FUNCTION__, '3.0' ); + return; +} + +/** + * Adds Javascript required to make CodePress work on the theme/plugin editors. + * + * @since 2.8.0 + * @deprecated 3.0.0 +**/ +function codepress_footer_js() { + _deprecated_function( __FUNCTION__, '3.0' ); + return; +} + +/** + * Determine whether to use CodePress. + * + * @since 2.8 + * @deprecated 3.0.0 +**/ +function use_codepress() { + _deprecated_function( __FUNCTION__, '3.0' ); + return; +} + + +/** + * @deprecated 3.1.0 + * + * @return array List of user IDs. + */ +function get_author_user_ids() { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb; + if ( !is_multisite() ) + $level_key = $wpdb->get_blog_prefix() . 'user_level'; + else + $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels + + return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value != '0'", $level_key) ); +} + +/** + * @deprecated 3.1.0 + * + * @param int $user_id User ID. + * @return array|bool List of editable authors. False if no editable users. + */ +function get_editable_authors( $user_id ) { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb; + + $editable = get_editable_user_ids( $user_id ); + + if ( !$editable ) { + return false; + } else { + $editable = join(',', $editable); + $authors = $wpdb->get_results( "SELECT * FROM $wpdb->users WHERE ID IN ($editable) ORDER BY display_name" ); + } + + return apply_filters('get_editable_authors', $authors); +} + +/** + * @deprecated 3.1.0 + * + * @param int $user_id User ID. + * @param bool $exclude_zeros Optional, default is true. Whether to exclude zeros. + * @return unknown + */ +function get_editable_user_ids( $user_id, $exclude_zeros = true, $post_type = 'post' ) { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb; + + $user = new WP_User( $user_id ); + $post_type_obj = get_post_type_object($post_type); + + if ( ! $user->has_cap($post_type_obj->cap->edit_others_posts) ) { + if ( $user->has_cap($post_type_obj->cap->edit_posts) || ! $exclude_zeros ) + return array($user->id); + else + return array(); + } + + if ( !is_multisite() ) + $level_key = $wpdb->get_blog_prefix() . 'user_level'; + else + $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels + + $query = $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s", $level_key); + if ( $exclude_zeros ) + $query .= " AND meta_value != '0'"; + + return $wpdb->get_col( $query ); +} + +/** + * @deprecated 3.1.0 + */ +function get_nonauthor_user_ids() { + _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); + + global $wpdb; + + if ( !is_multisite() ) + $level_key = $wpdb->get_blog_prefix() . 'user_level'; + else + $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels + + return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value = '0'", $level_key) ); +} + +if ( !class_exists('WP_User_Search') ) : +/** + * WordPress User Search class. + * + * @since 2.1.0 + * @deprecated 3.1.0 + */ +class WP_User_Search { + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var unknown_type + */ + var $results; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var unknown_type + */ + var $search_term; + + /** + * Page number. + * + * @since 2.1.0 + * @access private + * @var int + */ + var $page; + + /** + * Role name that users have. + * + * @since 2.5.0 + * @access private + * @var string + */ + var $role; + + /** + * Raw page number. + * + * @since 2.1.0 + * @access private + * @var int|bool + */ + var $raw_page; + + /** + * Amount of users to display per page. + * + * @since 2.1.0 + * @access public + * @var int + */ + var $users_per_page = 50; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var unknown_type + */ + var $first_user; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var int + */ + var $last_user; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var string + */ + var $query_limit; + + /** + * {@internal Missing Description}} + * + * @since 3.0.0 + * @access private + * @var string + */ + var $query_orderby; + + /** + * {@internal Missing Description}} + * + * @since 3.0.0 + * @access private + * @var string + */ + var $query_from; + + /** + * {@internal Missing Description}} + * + * @since 3.0.0 + * @access private + * @var string + */ + var $query_where; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var int + */ + var $total_users_for_query = 0; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var bool + */ + var $too_many_total_users = false; + + /** + * {@internal Missing Description}} + * + * @since 2.1.0 + * @access private + * @var unknown_type + */ + var $search_errors; + + /** + * {@internal Missing Description}} + * + * @since 2.7.0 + * @access private + * @var unknown_type + */ + var $paging_text; + + /** + * PHP4 Constructor - Sets up the object properties. + * + * @since 2.1.0 + * + * @param string $search_term Search terms string. + * @param int $page Optional. Page ID. + * @param string $role Role name. + * @return WP_User_Search + */ + function WP_User_Search ($search_term = '', $page = '', $role = '') { + _deprecated_function( __FUNCTION__, '3.1', 'WP_User_Query' ); + + $this->search_term = stripslashes( $search_term ); + $this->raw_page = ( '' == $page ) ? false : (int) $page; + $this->page = (int) ( '' == $page ) ? 1 : $page; + $this->role = $role; + + $this->prepare_query(); + $this->query(); + $this->prepare_vars_for_template_usage(); + $this->do_paging(); + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + */ + function prepare_query() { + global $wpdb; + $this->first_user = ($this->page - 1) * $this->users_per_page; + + $this->query_limit = $wpdb->prepare(" LIMIT %d, %d", $this->first_user, $this->users_per_page); + $this->query_orderby = ' ORDER BY user_login'; + + $search_sql = ''; + if ( $this->search_term ) { + $searches = array(); + $search_sql = 'AND ('; + foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col ) + $searches[] = $wpdb->prepare( $col . ' LIKE %s', '%' . like_escape($this->search_term) . '%' ); + $search_sql .= implode(' OR ', $searches); + $search_sql .= ')'; + } + + $this->query_from = " FROM $wpdb->users"; + $this->query_where = " WHERE 1=1 $search_sql"; + + if ( $this->role ) { + $this->query_from .= " INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id"; + $this->query_where .= $wpdb->prepare(" AND $wpdb->usermeta.meta_key = '{$wpdb->prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%'); + } elseif ( is_multisite() ) { + $level_key = $wpdb->prefix . 'capabilities'; // wpmu site admins don't have user_levels + $this->query_from .= ", $wpdb->usermeta"; + $this->query_where .= " AND $wpdb->users.ID = $wpdb->usermeta.user_id AND meta_key = '{$level_key}'"; + } + + do_action_ref_array( 'pre_user_search', array( &$this ) ); + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + */ + function query() { + global $wpdb; + + $this->results = $wpdb->get_col("SELECT DISTINCT($wpdb->users.ID)" . $this->query_from . $this->query_where . $this->query_orderby . $this->query_limit); + + if ( $this->results ) + $this->total_users_for_query = $wpdb->get_var("SELECT COUNT(DISTINCT($wpdb->users.ID))" . $this->query_from . $this->query_where); // no limit + else + $this->search_errors = new WP_Error('no_matching_users_found', __('No matching users were found!')); + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + */ + function prepare_vars_for_template_usage() { + $this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + */ + function do_paging() { + if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results + $args = array(); + if( ! empty($this->search_term) ) + $args['usersearch'] = urlencode($this->search_term); + if( ! empty($this->role) ) + $args['role'] = urlencode($this->role); + + $this->paging_text = paginate_links( array( + 'total' => ceil($this->total_users_for_query / $this->users_per_page), + 'current' => $this->page, + 'base' => 'users.php?%_%', + 'format' => 'userspage=%#%', + 'add_args' => $args + ) ); + if ( $this->paging_text ) { + $this->paging_text = sprintf( '' . __( 'Displaying %s–%s of %s' ) . '%s', + number_format_i18n( ( $this->page - 1 ) * $this->users_per_page + 1 ), + number_format_i18n( min( $this->page * $this->users_per_page, $this->total_users_for_query ) ), + number_format_i18n( $this->total_users_for_query ), + $this->paging_text + ); + } + } + } + + /** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * @access public + * + * @return unknown + */ + function get_results() { + return (array) $this->results; + } + + /** + * Displaying paging text. + * + * @see do_paging() Builds paging text. + * + * @since 2.1.0 + * @access public + */ + function page_links() { + echo $this->paging_text; + } + + /** + * Whether paging is enabled. + * + * @see do_paging() Builds paging text. + * + * @since 2.1.0 + * @access public + * + * @return bool + */ + function results_are_paged() { + if ( $this->paging_text ) + return true; + return false; + } + + /** + * Whether there are search terms. + * + * @since 2.1.0 + * @access public + * + * @return bool + */ + function is_search() { + if ( $this->search_term ) + return true; + return false; + } +} +endif; + +/** + * Retrieve editable posts from other users. + * + * @deprecated 3.1.0 + * + * @param int $user_id User ID to not retrieve posts from. + * @param string $type Optional, defaults to 'any'. Post type to retrieve, can be 'draft' or 'pending'. + * @return array List of posts from others. + */ +function get_others_unpublished_posts($user_id, $type='any') { + _deprecated_function( __FUNCTION__, '3.1' ); + + global $wpdb; + + $editable = get_editable_user_ids( $user_id ); + + if ( in_array($type, array('draft', 'pending')) ) + $type_sql = " post_status = '$type' "; + else + $type_sql = " ( post_status = 'draft' OR post_status = 'pending' ) "; + + $dir = ( 'pending' == $type ) ? 'ASC' : 'DESC'; + + if ( !$editable ) { + $other_unpubs = ''; + } else { + $editable = join(',', $editable); + $other_unpubs = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title, post_author FROM $wpdb->posts WHERE post_type = 'post' AND $type_sql AND post_author IN ($editable) AND post_author != %d ORDER BY post_modified $dir", $user_id) ); + } + + return apply_filters('get_others_drafts', $other_unpubs); +} + +/** + * Retrieve drafts from other users. + * + * @deprecated 3.1.0 + * + * @param int $user_id User ID. + * @return array List of drafts from other users. + */ +function get_others_drafts($user_id) { + _deprecated_function( __FUNCTION__, '3.1' ); + + return get_others_unpublished_posts($user_id, 'draft'); +} + +/** + * Retrieve pending review posts from other users. + * + * @deprecated 3.1.0 + * + * @param int $user_id User ID. + * @return array List of posts with pending review post type from other users. + */ +function get_others_pending($user_id) { + _deprecated_function( __FUNCTION__, '3.1' ); + + return get_others_unpublished_posts($user_id, 'pending'); +} + +/** + * Output the QuickPress dashboard widget. + * + * @since 3.0.0 + * @deprecated 3.2.0 + * @deprecated Use wp_dashboard_quick_press() + * @see wp_dashboard_quick_press() + */ +function wp_dashboard_quick_press_output() { + _deprecated_function( __FUNCTION__, '3.2', 'wp_dashboard_quick_press()' ); + wp_dashboard_quick_press(); +} diff --git a/src/wp-admin/includes/export.php b/src/wp-admin/includes/export.php new file mode 100644 index 0000000..cfdc3dd --- /dev/null +++ b/src/wp-admin/includes/export.php @@ -0,0 +1,425 @@ + 'all', 'author' => false, 'category' => false, + 'start_date' => false, 'end_date' => false, 'status' => false, + ); + $args = wp_parse_args( $args, $defaults ); + + do_action( 'export_wp' ); + + $sitename = sanitize_key( get_bloginfo( 'name' ) ); + if ( ! empty($sitename) ) $sitename .= '.'; + $filename = $sitename . 'wordpress.' . date( 'Y-m-d' ) . '.xml'; + + header( 'Content-Description: File Transfer' ); + header( 'Content-Disposition: attachment; filename=' . $filename ); + header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), true ); + + if ( 'all' != $args['content'] && post_type_exists( $args['content'] ) ) { + $ptype = get_post_type_object( $args['content'] ); + if ( ! $ptype->can_export ) + $args['content'] = 'post'; + + $where = $wpdb->prepare( "{$wpdb->posts}.post_type = %s", $args['content'] ); + } else { + $post_types = get_post_types( array( 'can_export' => true ) ); + $esses = array_fill( 0, count($post_types), '%s' ); + $where = $wpdb->prepare( "{$wpdb->posts}.post_type IN (" . implode( ',', $esses ) . ')', $post_types ); + } + + if ( $args['status'] && ( 'post' == $args['content'] || 'page' == $args['content'] ) ) + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_status = %s", $args['status'] ); + else + $where .= " AND {$wpdb->posts}.post_status != 'auto-draft'"; + + $join = ''; + if ( $args['category'] && 'post' == $args['content'] ) { + if ( $term = term_exists( $args['category'], 'category' ) ) { + $join = "INNER JOIN {$wpdb->term_relationships} ON ({$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id)"; + $where .= $wpdb->prepare( " AND {$wpdb->term_relationships}.term_taxonomy_id = %d", $term['term_taxonomy_id'] ); + } + } + + if ( 'post' == $args['content'] || 'page' == $args['content'] ) { + if ( $args['author'] ) + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_author = %d", $args['author'] ); + + if ( $args['start_date'] ) + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date >= %s", date( 'Y-m-d', strtotime($args['start_date']) ) ); + + if ( $args['end_date'] ) + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date < %s", date( 'Y-m-d', strtotime('+1 month', strtotime($args['end_date'])) ) ); + } + + // grab a snapshot of post IDs, just in case it changes during the export + $post_ids = $wpdb->get_col( "SELECT ID FROM {$wpdb->posts} $join WHERE $where" ); + + // get the requested terms ready, empty unless posts filtered by category or all content + $cats = $tags = $terms = array(); + if ( isset( $term ) && $term ) { + $cat = get_term( $term['term_id'], 'category' ); + $cats = array( $cat->term_id => $cat ); + unset( $term, $cat ); + } else if ( 'all' == $args['content'] ) { + $categories = (array) get_categories( array( 'get' => 'all' ) ); + $tags = (array) get_tags( array( 'get' => 'all' ) ); + + $custom_taxonomies = get_taxonomies( array( '_builtin' => false ) ); + $custom_terms = (array) get_terms( $custom_taxonomies, array( 'get' => 'all' ) ); + + // put categories in order with no child going before its parent + while ( $cat = array_shift( $categories ) ) { + if ( $cat->parent == 0 || isset( $cats[$cat->parent] ) ) + $cats[$cat->term_id] = $cat; + else + $categories[] = $cat; + } + + // put terms in order with no child going before its parent + while ( $t = array_shift( $custom_terms ) ) { + if ( $t->parent == 0 || isset( $terms[$t->parent] ) ) + $terms[$t->term_id] = $t; + else + $custom_terms[] = $t; + } + + unset( $categories, $custom_taxonomies, $custom_terms ); + } + + /** + * Wrap given string in XML CDATA tag. + * + * @since 2.1.0 + * + * @param string $str String to wrap in XML CDATA tag. + */ + function wxr_cdata( $str ) { + if ( seems_utf8( $str ) == false ) + $str = utf8_encode( $str ); + + // $str = ent2ncr(esc_html($str)); + $str = "'; + + return $str; + } + + /** + * Return the URL of the site + * + * @since 2.5.0 + * + * @return string Site URL. + */ + function wxr_site_url() { + // ms: the base url + if ( is_multisite() ) + return network_home_url(); + // wp: the blog url + else + return get_bloginfo_rss( 'url' ); + } + + /** + * Output a cat_name XML tag from a given category object + * + * @since 2.1.0 + * + * @param object $category Category Object + */ + function wxr_cat_name( $category ) { + if ( empty( $category->name ) ) + return; + + echo '' . wxr_cdata( $category->name ) . ''; + } + + /** + * Output a category_description XML tag from a given category object + * + * @since 2.1.0 + * + * @param object $category Category Object + */ + function wxr_category_description( $category ) { + if ( empty( $category->description ) ) + return; + + echo '' . wxr_cdata( $category->description ) . ''; + } + + /** + * Output a tag_name XML tag from a given tag object + * + * @since 2.3.0 + * + * @param object $tag Tag Object + */ + function wxr_tag_name( $tag ) { + if ( empty( $tag->name ) ) + return; + + echo '' . wxr_cdata( $tag->name ) . ''; + } + + /** + * Output a tag_description XML tag from a given tag object + * + * @since 2.3.0 + * + * @param object $tag Tag Object + */ + function wxr_tag_description( $tag ) { + if ( empty( $tag->description ) ) + return; + + echo '' . wxr_cdata( $tag->description ) . ''; + } + + /** + * Output a term_name XML tag from a given term object + * + * @since 2.9.0 + * + * @param object $term Term Object + */ + function wxr_term_name( $term ) { + if ( empty( $term->name ) ) + return; + + echo '' . wxr_cdata( $term->name ) . ''; + } + + /** + * Output a term_description XML tag from a given term object + * + * @since 2.9.0 + * + * @param object $term Term Object + */ + function wxr_term_description( $term ) { + if ( empty( $term->description ) ) + return; + + echo '' . wxr_cdata( $term->description ) . ''; + } + + /** + * Output list of authors with posts + * + * @since 3.1.0 + */ + function wxr_authors_list() { + global $wpdb; + + $authors = array(); + $results = $wpdb->get_results( "SELECT DISTINCT post_author FROM $wpdb->posts" ); + foreach ( (array) $results as $result ) + $authors[] = get_userdata( $result->post_author ); + + $authors = array_filter( $authors ); + + foreach( $authors as $author ) { + echo "\t"; + echo '' . $author->ID . ''; + echo '' . $author->user_login . ''; + echo '' . $author->user_email . ''; + echo '' . wxr_cdata( $author->display_name ) . ''; + echo '' . wxr_cdata( $author->user_firstname ) . ''; + echo '' . wxr_cdata( $author->user_lastname ) . ''; + echo "\n"; + } + } + + /** + * Ouput all navigation menu terms + * + * @since 3.1.0 + */ + function wxr_nav_menu_terms() { + $nav_menus = wp_get_nav_menus(); + if ( empty( $nav_menus ) || ! is_array( $nav_menus ) ) + return; + + foreach ( $nav_menus as $menu ) { + echo "\t{$menu->term_id}nav_menu{$menu->slug}"; + wxr_term_name( $menu ); + echo "\n"; + } + } + + /** + * Output list of taxonomy terms, in XML tag format, associated with a post + * + * @since 2.3.0 + */ + function wxr_post_taxonomy() { + global $post; + + $taxonomies = get_object_taxonomies( $post->post_type ); + if ( empty( $taxonomies ) ) + return; + $terms = wp_get_object_terms( $post->ID, $taxonomies ); + + foreach ( (array) $terms as $term ) { + echo "\t\ttaxonomy}\" nicename=\"{$term->slug}\">" . wxr_cdata( $term->name ) . "\n"; + } + } + + echo '\n"; + + ?> + + + + + + + + + + + + + + + + + + + + + + <?php bloginfo_rss( 'name' ); ?> + + + + + + + + + + + + term_id ?>slug; ?>parent ? $cats[$c->parent]->slug : ''; ?> + + + term_id ?>slug; ?> + + + term_id ?>taxonomy; ?>slug; ?>parent ? $terms[$t->parent]->slug : ''; ?> + + + + + +in_the_loop = true; // Fake being in the loop. + + // fetch 20 posts at a time rather than loading the entire table into memory + while ( $next_posts = array_splice( $post_ids, 0, 20 ) ) { + $where = 'WHERE ID IN (' . join( ',', $next_posts ) . ')'; + $posts = $wpdb->get_results( "SELECT * FROM {$wpdb->posts} $where" ); + + // Begin Loop + foreach ( $posts as $post ) { + setup_postdata( $post ); + $is_sticky = is_sticky( $post->ID ) ? 1 : 0; +?> + + <?php echo apply_filters( 'the_title_rss', $post->post_title ); ?> + + + + + + post_content ) ); ?> + post_excerpt ) ); ?> + ID; ?> + post_date; ?> + post_date_gmt; ?> + comment_status; ?> + ping_status; ?> + post_name; ?> + post_status; ?> + post_parent; ?> + menu_order; ?> + post_type; ?> + post_password; ?> + +post_type == 'attachment' ) : ?> + ID ); ?> + + +get_results( $wpdb->prepare( "SELECT * FROM $wpdb->postmeta WHERE post_id = %d", $post->ID ) ); + foreach( $postmeta as $meta ) : if ( $meta->meta_key != '_edit_lock' ) : ?> + + meta_key; ?> + meta_value ); ?> + + +get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved <> 'spam'", $post->ID ) ); + foreach ( $comments as $c ) : ?> + + comment_ID; ?> + comment_author ); ?> + comment_author_email; ?> + comment_author_url ); ?> + comment_author_IP; ?> + comment_date; ?> + comment_date_gmt; ?> + comment_content ) ?> + comment_approved; ?> + comment_type; ?> + comment_parent; ?> + user_id; ?> +get_results( $wpdb->prepare( "SELECT * FROM $wpdb->commentmeta WHERE comment_id = %d", $c->comment_ID ) ); + foreach ( $c_meta as $meta ) : ?> + + meta_key; ?> + meta_value ); ?> + + + + + + + + + __( 'Main Index Template' ), + 'style.css' => __( 'Stylesheet' ), + 'editor-style.css' => __( 'Visual Editor Stylesheet' ), + 'editor-style-rtl.css' => __( 'Visual Editor RTL Stylesheet' ), + 'rtl.css' => __( 'RTL Stylesheet' ), + 'comments.php' => __( 'Comments' ), + 'comments-popup.php' => __( 'Popup Comments' ), + 'footer.php' => __( 'Footer' ), + 'header.php' => __( 'Header' ), + 'sidebar.php' => __( 'Sidebar' ), + 'archive.php' => __( 'Archives' ), + 'author.php' => __( 'Author Template' ), + 'tag.php' => __( 'Tag Template' ), + 'category.php' => __( 'Category Template' ), + 'page.php' => __( 'Page Template' ), + 'search.php' => __( 'Search Results' ), + 'searchform.php' => __( 'Search Form' ), + 'single.php' => __( 'Single Post' ), + '404.php' => __( '404 Template' ), + 'link.php' => __( 'Links Template' ), + 'functions.php' => __( 'Theme Functions' ), + 'attachment.php' => __( 'Attachment Template' ), + 'image.php' => __('Image Attachment Template'), + 'video.php' => __('Video Attachment Template'), + 'audio.php' => __('Audio Attachment Template'), + 'application.php' => __('Application Attachment Template'), + 'my-hacks.php' => __( 'my-hacks.php (legacy hacks support)' ), + '.htaccess' => __( '.htaccess (for rewrite rules )' ), + // Deprecated files + 'wp-layout.css' => __( 'Stylesheet' ), + 'wp-comments.php' => __( 'Comments Template' ), + 'wp-comments-popup.php' => __( 'Popup Comments Template' ), +); + +/** + * Get the description for standard WordPress theme files and other various standard + * WordPress files + * + * @since 1.5.0 + * + * @uses _cleanup_header_comment + * @uses $wp_file_descriptions + * @param string $file Filesystem path or filename + * @return string Description of file from $wp_file_descriptions or basename of $file if description doesn't exist + */ +function get_file_description( $file ) { + global $wp_file_descriptions; + + if ( isset( $wp_file_descriptions[basename( $file )] ) ) { + return $wp_file_descriptions[basename( $file )]; + } + elseif ( file_exists( $file ) && is_file( $file ) ) { + $template_data = implode( '', file( $file ) ); + if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name )) + return sprintf( __( '%s Page Template' ), _cleanup_header_comment($name[1]) ); + } + + return basename( $file ); +} + +/** + * Get the absolute filesystem path to the root of the WordPress installation + * + * @since 1.5.0 + * + * @uses get_option + * @return string Full filesystem path to the root of the WordPress installation + */ +function get_home_path() { + $home = get_option( 'home' ); + $siteurl = get_option( 'siteurl' ); + if ( $home != '' && $home != $siteurl ) { + $wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */ + $pos = strpos($_SERVER["SCRIPT_FILENAME"], $wp_path_rel_to_home); + $home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos); + $home_path = trailingslashit( $home_path ); + } else { + $home_path = ABSPATH; + } + + return $home_path; +} + +/** + * Get the real file system path to a file to edit within the admin + * + * If the $file is index.php or .htaccess this function will assume it is relative + * to the install root, otherwise it is assumed the file is relative to the wp-content + * directory + * + * @since 1.5.0 + * + * @uses get_home_path + * @uses WP_CONTENT_DIR full filesystem path to the wp-content directory + * @param string $file filesystem path relative to the WordPress install directory or to the wp-content directory + * @return string full file system path to edit + */ +function get_real_file_to_edit( $file ) { + if ('index.php' == $file || '.htaccess' == $file ) { + $real_file = get_home_path() . $file; + } else { + $real_file = WP_CONTENT_DIR . $file; + } + + return $real_file; +} + +/** + * Returns a listing of all files in the specified folder and all subdirectories up to 100 levels deep. + * The depth of the recursiveness can be controlled by the $levels param. + * + * @since 2.6.0 + * + * @param string $folder Full path to folder + * @param int $levels (optional) Levels of folders to follow, Default: 100 (PHP Loop limit). + * @return bool|array False on failure, Else array of files + */ +function list_files( $folder = '', $levels = 100 ) { + if ( empty($folder) ) + return false; + + if ( ! $levels ) + return false; + + $files = array(); + if ( $dir = @opendir( $folder ) ) { + while (($file = readdir( $dir ) ) !== false ) { + if ( in_array($file, array('.', '..') ) ) + continue; + if ( is_dir( $folder . '/' . $file ) ) { + $files2 = list_files( $folder . '/' . $file, $levels - 1); + if ( $files2 ) + $files = array_merge($files, $files2 ); + else + $files[] = $folder . '/' . $file . '/'; + } else { + $files[] = $folder . '/' . $file; + } + } + } + @closedir( $dir ); + return $files; +} + +/** + * Returns a filename of a Temporary unique file. + * Please note that the calling function must unlink() this itself. + * + * The filename is based off the passed parameter or defaults to the current unix timestamp, + * while the directory can either be passed as well, or by leaving it blank, default to a writable temporary directory. + * + * @since 2.6.0 + * + * @param string $filename (optional) Filename to base the Unique file off + * @param string $dir (optional) Directory to store the file in + * @return string a writable filename + */ +function wp_tempnam($filename = '', $dir = '') { + if ( empty($dir) ) + $dir = get_temp_dir(); + $filename = basename($filename); + if ( empty($filename) ) + $filename = time(); + + $filename = preg_replace('|\..*$|', '.tmp', $filename); + $filename = $dir . wp_unique_filename($dir, $filename); + touch($filename); + return $filename; +} + +/** + * Make sure that the file that was requested to edit, is allowed to be edited + * + * Function will die if if you are not allowed to edit the file + * + * @since 1.5.0 + * + * @uses wp_die + * @uses validate_file + * @param string $file file the users is attempting to edit + * @param array $allowed_files Array of allowed files to edit, $file must match an entry exactly + * @return null + */ +function validate_file_to_edit( $file, $allowed_files = '' ) { + $code = validate_file( $file, $allowed_files ); + + if (!$code ) + return $file; + + switch ( $code ) { + case 1 : + wp_die( __('Sorry, can’t edit files with “..” in the name. If you are trying to edit a file in your WordPress home directory, you can just type the name of the file in.' )); + + //case 2 : + // wp_die( __('Sorry, can’t call files with their real path.' )); + + case 3 : + wp_die( __('Sorry, that file cannot be edited.' )); + } +} + +/** + * Handle PHP uploads in WordPress, sanitizing file names, checking extensions for mime type, + * and moving the file to the appropriate directory within the uploads directory. + * + * @since 2.0 + * + * @uses wp_handle_upload_error + * @uses apply_filters + * @uses is_multisite + * @uses wp_check_filetype_and_ext + * @uses current_user_can + * @uses wp_upload_dir + * @uses wp_unique_filename + * @uses delete_transient + * @param array $file Reference to a single element of $_FILES. Call the function once for each uploaded file. + * @param array $overrides Optional. An associative array of names=>values to override default variables with extract( $overrides, EXTR_OVERWRITE ). + * @return array On success, returns an associative array of file attributes. On failure, returns $overrides['upload_error_handler'](&$file, $message ) or array( 'error'=>$message ). + */ +function wp_handle_upload( &$file, $overrides = false, $time = null ) { + // The default error handler. + if ( ! function_exists( 'wp_handle_upload_error' ) ) { + function wp_handle_upload_error( &$file, $message ) { + return array( 'error'=>$message ); + } + } + + $file = apply_filters( 'wp_handle_upload_prefilter', $file ); + + // You may define your own function and pass the name in $overrides['upload_error_handler'] + $upload_error_handler = 'wp_handle_upload_error'; + + // You may have had one or more 'wp_handle_upload_prefilter' functions error out the file. Handle that gracefully. + if ( isset( $file['error'] ) && !is_numeric( $file['error'] ) && $file['error'] ) + return $upload_error_handler( $file, $file['error'] ); + + // You may define your own function and pass the name in $overrides['unique_filename_callback'] + $unique_filename_callback = null; + + // $_POST['action'] must be set and its value must equal $overrides['action'] or this: + $action = 'wp_handle_upload'; + + // Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}]['error']. + $upload_error_strings = array( false, + __( "The uploaded file exceeds the upload_max_filesize directive in php.ini." ), + __( "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form." ), + __( "The uploaded file was only partially uploaded." ), + __( "No file was uploaded." ), + '', + __( "Missing a temporary folder." ), + __( "Failed to write file to disk." ), + __( "File upload stopped by extension." )); + + // All tests are on by default. Most can be turned off by $override[{test_name}] = false; + $test_form = true; + $test_size = true; + $test_upload = true; + + // If you override this, you must provide $ext and $type!!!! + $test_type = true; + $mimes = false; + + // Install user overrides. Did we mention that this voids your warranty? + if ( is_array( $overrides ) ) + extract( $overrides, EXTR_OVERWRITE ); + + // A correct form post will pass this test. + if ( $test_form && (!isset( $_POST['action'] ) || ($_POST['action'] != $action ) ) ) + return call_user_func($upload_error_handler, $file, __( 'Invalid form submission.' )); + + // A successful upload will pass this test. It makes no sense to override this one. + if ( $file['error'] > 0 ) + return call_user_func($upload_error_handler, $file, $upload_error_strings[$file['error']] ); + + // A non-empty file will pass this test. + if ( $test_size && !($file['size'] > 0 ) ) { + if ( is_multisite() ) + $error_msg = __( 'File is empty. Please upload something more substantial.' ); + else + $error_msg = __( 'File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini or by post_max_size being defined as smaller than upload_max_filesize in php.ini.' ); + return call_user_func($upload_error_handler, $file, $error_msg); + } + + // A properly uploaded file will pass this test. There should be no reason to override this one. + if ( $test_upload && ! @ is_uploaded_file( $file['tmp_name'] ) ) + return call_user_func($upload_error_handler, $file, __( 'Specified file failed upload test.' )); + + // A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter. + if ( $test_type ) { + $wp_filetype = wp_check_filetype_and_ext( $file['tmp_name'], $file['name'], $mimes ); + + extract( $wp_filetype ); + + // Check to see if wp_check_filetype_and_ext() determined the filename was incorrect + if ( $proper_filename ) + $file['name'] = $proper_filename; + + if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) ) + return call_user_func($upload_error_handler, $file, __( 'Sorry, this file type is not permitted for security reasons.' )); + + if ( !$ext ) + $ext = ltrim(strrchr($file['name'], '.'), '.'); + + if ( !$type ) + $type = $file['type']; + } else { + $type = ''; + } + + // A writable uploads dir will pass this test. Again, there's no point overriding this one. + if ( ! ( ( $uploads = wp_upload_dir($time) ) && false === $uploads['error'] ) ) + return call_user_func($upload_error_handler, $file, $uploads['error'] ); + + $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback ); + + // Move the file to the uploads dir + $new_file = $uploads['path'] . "/$filename"; + if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) ) + return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) ); + + // Set correct file permissions + $stat = stat( dirname( $new_file )); + $perms = $stat['mode'] & 0000666; + @ chmod( $new_file, $perms ); + + // Compute the URL + $url = $uploads['url'] . "/$filename"; + + if ( is_multisite() ) + delete_transient( 'dirsize_cache' ); + + return apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $type ), 'upload' ); +} + +/** + * Handle sideloads, which is the process of retriving a media item from another server instead of + * a traditional media upload. This process involves sanitizing the filename, checking extensions + * for mime type, and moving the file to the appropriate directory within the uploads directory. + * + * @since 2.6.0 + * + * @uses wp_handle_upload_error + * @uses apply_filters + * @uses wp_check_filetype_and_ext + * @uses current_user_can + * @uses wp_upload_dir + * @uses wp_unique_filename + * @param array $file an array similar to that of a PHP $_FILES POST array + * @param array $overrides Optional. An associative array of names=>values to override default variables with extract( $overrides, EXTR_OVERWRITE ). + * @return array On success, returns an associative array of file attributes. On failure, returns $overrides['upload_error_handler'](&$file, $message ) or array( 'error'=>$message ). + */ +function wp_handle_sideload( &$file, $overrides = false ) { + // The default error handler. + if (! function_exists( 'wp_handle_upload_error' ) ) { + function wp_handle_upload_error( &$file, $message ) { + return array( 'error'=>$message ); + } + } + + // You may define your own function and pass the name in $overrides['upload_error_handler'] + $upload_error_handler = 'wp_handle_upload_error'; + + // You may define your own function and pass the name in $overrides['unique_filename_callback'] + $unique_filename_callback = null; + + // $_POST['action'] must be set and its value must equal $overrides['action'] or this: + $action = 'wp_handle_sideload'; + + // Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}]['error']. + $upload_error_strings = array( false, + __( "The uploaded file exceeds the upload_max_filesize directive in php.ini." ), + __( "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form." ), + __( "The uploaded file was only partially uploaded." ), + __( "No file was uploaded." ), + '', + __( "Missing a temporary folder." ), + __( "Failed to write file to disk." ), + __( "File upload stopped by extension." )); + + // All tests are on by default. Most can be turned off by $override[{test_name}] = false; + $test_form = true; + $test_size = true; + + // If you override this, you must provide $ext and $type!!!! + $test_type = true; + $mimes = false; + + // Install user overrides. Did we mention that this voids your warranty? + if ( is_array( $overrides ) ) + extract( $overrides, EXTR_OVERWRITE ); + + // A correct form post will pass this test. + if ( $test_form && (!isset( $_POST['action'] ) || ($_POST['action'] != $action ) ) ) + return $upload_error_handler( $file, __( 'Invalid form submission.' )); + + // A successful upload will pass this test. It makes no sense to override this one. + if ( ! empty( $file['error'] ) ) + return $upload_error_handler( $file, $upload_error_strings[$file['error']] ); + + // A non-empty file will pass this test. + if ( $test_size && !(filesize($file['tmp_name']) > 0 ) ) + return $upload_error_handler( $file, __( 'File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini.' )); + + // A properly uploaded file will pass this test. There should be no reason to override this one. + if (! @ is_file( $file['tmp_name'] ) ) + return $upload_error_handler( $file, __( 'Specified file does not exist.' )); + + // A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter. + if ( $test_type ) { + $wp_filetype = wp_check_filetype_and_ext( $file['tmp_name'], $file['name'], $mimes ); + + extract( $wp_filetype ); + + // Check to see if wp_check_filetype_and_ext() determined the filename was incorrect + if ( $proper_filename ) + $file['name'] = $proper_filename; + + if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) ) + return $upload_error_handler( $file, __( 'Sorry, this file type is not permitted for security reasons.' )); + + if ( !$ext ) + $ext = ltrim(strrchr($file['name'], '.'), '.'); + + if ( !$type ) + $type = $file['type']; + } + + // A writable uploads dir will pass this test. Again, there's no point overriding this one. + if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) ) + return $upload_error_handler( $file, $uploads['error'] ); + + $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback ); + + // Strip the query strings. + $filename = str_replace('?','-', $filename); + $filename = str_replace('&','-', $filename); + + // Move the file to the uploads dir + $new_file = $uploads['path'] . "/$filename"; + if ( false === @ rename( $file['tmp_name'], $new_file ) ) { + return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) ); + } + + // Set correct file permissions + $stat = stat( dirname( $new_file )); + $perms = $stat['mode'] & 0000666; + @ chmod( $new_file, $perms ); + + // Compute the URL + $url = $uploads['url'] . "/$filename"; + + $return = apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $type ), 'sideload' ); + + return $return; +} + +/** + * Downloads a url to a local temporary file using the WordPress HTTP Class. + * Please note, That the calling function must unlink() the file. + * + * @since 2.5.0 + * + * @param string $url the URL of the file to download + * @param int $timeout The timeout for the request to download the file default 300 seconds + * @return mixed WP_Error on failure, string Filename on success. + */ +function download_url( $url, $timeout = 300 ) { + //WARNING: The file is not automatically deleted, The script must unlink() the file. + if ( ! $url ) + return new WP_Error('http_no_url', __('Invalid URL Provided.')); + + $tmpfname = wp_tempnam($url); + if ( ! $tmpfname ) + return new WP_Error('http_no_file', __('Could not create Temporary file.')); + + $response = wp_remote_get( $url, array( 'timeout' => $timeout, 'stream' => true, 'filename' => $tmpfname ) ); + + if ( is_wp_error( $response ) ) { + unlink( $tmpfname ); + return $response; + } + + if ( 200 != wp_remote_retrieve_response_code( $response ) ){ + unlink( $tmpfname ); + return new WP_Error( 'http_404', trim( wp_remote_retrieve_response_message( $response ) ) ); + } + + return $tmpfname; +} + +/** + * Unzip's a specified ZIP file to a location on the Filesystem via the WordPress Filesystem Abstraction. + * Assumes that WP_Filesystem() has already been called and set up. Does not extract a root-level __MACOSX directory, if present. + * + * Attempts to increase the PHP Memory limit to 256M before uncompressing, + * However, The most memory required shouldn't be much larger than the Archive itself. + * + * @since 2.5.0 + * + * @param string $file Full path and filename of zip archive + * @param string $to Full path on the filesystem to extract archive to + * @return mixed WP_Error on failure, True on success + */ +function unzip_file($file, $to) { + global $wp_filesystem; + + if ( ! $wp_filesystem || !is_object($wp_filesystem) ) + return new WP_Error('fs_unavailable', __('Could not access filesystem.')); + + // Unzip can use a lot of memory, but not this much hopefully + @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) ); + + $needed_dirs = array(); + $to = trailingslashit($to); + + // Determine any parent dir's needed (of the upgrade directory) + if ( ! $wp_filesystem->is_dir($to) ) { //Only do parents if no children exist + $path = preg_split('![/\\\]!', untrailingslashit($to)); + for ( $i = count($path); $i >= 0; $i-- ) { + if ( empty($path[$i]) ) + continue; + + $dir = implode('/', array_slice($path, 0, $i+1) ); + if ( preg_match('!^[a-z]:$!i', $dir) ) // Skip it if it looks like a Windows Drive letter. + continue; + + if ( ! $wp_filesystem->is_dir($dir) ) + $needed_dirs[] = $dir; + else + break; // A folder exists, therefor, we dont need the check the levels below this + } + } + + if ( class_exists('ZipArchive') && apply_filters('unzip_file_use_ziparchive', true ) ) { + $result = _unzip_file_ziparchive($file, $to, $needed_dirs); + if ( true === $result ) { + return $result; + } elseif ( is_wp_error($result) ) { + if ( 'incompatible_archive' != $result->get_error_code() ) + return $result; + } + } + // Fall through to PclZip if ZipArchive is not available, or encountered an error opening the file. + return _unzip_file_pclzip($file, $to, $needed_dirs); +} + +/** + * This function should not be called directly, use unzip_file instead. Attempts to unzip an archive using the ZipArchive class. + * Assumes that WP_Filesystem() has already been called and set up. + * + * @since 3.0.0 + * @see unzip_file + * @access private + * + * @param string $file Full path and filename of zip archive + * @param string $to Full path on the filesystem to extract archive to + * @param array $needed_dirs A partial list of required folders needed to be created. + * @return mixed WP_Error on failure, True on success + */ +function _unzip_file_ziparchive($file, $to, $needed_dirs = array() ) { + global $wp_filesystem; + + $z = new ZipArchive(); + + // PHP4-compat - php4 classes can't contain constants + $zopen = $z->open($file, /* ZIPARCHIVE::CHECKCONS */ 4); + if ( true !== $zopen ) + return new WP_Error('incompatible_archive', __('Incompatible Archive.')); + + for ( $i = 0; $i < $z->numFiles; $i++ ) { + if ( ! $info = $z->statIndex($i) ) + return new WP_Error('stat_failed', __('Could not retrieve file from archive.')); + + if ( '__MACOSX/' === substr($info['name'], 0, 9) ) // Skip the OS X-created __MACOSX directory + continue; + + if ( '/' == substr($info['name'], -1) ) // directory + $needed_dirs[] = $to . untrailingslashit($info['name']); + else + $needed_dirs[] = $to . untrailingslashit(dirname($info['name'])); + } + + $needed_dirs = array_unique($needed_dirs); + foreach ( $needed_dirs as $dir ) { + // Check the parent folders of the folders all exist within the creation array. + if ( untrailingslashit($to) == $dir ) // Skip over the working directory, We know this exists (or will exist) + continue; + if ( strpos($dir, $to) === false ) // If the directory is not within the working directory, Skip it + continue; + + $parent_folder = dirname($dir); + while ( !empty($parent_folder) && untrailingslashit($to) != $parent_folder && !in_array($parent_folder, $needed_dirs) ) { + $needed_dirs[] = $parent_folder; + $parent_folder = dirname($parent_folder); + } + } + asort($needed_dirs); + + // Create those directories if need be: + foreach ( $needed_dirs as $_dir ) { + if ( ! $wp_filesystem->mkdir($_dir, FS_CHMOD_DIR) && ! $wp_filesystem->is_dir($_dir) ) // Only check to see if the Dir exists upon creation failure. Less I/O this way. + return new WP_Error('mkdir_failed', __('Could not create directory.'), $_dir); + } + unset($needed_dirs); + + for ( $i = 0; $i < $z->numFiles; $i++ ) { + if ( ! $info = $z->statIndex($i) ) + return new WP_Error('stat_failed', __('Could not retrieve file from archive.')); + + if ( '/' == substr($info['name'], -1) ) // directory + continue; + + if ( '__MACOSX/' === substr($info['name'], 0, 9) ) // Don't extract the OS X-created __MACOSX directory files + continue; + + $contents = $z->getFromIndex($i); + if ( false === $contents ) + return new WP_Error('extract_failed', __('Could not extract file from archive.'), $info['name']); + + if ( ! $wp_filesystem->put_contents( $to . $info['name'], $contents, FS_CHMOD_FILE) ) + return new WP_Error('copy_failed', __('Could not copy file.'), $to . $info['filename']); + } + + $z->close(); + + return true; +} + +/** + * This function should not be called directly, use unzip_file instead. Attempts to unzip an archive using the PclZip library. + * Assumes that WP_Filesystem() has already been called and set up. + * + * @since 3.0.0 + * @see unzip_file + * @access private + * + * @param string $file Full path and filename of zip archive + * @param string $to Full path on the filesystem to extract archive to + * @param array $needed_dirs A partial list of required folders needed to be created. + * @return mixed WP_Error on failure, True on success + */ +function _unzip_file_pclzip($file, $to, $needed_dirs = array()) { + global $wp_filesystem; + + // See #15789 - PclZip uses string functions on binary data, If it's overloaded with Multibyte safe functions the results are incorrect. + if ( ini_get('mbstring.func_overload') && function_exists('mb_internal_encoding') ) { + $previous_encoding = mb_internal_encoding(); + mb_internal_encoding('ISO-8859-1'); + } + + require_once(ABSPATH . 'wp-admin/includes/class-pclzip.php'); + + $archive = new PclZip($file); + + $archive_files = $archive->extract(PCLZIP_OPT_EXTRACT_AS_STRING); + + if ( isset($previous_encoding) ) + mb_internal_encoding($previous_encoding); + + // Is the archive valid? + if ( !is_array($archive_files) ) + return new WP_Error('incompatible_archive', __('Incompatible Archive.'), $archive->errorInfo(true)); + + if ( 0 == count($archive_files) ) + return new WP_Error('empty_archive', __('Empty archive.')); + + // Determine any children directories needed (From within the archive) + foreach ( $archive_files as $file ) { + if ( '__MACOSX/' === substr($file['filename'], 0, 9) ) // Skip the OS X-created __MACOSX directory + continue; + + $needed_dirs[] = $to . untrailingslashit( $file['folder'] ? $file['filename'] : dirname($file['filename']) ); + } + + $needed_dirs = array_unique($needed_dirs); + foreach ( $needed_dirs as $dir ) { + // Check the parent folders of the folders all exist within the creation array. + if ( untrailingslashit($to) == $dir ) // Skip over the working directory, We know this exists (or will exist) + continue; + if ( strpos($dir, $to) === false ) // If the directory is not within the working directory, Skip it + continue; + + $parent_folder = dirname($dir); + while ( !empty($parent_folder) && untrailingslashit($to) != $parent_folder && !in_array($parent_folder, $needed_dirs) ) { + $needed_dirs[] = $parent_folder; + $parent_folder = dirname($parent_folder); + } + } + asort($needed_dirs); + + // Create those directories if need be: + foreach ( $needed_dirs as $_dir ) { + if ( ! $wp_filesystem->mkdir($_dir, FS_CHMOD_DIR) && ! $wp_filesystem->is_dir($_dir) ) // Only check to see if the dir exists upon creation failure. Less I/O this way. + return new WP_Error('mkdir_failed', __('Could not create directory.'), $_dir); + } + unset($needed_dirs); + + // Extract the files from the zip + foreach ( $archive_files as $file ) { + if ( $file['folder'] ) + continue; + + if ( '__MACOSX/' === substr($file['filename'], 0, 9) ) // Don't extract the OS X-created __MACOSX directory files + continue; + + if ( ! $wp_filesystem->put_contents( $to . $file['filename'], $file['content'], FS_CHMOD_FILE) ) + return new WP_Error('copy_failed', __('Could not copy file.'), $to . $file['filename']); + } + return true; +} + +/** + * Copies a directory from one location to another via the WordPress Filesystem Abstraction. + * Assumes that WP_Filesystem() has already been called and setup. + * + * @since 2.5.0 + * + * @param string $from source directory + * @param string $to destination directory + * @param array $skip_list a list of files/folders to skip copying + * @return mixed WP_Error on failure, True on success. + */ +function copy_dir($from, $to, $skip_list = array() ) { + global $wp_filesystem; + + $dirlist = $wp_filesystem->dirlist($from); + + $from = trailingslashit($from); + $to = trailingslashit($to); + + $skip_regex = ''; + foreach ( (array)$skip_list as $key => $skip_file ) + $skip_regex .= preg_quote($skip_file, '!') . '|'; + + if ( !empty($skip_regex) ) + $skip_regex = '!(' . rtrim($skip_regex, '|') . ')$!i'; + + foreach ( (array) $dirlist as $filename => $fileinfo ) { + if ( !empty($skip_regex) ) + if ( preg_match($skip_regex, $from . $filename) ) + continue; + + if ( 'f' == $fileinfo['type'] ) { + if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) { + // If copy failed, chmod file to 0644 and try again. + $wp_filesystem->chmod($to . $filename, 0644); + if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) + return new WP_Error('copy_failed', __('Could not copy file.'), $to . $filename); + } + } elseif ( 'd' == $fileinfo['type'] ) { + if ( !$wp_filesystem->is_dir($to . $filename) ) { + if ( !$wp_filesystem->mkdir($to . $filename, FS_CHMOD_DIR) ) + return new WP_Error('mkdir_failed', __('Could not create directory.'), $to . $filename); + } + $result = copy_dir($from . $filename, $to . $filename, $skip_list); + if ( is_wp_error($result) ) + return $result; + } + } + return true; +} + +/** + * Initialises and connects the WordPress Filesystem Abstraction classes. + * This function will include the chosen transport and attempt connecting. + * + * Plugins may add extra transports, And force WordPress to use them by returning the filename via the 'filesystem_method_file' filter. + * + * @since 2.5.0 + * + * @param array $args (optional) Connection args, These are passed directly to the WP_Filesystem_*() classes. + * @param string $context (optional) Context for get_filesystem_method(), See function declaration for more information. + * @return boolean false on failure, true on success + */ +function WP_Filesystem( $args = false, $context = false ) { + global $wp_filesystem; + + require_once(ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php'); + + $method = get_filesystem_method($args, $context); + + if ( ! $method ) + return false; + + if ( ! class_exists("WP_Filesystem_$method") ) { + $abstraction_file = apply_filters('filesystem_method_file', ABSPATH . 'wp-admin/includes/class-wp-filesystem-' . $method . '.php', $method); + if ( ! file_exists($abstraction_file) ) + return; + + require_once($abstraction_file); + } + $method = "WP_Filesystem_$method"; + + $wp_filesystem = new $method($args); + + //Define the timeouts for the connections. Only available after the construct is called to allow for per-transport overriding of the default. + if ( ! defined('FS_CONNECT_TIMEOUT') ) + define('FS_CONNECT_TIMEOUT', 30); + if ( ! defined('FS_TIMEOUT') ) + define('FS_TIMEOUT', 30); + + if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) + return false; + + if ( !$wp_filesystem->connect() ) + return false; //There was an erorr connecting to the server. + + // Set the permission constants if not already set. + if ( ! defined('FS_CHMOD_DIR') ) + define('FS_CHMOD_DIR', 0755 ); + if ( ! defined('FS_CHMOD_FILE') ) + define('FS_CHMOD_FILE', 0644 ); + + return true; +} + +/** + * Determines which Filesystem Method to use. + * The priority of the Transports are: Direct, SSH2, FTP PHP Extension, FTP Sockets (Via Sockets class, or fsoxkopen()) + * + * Note that the return value of this function can be overridden in 2 ways + * - By defining FS_METHOD in your wp-config.php file + * - By using the filesystem_method filter + * Valid values for these are: 'direct', 'ssh', 'ftpext' or 'ftpsockets' + * Plugins may also define a custom transport handler, See the WP_Filesystem function for more information. + * + * @since 2.5.0 + * + * @param array $args Connection details. + * @param string $context Full path to the directory that is tested for being writable. + * @return string The transport to use, see description for valid return values. + */ +function get_filesystem_method($args = array(), $context = false) { + $method = defined('FS_METHOD') ? FS_METHOD : false; //Please ensure that this is either 'direct', 'ssh', 'ftpext' or 'ftpsockets' + + if ( ! $method && function_exists('getmyuid') && function_exists('fileowner') ){ + if ( !$context ) + $context = WP_CONTENT_DIR; + $context = trailingslashit($context); + $temp_file_name = $context . 'temp-write-test-' . time(); + $temp_handle = @fopen($temp_file_name, 'w'); + if ( $temp_handle ) { + if ( getmyuid() == @fileowner($temp_file_name) ) + $method = 'direct'; + @fclose($temp_handle); + @unlink($temp_file_name); + } + } + + if ( ! $method && isset($args['connection_type']) && 'ssh' == $args['connection_type'] && extension_loaded('ssh2') && function_exists('stream_get_contents') ) $method = 'ssh2'; + if ( ! $method && extension_loaded('ftp') ) $method = 'ftpext'; + if ( ! $method && ( extension_loaded('sockets') || function_exists('fsockopen') ) ) $method = 'ftpsockets'; //Sockets: Socket extension; PHP Mode: FSockopen / fwrite / fread + return apply_filters('filesystem_method', $method, $args); +} + +/** + * Displays a form to the user to request for their FTP/SSH details in order to connect to the filesystem. + * All chosen/entered details are saved, Excluding the Password. + * + * Hostnames may be in the form of hostname:portnumber (eg: wordpress.org:2467) to specify an alternate FTP/SSH port. + * + * Plugins may override this form by returning true|false via the request_filesystem_credentials filter. + * + * @since 2.5.0 + * + * @param string $form_post the URL to post the form to + * @param string $type the chosen Filesystem method in use + * @param boolean $error if the current request has failed to connect + * @param string $context The directory which is needed access to, The write-test will be performed on this directory by get_filesystem_method() + * @param string $extra_fields Extra POST fields which should be checked for to be included in the post. + * @return boolean False on failure. True on success. + */ +function request_filesystem_credentials($form_post, $type = '', $error = false, $context = false, $extra_fields = null) { + $req_cred = apply_filters( 'request_filesystem_credentials', '', $form_post, $type, $error, $context, $extra_fields ); + if ( '' !== $req_cred ) + return $req_cred; + + if ( empty($type) ) + $type = get_filesystem_method(array(), $context); + + if ( 'direct' == $type ) + return true; + + if ( is_null( $extra_fields ) ) + $extra_fields = array( 'version', 'locale' ); + + $credentials = get_option('ftp_credentials', array( 'hostname' => '', 'username' => '')); + + // If defined, set it to that, Else, If POST'd, set it to that, If not, Set it to whatever it previously was(saved details in option) + $credentials['hostname'] = defined('FTP_HOST') ? FTP_HOST : (!empty($_POST['hostname']) ? stripslashes($_POST['hostname']) : $credentials['hostname']); + $credentials['username'] = defined('FTP_USER') ? FTP_USER : (!empty($_POST['username']) ? stripslashes($_POST['username']) : $credentials['username']); + $credentials['password'] = defined('FTP_PASS') ? FTP_PASS : (!empty($_POST['password']) ? stripslashes($_POST['password']) : ''); + + // Check to see if we are setting the public/private keys for ssh + $credentials['public_key'] = defined('FTP_PUBKEY') ? FTP_PUBKEY : (!empty($_POST['public_key']) ? stripslashes($_POST['public_key']) : ''); + $credentials['private_key'] = defined('FTP_PRIKEY') ? FTP_PRIKEY : (!empty($_POST['private_key']) ? stripslashes($_POST['private_key']) : ''); + + //sanitize the hostname, Some people might pass in odd-data: + $credentials['hostname'] = preg_replace('|\w+://|', '', $credentials['hostname']); //Strip any schemes off + + if ( strpos($credentials['hostname'], ':') ) { + list( $credentials['hostname'], $credentials['port'] ) = explode(':', $credentials['hostname'], 2); + if ( ! is_numeric($credentials['port']) ) + unset($credentials['port']); + } else { + unset($credentials['port']); + } + + if ( (defined('FTP_SSH') && FTP_SSH) || (defined('FS_METHOD') && 'ssh' == FS_METHOD) ) + $credentials['connection_type'] = 'ssh'; + else if ( (defined('FTP_SSL') && FTP_SSL) && 'ftpext' == $type ) //Only the FTP Extension understands SSL + $credentials['connection_type'] = 'ftps'; + else if ( !empty($_POST['connection_type']) ) + $credentials['connection_type'] = stripslashes($_POST['connection_type']); + else if ( !isset($credentials['connection_type']) ) //All else fails (And its not defaulted to something else saved), Default to FTP + $credentials['connection_type'] = 'ftp'; + + if ( ! $error && + ( + ( !empty($credentials['password']) && !empty($credentials['username']) && !empty($credentials['hostname']) ) || + ( 'ssh' == $credentials['connection_type'] && !empty($credentials['public_key']) && !empty($credentials['private_key']) ) + ) ) { + $stored_credentials = $credentials; + if ( !empty($stored_credentials['port']) ) //save port as part of hostname to simplify above code. + $stored_credentials['hostname'] .= ':' . $stored_credentials['port']; + + unset($stored_credentials['password'], $stored_credentials['port'], $stored_credentials['private_key'], $stored_credentials['public_key']); + update_option('ftp_credentials', $stored_credentials); + return $credentials; + } + $hostname = ''; + $username = ''; + $password = ''; + $connection_type = ''; + if ( !empty($credentials) ) + extract($credentials, EXTR_OVERWRITE); + if ( $error ) { + $error_string = __('Error: There was an error connecting to the server, Please verify the settings are correct.'); + if ( is_wp_error($error) ) + $error_string = esc_html( $error->get_error_message() ); + echo '

' . $error_string . '

'; + } + + $types = array(); + if ( extension_loaded('ftp') || extension_loaded('sockets') || function_exists('fsockopen') ) + $types[ 'ftp' ] = __('FTP'); + if ( extension_loaded('ftp') ) //Only this supports FTPS + $types[ 'ftps' ] = __('FTPS (SSL)'); + if ( extension_loaded('ssh2') && function_exists('stream_get_contents') ) + $types[ 'ssh' ] = __('SSH2'); + + $types = apply_filters('fs_ftp_connection_types', $types, $credentials, $type, $error, $context); + +?> + +
+
+ +

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
" size="40" />
size="40" />
size="40" />
+
+
+ +

size="40" />
size="40" /> +
+
+ $text ) : ?> + + +
+
+ +'; +} +submit_button( __( 'Proceed' ), 'button', 'upgrade' ); +?> +
+
+ diff --git a/src/wp-admin/includes/image-edit.php b/src/wp-admin/includes/image-edit.php new file mode 100644 index 0000000..86cdfe2 --- /dev/null +++ b/src/wp-admin/includes/image-edit.php @@ -0,0 +1,668 @@ + 400 ? 400 / $big : 1; + + $backup_sizes = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true ); + $can_restore = !empty($backup_sizes) && isset($backup_sizes['full-orig']) + && $backup_sizes['full-orig']['file'] != basename($meta['file']); + + if ( $msg ) { + if ( isset($msg->error) ) + $note = "

$msg->error

"; + elseif ( isset($msg->msg) ) + $note = "

$msg->msg

"; + } + + ?> +
+ + + + + +
+
+
, this)" class="imgedit-crop disabled" title="">
+
, this)" title="">
+
, this)" title="">
+ +
+
+ + +
, this)" class="imgedit-flipv" title="">
+
, this)" class="imgedit-fliph" title="">
+ +
, this)" class="imgedit-undo disabled" title="">
+
, this)" class="imgedit-redo disabled" title="">
+
+
+ + + + + + + + + +
+ +
+ +
+ + )" disabled="disabled" class="button-primary imgedit-submit-btn" value="" /> +
+
+
+
+ +
+

+

+
+ × + ! + , 'scale')" class="button-primary" value="" /> +
+
+
+ + + +
+ +
+

+
+ , 'restore')" class="button-primary" value="" /> +
+
+
+ + + +
+ +
+
+ + +
+

+ +
    +
  • +
  • +
  • +
  • +
  • +
+ +


+

+ +


+

+
+
+ +

+ + + + : + + +

+ +

+ + + + : + + +

+
+ + + +
+
+ + +

+
+ +

+
+

+ +

+
+ + + + + + +

+
+ + + +
+
+ + +
+ 400 ? (400 / $max) : 1; +} + +function _rotate_image_resource($img, $angle) { + if ( function_exists('imagerotate') ) { + $rotated = imagerotate($img, $angle, 0); + if ( is_resource($rotated) ) { + imagedestroy($img); + $img = $rotated; + } + } + return $img; +} + + +function _flip_image_resource($img, $horz, $vert) { + $w = imagesx($img); + $h = imagesy($img); + $dst = wp_imagecreatetruecolor($w, $h); + if ( is_resource($dst) ) { + $sx = $vert ? ($w - 1) : 0; + $sy = $horz ? ($h - 1) : 0; + $sw = $vert ? -$w : $w; + $sh = $horz ? -$h : $h; + + if ( imagecopyresampled($dst, $img, 0, 0, $sx, $sy, $w, $h, $sw, $sh) ) { + imagedestroy($img); + $img = $dst; + } + } + return $img; +} + +function _crop_image_resource($img, $x, $y, $w, $h) { + $dst = wp_imagecreatetruecolor($w, $h); + if ( is_resource($dst) ) { + if ( imagecopy($dst, $img, 0, 0, $x, $y, $w, $h) ) { + imagedestroy($img); + $img = $dst; + } + } + return $img; +} + +function image_edit_apply_changes($img, $changes) { + + if ( !is_array($changes) ) + return $img; + + // expand change operations + foreach ( $changes as $key => $obj ) { + if ( isset($obj->r) ) { + $obj->type = 'rotate'; + $obj->angle = $obj->r; + unset($obj->r); + } elseif ( isset($obj->f) ) { + $obj->type = 'flip'; + $obj->axis = $obj->f; + unset($obj->f); + } elseif ( isset($obj->c) ) { + $obj->type = 'crop'; + $obj->sel = $obj->c; + unset($obj->c); + } + $changes[$key] = $obj; + } + + // combine operations + if ( count($changes) > 1 ) { + $filtered = array($changes[0]); + for ( $i = 0, $j = 1; $j < count($changes); $j++ ) { + $combined = false; + if ( $filtered[$i]->type == $changes[$j]->type ) { + switch ( $filtered[$i]->type ) { + case 'rotate': + $filtered[$i]->angle += $changes[$j]->angle; + $combined = true; + break; + case 'flip': + $filtered[$i]->axis ^= $changes[$j]->axis; + $combined = true; + break; + } + } + if ( !$combined ) + $filtered[++$i] = $changes[$j]; + } + $changes = $filtered; + unset($filtered); + } + + // image resource before applying the changes + $img = apply_filters('image_edit_before_change', $img, $changes); + + foreach ( $changes as $operation ) { + switch ( $operation->type ) { + case 'rotate': + if ( $operation->angle != 0 ) + $img = _rotate_image_resource($img, $operation->angle); + break; + case 'flip': + if ( $operation->axis != 0 ) + $img = _flip_image_resource($img, ($operation->axis & 1) != 0, ($operation->axis & 2) != 0); + break; + case 'crop': + $sel = $operation->sel; + $scale = 1 / _image_get_preview_ratio( imagesx($img), imagesy($img) ); // discard preview scaling + $img = _crop_image_resource($img, $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale); + break; + } + } + + return $img; +} + +function stream_preview_image($post_id) { + $post = get_post($post_id); + @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) ); + $img = load_image_to_edit( $post_id, $post->post_mime_type, array(400, 400) ); + + if ( !is_resource($img) ) + return false; + + $changes = !empty($_REQUEST['history']) ? json_decode( stripslashes($_REQUEST['history']) ) : null; + if ( $changes ) + $img = image_edit_apply_changes($img, $changes); + + // scale the image + $w = imagesx($img); + $h = imagesy($img); + $ratio = _image_get_preview_ratio($w, $h); + $w2 = $w * $ratio; + $h2 = $h * $ratio; + + $preview = wp_imagecreatetruecolor($w2, $h2); + imagecopyresampled( $preview, $img, 0, 0, 0, 0, $w2, $h2, $w, $h ); + wp_stream_image($preview, $post->post_mime_type, $post_id); + + imagedestroy($preview); + imagedestroy($img); + return true; +} + +function wp_restore_image($post_id) { + $meta = wp_get_attachment_metadata($post_id); + $file = get_attached_file($post_id); + $backup_sizes = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true ); + $restored = false; + $msg = new stdClass; + + if ( !is_array($backup_sizes) ) { + $msg->error = __('Cannot load image metadata.'); + return $msg; + } + + $parts = pathinfo($file); + $suffix = time() . rand(100, 999); + $default_sizes = apply_filters( 'intermediate_image_sizes', array('large', 'medium', 'thumbnail') ); + + if ( isset($backup_sizes['full-orig']) && is_array($backup_sizes['full-orig']) ) { + $data = $backup_sizes['full-orig']; + + if ( $parts['basename'] != $data['file'] ) { + if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) { + // delete only if it's edited image + if ( preg_match('/-e[0-9]{13}\./', $parts['basename']) ) { + $delpath = apply_filters('wp_delete_file', $file); + @unlink($delpath); + } + } else { + $backup_sizes["full-$suffix"] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $parts['basename']); + } + } + + $restored_file = path_join($parts['dirname'], $data['file']); + $restored = update_attached_file($post_id, $restored_file); + + $meta['file'] = _wp_relative_upload_path( $restored_file ); + $meta['width'] = $data['width']; + $meta['height'] = $data['height']; + list ( $uwidth, $uheight ) = wp_constrain_dimensions($meta['width'], $meta['height'], 128, 96); + $meta['hwstring_small'] = "height='$uheight' width='$uwidth'"; + } + + foreach ( $default_sizes as $default_size ) { + if ( isset($backup_sizes["$default_size-orig"]) ) { + $data = $backup_sizes["$default_size-orig"]; + if ( isset($meta['sizes'][$default_size]) && $meta['sizes'][$default_size]['file'] != $data['file'] ) { + if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) { + // delete only if it's edited image + if ( preg_match('/-e[0-9]{13}-/', $meta['sizes'][$default_size]['file']) ) { + $delpath = apply_filters( 'wp_delete_file', path_join($parts['dirname'], $meta['sizes'][$default_size]['file']) ); + @unlink($delpath); + } + } else { + $backup_sizes["$default_size-{$suffix}"] = $meta['sizes'][$default_size]; + } + } + + $meta['sizes'][$default_size] = $data; + } else { + unset($meta['sizes'][$default_size]); + } + } + + if ( !wp_update_attachment_metadata($post_id, $meta) || !update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes) ) { + $msg->error = __('Cannot save image metadata.'); + return $msg; + } + + if ( !$restored ) + $msg->error = __('Image metadata is inconsistent.'); + else + $msg->msg = __('Image restored successfully.'); + + return $msg; +} + +function wp_save_image($post_id) { + $return = new stdClass; + $success = $delete = $scaled = $nocrop = false; + $post = get_post($post_id); + @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) ); + $img = load_image_to_edit($post_id, $post->post_mime_type); + + if ( !is_resource($img) ) { + $return->error = esc_js( __('Unable to create new image.') ); + return $return; + } + + $fwidth = !empty($_REQUEST['fwidth']) ? intval($_REQUEST['fwidth']) : 0; + $fheight = !empty($_REQUEST['fheight']) ? intval($_REQUEST['fheight']) : 0; + $target = !empty($_REQUEST['target']) ? preg_replace('/[^a-z0-9_-]+/i', '', $_REQUEST['target']) : ''; + $scale = !empty($_REQUEST['do']) && 'scale' == $_REQUEST['do']; + + if ( $scale && $fwidth > 0 && $fheight > 0 ) { + $sX = imagesx($img); + $sY = imagesy($img); + + // check if it has roughly the same w / h ratio + $diff = round($sX / $sY, 2) - round($fwidth / $fheight, 2); + if ( -0.1 < $diff && $diff < 0.1 ) { + // scale the full size image + $dst = wp_imagecreatetruecolor($fwidth, $fheight); + if ( imagecopyresampled( $dst, $img, 0, 0, 0, 0, $fwidth, $fheight, $sX, $sY ) ) { + imagedestroy($img); + $img = $dst; + $scaled = true; + } + } + + if ( !$scaled ) { + $return->error = esc_js( __('Error while saving the scaled image. Please reload the page and try again.') ); + return $return; + } + } elseif ( !empty($_REQUEST['history']) ) { + $changes = json_decode( stripslashes($_REQUEST['history']) ); + if ( $changes ) + $img = image_edit_apply_changes($img, $changes); + } else { + $return->error = esc_js( __('Nothing to save, the image has not changed.') ); + return $return; + } + + $meta = wp_get_attachment_metadata($post_id); + $backup_sizes = get_post_meta( $post->ID, '_wp_attachment_backup_sizes', true ); + + if ( !is_array($meta) ) { + $return->error = esc_js( __('Image data does not exist. Please re-upload the image.') ); + return $return; + } + + if ( !is_array($backup_sizes) ) + $backup_sizes = array(); + + // generate new filename + $path = get_attached_file($post_id); + $path_parts = pathinfo( $path ); + $filename = $path_parts['filename']; + $suffix = time() . rand(100, 999); + + if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE && + isset($backup_sizes['full-orig']) && $backup_sizes['full-orig']['file'] != $path_parts['basename'] ) { + + if ( 'thumbnail' == $target ) + $new_path = "{$path_parts['dirname']}/{$filename}-temp.{$path_parts['extension']}"; + else + $new_path = $path; + } else { + while( true ) { + $filename = preg_replace( '/-e([0-9]+)$/', '', $filename ); + $filename .= "-e{$suffix}"; + $new_filename = "{$filename}.{$path_parts['extension']}"; + $new_path = "{$path_parts['dirname']}/$new_filename"; + if ( file_exists($new_path) ) + $suffix++; + else + break; + } + } + + // save the full-size file, also needed to create sub-sizes + if ( !wp_save_image_file($new_path, $img, $post->post_mime_type, $post_id) ) { + $return->error = esc_js( __('Unable to save the image.') ); + return $return; + } + + if ( 'nothumb' == $target || 'all' == $target || 'full' == $target || $scaled ) { + $tag = false; + if ( isset($backup_sizes['full-orig']) ) { + if ( ( !defined('IMAGE_EDIT_OVERWRITE') || !IMAGE_EDIT_OVERWRITE ) && $backup_sizes['full-orig']['file'] != $path_parts['basename'] ) + $tag = "full-$suffix"; + } else { + $tag = 'full-orig'; + } + + if ( $tag ) + $backup_sizes[$tag] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $path_parts['basename']); + + $success = update_attached_file($post_id, $new_path); + + $meta['file'] = _wp_relative_upload_path($new_path); + $meta['width'] = imagesx($img); + $meta['height'] = imagesy($img); + + list ( $uwidth, $uheight ) = wp_constrain_dimensions($meta['width'], $meta['height'], 128, 96); + $meta['hwstring_small'] = "height='$uheight' width='$uwidth'"; + + if ( $success && ('nothumb' == $target || 'all' == $target) ) { + $sizes = apply_filters( 'intermediate_image_sizes', array('large', 'medium', 'thumbnail') ); + if ( 'nothumb' == $target ) + $sizes = array_diff( $sizes, array('thumbnail') ); + } + + $return->fw = $meta['width']; + $return->fh = $meta['height']; + } elseif ( 'thumbnail' == $target ) { + $sizes = array( 'thumbnail' ); + $success = $delete = $nocrop = true; + } + + if ( isset($sizes) ) { + foreach ( $sizes as $size ) { + $tag = false; + if ( isset($meta['sizes'][$size]) ) { + if ( isset($backup_sizes["$size-orig"]) ) { + if ( ( !defined('IMAGE_EDIT_OVERWRITE') || !IMAGE_EDIT_OVERWRITE ) && $backup_sizes["$size-orig"]['file'] != $meta['sizes'][$size]['file'] ) + $tag = "$size-$suffix"; + } else { + $tag = "$size-orig"; + } + + if ( $tag ) + $backup_sizes[$tag] = $meta['sizes'][$size]; + } + + $crop = $nocrop ? false : get_option("{$size}_crop"); + $resized = image_make_intermediate_size($new_path, get_option("{$size}_size_w"), get_option("{$size}_size_h"), $crop ); + + if ( $resized ) + $meta['sizes'][$size] = $resized; + else + unset($meta['sizes'][$size]); + } + } + + if ( $success ) { + wp_update_attachment_metadata($post_id, $meta); + update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes); + + if ( $target == 'thumbnail' || $target == 'all' || $target == 'full' ) { + $file_url = wp_get_attachment_url($post_id); + if ( $thumb = $meta['sizes']['thumbnail'] ) + $return->thumbnail = path_join( dirname($file_url), $thumb['file'] ); + else + $return->thumbnail = "$file_url?w=128&h=128"; + } + } else { + $delete = true; + } + + if ( $delete ) { + $delpath = apply_filters('wp_delete_file', $new_path); + @unlink($delpath); + } + + imagedestroy($img); + + $return->msg = esc_js( __('Image saved') ); + return $return; +} + diff --git a/src/wp-admin/includes/image.php b/src/wp-admin/includes/image.php new file mode 100644 index 0000000..44329c0 --- /dev/null +++ b/src/wp-admin/includes/image.php @@ -0,0 +1,341 @@ + '', 'height' => '', 'crop' => FALSE ); + if ( isset( $_wp_additional_image_sizes[$s]['width'] ) ) + $sizes[$s]['width'] = intval( $_wp_additional_image_sizes[$s]['width'] ); // For theme-added sizes + else + $sizes[$s]['width'] = get_option( "{$s}_size_w" ); // For default sizes set in options + if ( isset( $_wp_additional_image_sizes[$s]['height'] ) ) + $sizes[$s]['height'] = intval( $_wp_additional_image_sizes[$s]['height'] ); // For theme-added sizes + else + $sizes[$s]['height'] = get_option( "{$s}_size_h" ); // For default sizes set in options + if ( isset( $_wp_additional_image_sizes[$s]['crop'] ) ) + $sizes[$s]['crop'] = intval( $_wp_additional_image_sizes[$s]['crop'] ); // For theme-added sizes + else + $sizes[$s]['crop'] = get_option( "{$s}_crop" ); // For default sizes set in options + } + + $sizes = apply_filters( 'intermediate_image_sizes_advanced', $sizes ); + + foreach ($sizes as $size => $size_data ) { + $resized = image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'] ); + if ( $resized ) + $metadata['sizes'][$size] = $resized; + } + + // fetch additional metadata from exif/iptc + $image_meta = wp_read_image_metadata( $file ); + if ( $image_meta ) + $metadata['image_meta'] = $image_meta; + + } + + return apply_filters( 'wp_generate_attachment_metadata', $metadata, $attachment_id ); +} + +/** + * Calculated the new dimentions for a downsampled image. + * + * @since 2.0.0 + * @see wp_constrain_dimensions() + * + * @param int $width Current width of the image + * @param int $height Current height of the image + * @return mixed Array(height,width) of shrunk dimensions. + */ +function get_udims( $width, $height) { + return wp_constrain_dimensions( $width, $height, 128, 96 ); +} + +/** + * Convert a fraction string to a decimal. + * + * @since 2.5.0 + * + * @param string $str + * @return int|float + */ +function wp_exif_frac2dec($str) { + @list( $n, $d ) = explode( '/', $str ); + if ( !empty($d) ) + return $n / $d; + return $str; +} + +/** + * Convert the exif date format to a unix timestamp. + * + * @since 2.5.0 + * + * @param string $str + * @return int + */ +function wp_exif_date2ts($str) { + @list( $date, $time ) = explode( ' ', trim($str) ); + @list( $y, $m, $d ) = explode( ':', $date ); + + return strtotime( "{$y}-{$m}-{$d} {$time}" ); +} + +/** + * Get extended image metadata, exif or iptc as available. + * + * Retrieves the EXIF metadata aperture, credit, camera, caption, copyright, iso + * created_timestamp, focal_length, shutter_speed, and title. + * + * The IPTC metadata that is retrieved is APP13, credit, byline, created date + * and time, caption, copyright, and title. Also includes FNumber, Model, + * DateTimeDigitized, FocalLength, ISOSpeedRatings, and ExposureTime. + * + * @todo Try other exif libraries if available. + * @since 2.5.0 + * + * @param string $file + * @return bool|array False on failure. Image metadata array on success. + */ +function wp_read_image_metadata( $file ) { + if ( ! file_exists( $file ) ) + return false; + + list( , , $sourceImageType ) = getimagesize( $file ); + + // exif contains a bunch of data we'll probably never need formatted in ways + // that are difficult to use. We'll normalize it and just extract the fields + // that are likely to be useful. Fractions and numbers are converted to + // floats, dates to unix timestamps, and everything else to strings. + $meta = array( + 'aperture' => 0, + 'credit' => '', + 'camera' => '', + 'caption' => '', + 'created_timestamp' => 0, + 'copyright' => '', + 'focal_length' => 0, + 'iso' => 0, + 'shutter_speed' => 0, + 'title' => '', + ); + + // read iptc first, since it might contain data not available in exif such + // as caption, description etc + if ( is_callable( 'iptcparse' ) ) { + getimagesize( $file, $info ); + + if ( ! empty( $info['APP13'] ) ) { + $iptc = iptcparse( $info['APP13'] ); + + // headline, "A brief synopsis of the caption." + if ( ! empty( $iptc['2#105'][0] ) ) + $meta['title'] = utf8_encode( trim( $iptc['2#105'][0] ) ); + // title, "Many use the Title field to store the filename of the image, though the field may be used in many ways." + elseif ( ! empty( $iptc['2#005'][0] ) ) + $meta['title'] = utf8_encode( trim( $iptc['2#005'][0] ) ); + + if ( ! empty( $iptc['2#120'][0] ) ) { // description / legacy caption + $caption = utf8_encode( trim( $iptc['2#120'][0] ) ); + if ( empty( $meta['title'] ) ) { + // Assume the title is stored in 2:120 if it's short. + if ( strlen( $caption ) < 80 ) + $meta['title'] = $caption; + else + $meta['caption'] = $caption; + } elseif ( $caption != $meta['title'] ) { + $meta['caption'] = $caption; + } + } + + if ( ! empty( $iptc['2#110'][0] ) ) // credit + $meta['credit'] = utf8_encode(trim($iptc['2#110'][0])); + elseif ( ! empty( $iptc['2#080'][0] ) ) // creator / legacy byline + $meta['credit'] = utf8_encode(trim($iptc['2#080'][0])); + + if ( ! empty( $iptc['2#055'][0] ) and ! empty( $iptc['2#060'][0] ) ) // created date and time + $meta['created_timestamp'] = strtotime( $iptc['2#055'][0] . ' ' . $iptc['2#060'][0] ); + + if ( ! empty( $iptc['2#116'][0] ) ) // copyright + $meta['copyright'] = utf8_encode( trim( $iptc['2#116'][0] ) ); + } + } + + // fetch additional info from exif if available + if ( is_callable( 'exif_read_data' ) && in_array( $sourceImageType, apply_filters( 'wp_read_image_metadata_types', array( IMAGETYPE_JPEG, IMAGETYPE_TIFF_II, IMAGETYPE_TIFF_MM ) ) ) ) { + $exif = @exif_read_data( $file ); + + if ( !empty( $exif['Title'] ) ) + $meta['title'] = utf8_encode( trim( $exif['Title'] ) ); + + if ( ! empty( $exif['ImageDescription'] ) ) { + if ( empty( $meta['title'] ) && strlen( $exif['ImageDescription'] ) < 80 ) { + // Assume the title is stored in ImageDescription + $meta['title'] = utf8_encode( trim( $exif['ImageDescription'] ) ); + if ( ! empty( $exif['COMPUTED']['UserComment'] ) && trim( $exif['COMPUTED']['UserComment'] ) != $meta['title'] ) + $meta['caption'] = utf8_encode( trim( $exif['COMPUTED']['UserComment'] ) ); + } elseif ( trim( $exif['ImageDescription'] ) != $meta['title'] ) { + $meta['caption'] = utf8_encode( trim( $exif['ImageDescription'] ) ); + } + } elseif ( ! empty( $exif['Comments'] ) && trim( $exif['Comments'] ) != $meta['title'] ) { + $meta['caption'] = utf8_encode( trim( $exif['Comments'] ) ); + } + + if ( ! empty( $exif['Artist'] ) ) + $meta['credit'] = utf8_encode( trim( $exif['Artist'] ) ); + elseif ( ! empty($exif['Author'] ) ) + $meta['credit'] = utf8_encode( trim( $exif['Author'] ) ); + + if ( ! empty( $exif['Copyright'] ) ) + $meta['copyright'] = utf8_encode( trim( $exif['Copyright'] ) ); + if ( ! empty($exif['FNumber'] ) ) + $meta['aperture'] = round( wp_exif_frac2dec( $exif['FNumber'] ), 2 ); + if ( ! empty($exif['Model'] ) ) + $meta['camera'] = utf8_encode( trim( $exif['Model'] ) ); + if ( ! empty($exif['DateTimeDigitized'] ) ) + $meta['created_timestamp'] = wp_exif_date2ts($exif['DateTimeDigitized'] ); + if ( ! empty($exif['FocalLength'] ) ) + $meta['focal_length'] = wp_exif_frac2dec( $exif['FocalLength'] ); + if ( ! empty($exif['ISOSpeedRatings'] ) ) + $meta['iso'] = utf8_encode( trim( $exif['ISOSpeedRatings'] ) ); + if ( ! empty($exif['ExposureTime'] ) ) + $meta['shutter_speed'] = wp_exif_frac2dec( $exif['ExposureTime'] ); + } + + return apply_filters( 'wp_read_image_metadata', $meta, $file, $sourceImageType ); + +} + +/** + * Validate that file is an image. + * + * @since 2.5.0 + * + * @param string $path File path to test if valid image. + * @return bool True if valid image, false if not valid image. + */ +function file_is_valid_image($path) { + $size = @getimagesize($path); + return !empty($size); +} + +/** + * Validate that file is suitable for displaying within a web page. + * + * @since 2.5.0 + * @uses apply_filters() Calls 'file_is_displayable_image' on $result and $path. + * + * @param string $path File path to test. + * @return bool True if suitable, false if not suitable. + */ +function file_is_displayable_image($path) { + $info = @getimagesize($path); + if ( empty($info) ) + $result = false; + elseif ( !in_array($info[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG)) ) // only gif, jpeg and png images can reliably be displayed + $result = false; + else + $result = true; + + return apply_filters('file_is_displayable_image', $result, $path); +} diff --git a/src/wp-admin/includes/import.php b/src/wp-admin/includes/import.php new file mode 100644 index 0000000..f57be76 --- /dev/null +++ b/src/wp-admin/includes/import.php @@ -0,0 +1,97 @@ + false, 'test_type' => false ); + $_FILES['import']['name'] .= '.txt'; + $file = wp_handle_upload( $_FILES['import'], $overrides ); + + if ( isset( $file['error'] ) ) + return $file; + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $filename = basename( $file ); + + // Construct the object array + $object = array( 'post_title' => $filename, + 'post_content' => $url, + 'post_mime_type' => $type, + 'guid' => $url, + 'context' => 'import', + 'post_status' => 'private' + ); + + // Save the data + $id = wp_insert_attachment( $object, $file ); + + // schedule a cleanup for one day from now in case of failed import or missing wp_import_cleanup() call + wp_schedule_single_event( time() + 86400, 'importer_scheduled_cleanup', array( $id ) ); + + return array( 'file' => $file, 'id' => $id ); +} + +?> diff --git a/src/wp-admin/includes/internal-linking.php b/src/wp-admin/includes/internal-linking.php new file mode 100644 index 0000000..a95c01b --- /dev/null +++ b/src/wp-admin/includes/internal-linking.php @@ -0,0 +1,124 @@ + true ), 'objects' ); + $pt_names = array_keys( $pts ); + + $query = array( + 'post_type' => $pt_names, + 'suppress_filters' => true, + 'update_post_term_cache' => false, + 'update_post_meta_cache' => false, + 'post_status' => 'publish', + 'order' => 'DESC', + 'orderby' => 'post_date', + 'posts_per_page' => 20, + ); + + $args['pagenum'] = isset( $args['pagenum'] ) ? absint( $args['pagenum'] ) : 1; + + if ( isset( $args['s'] ) ) + $query['s'] = $args['s']; + + $query['offset'] = $args['pagenum'] > 1 ? $query['posts_per_page'] * ( $args['pagenum'] - 1 ) : 0; + + // Do main query. + $get_posts = new WP_Query; + $posts = $get_posts->query( $query ); + // Check if any posts were found. + if ( ! $get_posts->post_count ) + return false; + + // Build results. + $results = array(); + foreach ( $posts as $post ) { + if ( 'post' == $post->post_type ) + $info = mysql2date( __( 'Y/m/d' ), $post->post_date ); + else + $info = $pts[ $post->post_type ]->labels->singular_name; + + $results[] = array( + 'ID' => $post->ID, + 'title' => trim( esc_html( strip_tags( get_the_title( $post ) ) ) ), + 'permalink' => get_permalink( $post->ID ), + 'info' => $info, + ); + } + + return $results; +} + +/** + * Dialog for internal linking. + * + * @since 3.1.0 + */ +function wp_link_dialog() { +?> + + diff --git a/src/wp-admin/includes/list-table.php b/src/wp-admin/includes/list-table.php new file mode 100644 index 0000000..716e80a --- /dev/null +++ b/src/wp-admin/includes/list-table.php @@ -0,0 +1,104 @@ + 'posts', + 'WP_Media_List_Table' => 'media', + 'WP_Terms_List_Table' => 'terms', + 'WP_Users_List_Table' => 'users', + 'WP_Comments_List_Table' => 'comments', + 'WP_Post_Comments_List_Table' => 'comments', + 'WP_Links_List_Table' => 'links', + 'WP_Plugin_Install_List_Table' => 'plugin-install', + 'WP_Themes_List_Table' => 'themes', + 'WP_Theme_Install_List_Table' => 'theme-install', + 'WP_Plugins_List_Table' => 'plugins', + // Network Admin + 'WP_MS_Sites_List_Table' => 'ms-sites', + 'WP_MS_Users_List_Table' => 'ms-users', + 'WP_MS_Themes_List_Table' => 'ms-themes', + ); + + if ( isset( $core_classes[ $class ] ) ) { + require_once( ABSPATH . 'wp-admin/includes/class-wp-' . $core_classes[ $class ] . '-list-table.php' ); + return new $class; + } + + return false; +} + +/** + * Register column headers for a particular screen. + * + * @since 2.7.0 + * + * @param string $screen The handle for the screen to add help to. This is usually the hook name returned by the add_*_page() functions. + * @param array $columns An array of columns with column IDs as the keys and translated column names as the values + * @see get_column_headers(), print_column_headers(), get_hidden_columns() + */ +function register_column_headers($screen, $columns) { + $wp_list_table = new _WP_List_Table_Compat($screen, $columns); +} + +/** + * Prints column headers for a particular screen. + * + * @since 2.7.0 + */ +function print_column_headers($screen, $id = true) { + $wp_list_table = new _WP_List_Table_Compat($screen); + + $wp_list_table->print_column_headers($id); +} + +/** + * Helper class to be used only by back compat functions + * + * @since 3.1.0 + */ +class _WP_List_Table_Compat extends WP_List_Table { + var $_screen; + var $_columns; + + function _WP_List_Table_Compat( $screen, $columns = array() ) { + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + $this->_screen = $screen; + + if ( !empty( $columns ) ) { + $this->_columns = $columns; + add_filter( 'manage_' . $screen->id . '_columns', array( &$this, 'get_columns' ), 0 ); + } + } + + function get_column_info() { + $columns = get_column_headers( $this->_screen ); + $hidden = get_hidden_columns( $this->_screen ); + $sortable = array(); + + return array( $columns, $hidden, $sortable ); + } + + function get_columns() { + return $this->_columns; + } +} +?> \ No newline at end of file diff --git a/src/wp-admin/includes/manifest.php b/src/wp-admin/includes/manifest.php new file mode 100644 index 0000000..600b5db --- /dev/null +++ b/src/wp-admin/includes/manifest.php @@ -0,0 +1,203 @@ + __('From Computer'), // handler action suffix => tab text + 'type_url' => __('From URL'), + 'gallery' => __('Gallery'), + 'library' => __('Media Library') + ); + + return apply_filters('media_upload_tabs', $_default_tabs); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $tabs + * @return unknown + */ +function update_gallery_tab($tabs) { + global $wpdb; + + if ( !isset($_REQUEST['post_id']) ) { + unset($tabs['gallery']); + return $tabs; + } + + $post_id = intval($_REQUEST['post_id']); + + if ( $post_id ) + $attachments = intval( $wpdb->get_var( $wpdb->prepare( "SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent = %d", $post_id ) ) ); + + if ( empty($attachments) ) { + unset($tabs['gallery']); + return $tabs; + } + + $tabs['gallery'] = sprintf(__('Gallery (%s)'), "$attachments"); + + return $tabs; +} +add_filter('media_upload_tabs', 'update_gallery_tab'); + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + */ +function the_media_upload_tabs() { + global $redir_tab; + $tabs = media_upload_tabs(); + + if ( !empty($tabs) ) { + echo "
    \n"; + if ( isset($redir_tab) && array_key_exists($redir_tab, $tabs) ) + $current = $redir_tab; + elseif ( isset($_GET['tab']) && array_key_exists($_GET['tab'], $tabs) ) + $current = $_GET['tab']; + else + $current = apply_filters('media_upload_default_tab', 'type'); + + foreach ( $tabs as $callback => $text ) { + $class = ''; + if ( $current == $callback ) + $class = " class='current'"; + $href = add_query_arg(array('tab'=>$callback, 's'=>false, 'paged'=>false, 'post_mime_type'=>false, 'm'=>false)); + $link = "$text"; + echo "\t
  • $link
  • \n"; + } + echo "
\n"; + } +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $id + * @param unknown_type $alt + * @param unknown_type $title + * @param unknown_type $align + * @param unknown_type $url + * @param unknown_type $rel + * @param unknown_type $size + * @return unknown + */ +function get_image_send_to_editor($id, $caption, $title, $align, $url='', $rel = false, $size='medium', $alt = '') { + + $html = get_image_tag($id, $alt, $title, $align, $size); + + $rel = $rel ? ' rel="attachment wp-att-' . esc_attr($id).'"' : ''; + + if ( $url ) + $html = '$html"; + + $html = apply_filters( 'image_send_to_editor', $html, $id, $caption, $title, $align, $url, $size, $alt ); + + return $html; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.6.0 + * + * @param unknown_type $html + * @param unknown_type $id + * @param unknown_type $alt + * @param unknown_type $title + * @param unknown_type $align + * @param unknown_type $url + * @param unknown_type $size + * @return unknown + */ +function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $alt = '' ) { + + if ( empty($caption) || apply_filters( 'disable_captions', '' ) ) + return $html; + + $id = ( 0 < (int) $id ) ? 'attachment_' . $id : ''; + + if ( ! preg_match( '/width="([0-9]+)/', $html, $matches ) ) + return $html; + + $width = $matches[1]; + + $caption = str_replace( array( '>', '<', '"', "'" ), + array( '>', '<', '"', ''' ), + $caption + ); + + $html = preg_replace( '/(class=["\'][^\'"]*)align(none|left|right|center)\s?/', '$1', $html ); + if ( empty($align) ) + $align = 'none'; + + $shcode = '[caption id="' . $id . '" align="align' . $align + . '" width="' . $width . '" caption="' . addslashes($caption) . '"]' . $html . '[/caption]'; + + return apply_filters( 'image_add_caption_shortcode', $shcode, $html ); +} +add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 ); + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $html + */ +function media_send_to_editor($html) { +?> + + false )) { + + $time = current_time('mysql'); + if ( $post = get_post($post_id) ) { + if ( substr( $post->post_date, 0, 4 ) > 0 ) + $time = $post->post_date; + } + + $name = $_FILES[$file_id]['name']; + $file = wp_handle_upload($_FILES[$file_id], $overrides, $time); + + if ( isset($file['error']) ) + return new WP_Error( 'upload_error', $file['error'] ); + + $name_parts = pathinfo($name); + $name = trim( substr( $name, 0, -(1 + strlen($name_parts['extension'])) ) ); + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $title = $name; + $content = ''; + + // use image exif/iptc data for title and caption defaults if possible + if ( $image_meta = @wp_read_image_metadata($file) ) { + if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) + $title = $image_meta['title']; + if ( trim( $image_meta['caption'] ) ) + $content = $image_meta['caption']; + } + + // Construct the attachment array + $attachment = array_merge( array( + 'post_mime_type' => $type, + 'guid' => $url, + 'post_parent' => $post_id, + 'post_title' => $title, + 'post_content' => $content, + ), $post_data ); + + // This should never be set as it would then overwrite an existing attachment. + if ( isset( $attachment['ID'] ) ) + unset( $attachment['ID'] ); + + // Save the data + $id = wp_insert_attachment($attachment, $file, $post_id); + if ( !is_wp_error($id) ) { + wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); + } + + return $id; + +} + +/** + * This handles a sideloaded file in the same way as an uploaded file is handled by {@link media_handle_upload()} + * + * @since 2.6.0 + * + * @param array $file_array Array similar to a {@link $_FILES} upload array + * @param int $post_id The post ID the media is associated with + * @param string $desc Description of the sideloaded file + * @param array $post_data allows you to overwrite some of the attachment + * @return int|object The ID of the attachment or a WP_Error on failure + */ +function media_handle_sideload($file_array, $post_id, $desc = null, $post_data = array()) { + $overrides = array('test_form'=>false); + + $file = wp_handle_sideload($file_array, $overrides); + if ( isset($file['error']) ) + return new WP_Error( 'upload_error', $file['error'] ); + + $url = $file['url']; + $type = $file['type']; + $file = $file['file']; + $title = preg_replace('/\.[^.]+$/', '', basename($file)); + $content = ''; + + // use image exif/iptc data for title and caption defaults if possible + if ( $image_meta = @wp_read_image_metadata($file) ) { + if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) + $title = $image_meta['title']; + if ( trim( $image_meta['caption'] ) ) + $content = $image_meta['caption']; + } + + $title = isset($desc) ? $desc : ''; + + // Construct the attachment array + $attachment = array_merge( array( + 'post_mime_type' => $type, + 'guid' => $url, + 'post_parent' => $post_id, + 'post_title' => $title, + 'post_content' => $content, + ), $post_data ); + + // This should never be set as it would then overwrite an existing attachment. + if ( isset( $attachment['ID'] ) ) + unset( $attachment['ID'] ); + + // Save the attachment metadata + $id = wp_insert_attachment($attachment, $file, $post_id); + if ( !is_wp_error($id) ) + wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); + + return $id; +} + +/** + * {@internal Missing Short Description}} + * + * Wrap iframe content (produced by $content_func) in a doctype, html head/body + * etc any additional function args will be passed to content_func. + * + * @since 2.5.0 + * + * @param unknown_type $content_func + */ +function wp_iframe($content_func /* ... */) { +?> + + > + + +<?php bloginfo('name') ?> › <?php _e('Uploads'); ?> — <?php _e('WordPress'); ?> + + + + + class="no-js"> + + + + + +$title"; +} + +function get_upload_iframe_src($type) { + global $post_ID, $temp_ID; + $uploading_iframe_ID = (int) (0 == $post_ID ? $temp_ID : $post_ID); + $upload_iframe_src = add_query_arg('post_id', $uploading_iframe_ID, 'media-upload.php'); + + if ( 'media' != $type ) + $upload_iframe_src = add_query_arg('type', $type, $upload_iframe_src); + $upload_iframe_src = apply_filters($type . '_upload_iframe_src', $upload_iframe_src); + + return add_query_arg('TB_iframe', true, $upload_iframe_src); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function media_upload_form_handler() { + check_admin_referer('media-form'); + + $errors = null; + + if ( isset($_POST['send']) ) { + $keys = array_keys($_POST['send']); + $send_id = (int) array_shift($keys); + } + + if ( !empty($_POST['attachments']) ) foreach ( $_POST['attachments'] as $attachment_id => $attachment ) { + $post = $_post = get_post($attachment_id, ARRAY_A); + $post_type_object = get_post_type_object( $post[ 'post_type' ] ); + + if ( !current_user_can( $post_type_object->cap->edit_post, $attachment_id ) ) + continue; + + if ( isset($attachment['post_content']) ) + $post['post_content'] = $attachment['post_content']; + if ( isset($attachment['post_title']) ) + $post['post_title'] = $attachment['post_title']; + if ( isset($attachment['post_excerpt']) ) + $post['post_excerpt'] = $attachment['post_excerpt']; + if ( isset($attachment['menu_order']) ) + $post['menu_order'] = $attachment['menu_order']; + + if ( isset($send_id) && $attachment_id == $send_id ) { + if ( isset($attachment['post_parent']) ) + $post['post_parent'] = $attachment['post_parent']; + } + + $post = apply_filters('attachment_fields_to_save', $post, $attachment); + + if ( isset($attachment['image_alt']) ) { + $image_alt = get_post_meta($attachment_id, '_wp_attachment_image_alt', true); + if ( $image_alt != stripslashes($attachment['image_alt']) ) { + $image_alt = wp_strip_all_tags( stripslashes($attachment['image_alt']), true ); + // update_meta expects slashed + update_post_meta( $attachment_id, '_wp_attachment_image_alt', addslashes($image_alt) ); + } + } + + if ( isset($post['errors']) ) { + $errors[$attachment_id] = $post['errors']; + unset($post['errors']); + } + + if ( $post != $_post ) + wp_update_post($post); + + foreach ( get_attachment_taxonomies($post) as $t ) { + if ( isset($attachment[$t]) ) + wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false); + } + } + + if ( isset($_POST['insert-gallery']) || isset($_POST['update-gallery']) ) { ?> + + $html"; + } + + $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment); + return media_send_to_editor($html); + } + + return $errors; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function media_upload_image() { + $errors = array(); + $id = 0; + + if ( isset($_POST['html-upload']) && !empty($_FILES) ) { + check_admin_referer('media-form'); + // Upload File button was clicked + $id = media_handle_upload('async-upload', $_REQUEST['post_id']); + unset($_FILES); + if ( is_wp_error($id) ) { + $errors['upload_error'] = $id; + $id = false; + } + } + + if ( !empty($_POST['insertonlybutton']) ) { + $alt = $align = ''; + + $src = $_POST['insertonly']['src']; + if ( !empty($src) && !strpos($src, '://') ) + $src = "http://$src"; + $alt = esc_attr($_POST['insertonly']['alt']); + if ( isset($_POST['insertonly']['align']) ) { + $align = esc_attr($_POST['insertonly']['align']); + $class = " class='align$align'"; + } + if ( !empty($src) ) + $html = "$alt"; + + $html = apply_filters('image_send_to_editor_url', $html, esc_url_raw($src), $alt, $align); + return media_send_to_editor($html); + } + + if ( !empty($_POST) ) { + $return = media_upload_form_handler(); + + if ( is_string($return) ) + return $return; + if ( is_array($return) ) + $errors = $return; + } + + if ( isset($_POST['save']) ) { + $errors['upload_notice'] = __('Saved.'); + return media_upload_gallery(); + } + + if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' ) + return wp_iframe( 'media_upload_type_url_form', 'image', $errors, $id ); + + return wp_iframe( 'media_upload_type_form', 'image', $errors, $id ); +} + +/** + * Download an image from the specified URL and attach it to a post. + * + * @since 2.6.0 + * + * @param string $file The URL of the image to download + * @param int $post_id The post ID the media is to be associated with + * @param string $desc Optional. Description of the image + * @return string|WP_Error Populated HTML img tag on success + */ +function media_sideload_image($file, $post_id, $desc = null) { + if ( ! empty($file) ) { + // Download file to temp location + $tmp = download_url( $file ); + + // Set variables for storage + // fix file filename for query strings + preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $file, $matches); + $file_array['name'] = basename($matches[0]); + $file_array['tmp_name'] = $tmp; + + // If error storing temporarily, unlink + if ( is_wp_error( $tmp ) ) { + @unlink($file_array['tmp_name']); + $file_array['tmp_name'] = ''; + } + + // do the validation and storage stuff + $id = media_handle_sideload( $file_array, $post_id, $desc ); + // If error storing permanently, unlink + if ( is_wp_error($id) ) { + @unlink($file_array['tmp_name']); + return $id; + } + + $src = wp_get_attachment_url( $id ); + } + + // Finally check to make sure the file has been saved, then return the html + if ( ! empty($src) ) { + $alt = isset($desc) ? esc_attr($desc) : ''; + $html = "$alt"; + return $html; + } +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function media_upload_audio() { + $errors = array(); + $id = 0; + + if ( isset($_POST['html-upload']) && !empty($_FILES) ) { + check_admin_referer('media-form'); + // Upload File button was clicked + $id = media_handle_upload('async-upload', $_REQUEST['post_id']); + unset($_FILES); + if ( is_wp_error($id) ) { + $errors['upload_error'] = $id; + $id = false; + } + } + + if ( !empty($_POST['insertonlybutton']) ) { + $href = $_POST['insertonly']['href']; + if ( !empty($href) && !strpos($href, '://') ) + $href = "http://$href"; + + $title = esc_attr($_POST['insertonly']['title']); + if ( empty($title) ) + $title = esc_attr( basename($href) ); + + if ( !empty($title) && !empty($href) ) + $html = "$title"; + + $html = apply_filters('audio_send_to_editor_url', $html, $href, $title); + + return media_send_to_editor($html); + } + + if ( !empty($_POST) ) { + $return = media_upload_form_handler(); + + if ( is_string($return) ) + return $return; + if ( is_array($return) ) + $errors = $return; + } + + if ( isset($_POST['save']) ) { + $errors['upload_notice'] = __('Saved.'); + return media_upload_gallery(); + } + + if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' ) + return wp_iframe( 'media_upload_type_url_form', 'audio', $errors, $id ); + + return wp_iframe( 'media_upload_type_form', 'audio', $errors, $id ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function media_upload_video() { + $errors = array(); + $id = 0; + + if ( isset($_POST['html-upload']) && !empty($_FILES) ) { + check_admin_referer('media-form'); + // Upload File button was clicked + $id = media_handle_upload('async-upload', $_REQUEST['post_id']); + unset($_FILES); + if ( is_wp_error($id) ) { + $errors['upload_error'] = $id; + $id = false; + } + } + + if ( !empty($_POST['insertonlybutton']) ) { + $href = $_POST['insertonly']['href']; + if ( !empty($href) && !strpos($href, '://') ) + $href = "http://$href"; + + $title = esc_attr($_POST['insertonly']['title']); + if ( empty($title) ) + $title = esc_attr( basename($href) ); + + if ( !empty($title) && !empty($href) ) + $html = "$title"; + + $html = apply_filters('video_send_to_editor_url', $html, $href, $title); + + return media_send_to_editor($html); + } + + if ( !empty($_POST) ) { + $return = media_upload_form_handler(); + + if ( is_string($return) ) + return $return; + if ( is_array($return) ) + $errors = $return; + } + + if ( isset($_POST['save']) ) { + $errors['upload_notice'] = __('Saved.'); + return media_upload_gallery(); + } + + if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' ) + return wp_iframe( 'media_upload_type_url_form', 'video', $errors, $id ); + + return wp_iframe( 'media_upload_type_form', 'video', $errors, $id ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function media_upload_file() { + $errors = array(); + $id = 0; + + if ( isset($_POST['html-upload']) && !empty($_FILES) ) { + check_admin_referer('media-form'); + // Upload File button was clicked + $id = media_handle_upload('async-upload', $_REQUEST['post_id']); + unset($_FILES); + if ( is_wp_error($id) ) { + $errors['upload_error'] = $id; + $id = false; + } + } + + if ( !empty($_POST['insertonlybutton']) ) { + $href = $_POST['insertonly']['href']; + if ( !empty($href) && !strpos($href, '://') ) + $href = "http://$href"; + + $title = esc_attr($_POST['insertonly']['title']); + if ( empty($title) ) + $title = basename($href); + if ( !empty($title) && !empty($href) ) + $html = "$title"; + $html = apply_filters('file_send_to_editor_url', $html, esc_url_raw($href), $title); + return media_send_to_editor($html); + } + + if ( !empty($_POST) ) { + $return = media_upload_form_handler(); + + if ( is_string($return) ) + return $return; + if ( is_array($return) ) + $errors = $return; + } + + if ( isset($_POST['save']) ) { + $errors['upload_notice'] = __('Saved.'); + return media_upload_gallery(); + } + + if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' ) + return wp_iframe( 'media_upload_type_url_form', 'file', $errors, $id ); + + return wp_iframe( 'media_upload_type_form', 'file', $errors, $id ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function media_upload_gallery() { + $errors = array(); + + if ( !empty($_POST) ) { + $return = media_upload_form_handler(); + + if ( is_string($return) ) + return $return; + if ( is_array($return) ) + $errors = $return; + } + + wp_enqueue_script('admin-gallery'); + return wp_iframe( 'media_upload_gallery_form', $errors ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function media_upload_library() { + $errors = array(); + if ( !empty($_POST) ) { + $return = media_upload_form_handler(); + + if ( is_string($return) ) + return $return; + if ( is_array($return) ) + $errors = $return; + } + + return wp_iframe( 'media_upload_library_form', $errors ); +} + +/** + * Retrieve HTML for the image alignment radio buttons with the specified one checked. + * + * @since 2.7.0 + * + * @param unknown_type $post + * @param unknown_type $checked + * @return unknown + */ +function image_align_input_fields( $post, $checked = '' ) { + + if ( empty($checked) ) + $checked = get_user_setting('align', 'none'); + + $alignments = array('none' => __('None'), 'left' => __('Left'), 'center' => __('Center'), 'right' => __('Right')); + if ( !array_key_exists( (string) $checked, $alignments ) ) + $checked = 'none'; + + $out = array(); + foreach ( $alignments as $name => $label ) { + $name = esc_attr($name); + $out[] = ""; + } + return join("\n", $out); +} + +/** + * Retrieve HTML for the size radio buttons with the specified one checked. + * + * @since 2.7.0 + * + * @param unknown_type $post + * @param unknown_type $check + * @return unknown + */ +function image_size_input_fields( $post, $check = '' ) { + + // get a list of the actual pixel dimensions of each possible intermediate version of this image + $size_names = array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full Size')); + + if ( empty($check) ) + $check = get_user_setting('imgsize', 'medium'); + + foreach ( $size_names as $size => $label ) { + $downsize = image_downsize($post->ID, $size); + $checked = ''; + + // is this size selectable? + $enabled = ( $downsize[3] || 'full' == $size ); + $css_id = "image-size-{$size}-{$post->ID}"; + // if this size is the default but that's not available, don't select it + if ( $size == $check ) { + if ( $enabled ) + $checked = " checked='checked'"; + else + $check = ''; + } elseif ( !$check && $enabled && 'thumbnail' != $size ) { + // if $check is not enabled, default to the first available size that's bigger than a thumbnail + $check = $size; + $checked = " checked='checked'"; + } + + $html = "
"; + + $html .= ""; + // only show the dimensions if that choice is available + if ( $enabled ) + $html .= " "; + + $html .= '
'; + + $out[] = $html; + } + + return array( + 'label' => __('Size'), + 'input' => 'html', + 'html' => join("\n", $out), + ); +} + +/** + * Retrieve HTML for the Link URL buttons with the default link type as specified. + * + * @since 2.7.0 + * + * @param unknown_type $post + * @param unknown_type $url_type + * @return unknown + */ +function image_link_input_fields($post, $url_type = '') { + + $file = wp_get_attachment_url($post->ID); + $link = get_attachment_link($post->ID); + + if ( empty($url_type) ) + $url_type = get_user_setting('urlbutton', 'post'); + + $url = ''; + if ( $url_type == 'file' ) + $url = $file; + elseif ( $url_type == 'post' ) + $url = $link; + + return " +
+ + + +"; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $form_fields + * @param unknown_type $post + * @return unknown + */ +function image_attachment_fields_to_edit($form_fields, $post) { + if ( substr($post->post_mime_type, 0, 5) == 'image' ) { + $alt = get_post_meta($post->ID, '_wp_attachment_image_alt', true); + if ( empty($alt) ) + $alt = ''; + + $form_fields['post_title']['required'] = true; + + $form_fields['image_alt'] = array( + 'value' => $alt, + 'label' => __('Alternate Text'), + 'helps' => __('Alt text for the image, e.g. “The Mona Lisa”') + ); + + $form_fields['align'] = array( + 'label' => __('Alignment'), + 'input' => 'html', + 'html' => image_align_input_fields($post, get_option('image_default_align')), + ); + + $form_fields['image-size'] = image_size_input_fields( $post, get_option('image_default_size', 'medium') ); + + } else { + unset( $form_fields['image_alt'] ); + } + return $form_fields; +} + +add_filter('attachment_fields_to_edit', 'image_attachment_fields_to_edit', 10, 2); + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $form_fields + * @param unknown_type $post + * @return unknown + */ +function media_single_attachment_fields_to_edit( $form_fields, $post ) { + unset($form_fields['url'], $form_fields['align'], $form_fields['image-size']); + return $form_fields; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.8.0 + * + * @param unknown_type $form_fields + * @param unknown_type $post + * @return unknown + */ +function media_post_single_attachment_fields_to_edit( $form_fields, $post ) { + unset($form_fields['image_url']); + return $form_fields; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $post + * @param unknown_type $attachment + * @return unknown + */ +function image_attachment_fields_to_save($post, $attachment) { + if ( substr($post['post_mime_type'], 0, 5) == 'image' ) { + if ( strlen(trim($post['post_title'])) == 0 ) { + $post['post_title'] = preg_replace('/\.\w+$/', '', basename($post['guid'])); + $post['errors']['post_title']['errors'][] = __('Empty Title filled from filename.'); + } + } + + return $post; +} + +add_filter('attachment_fields_to_save', 'image_attachment_fields_to_save', 10, 2); + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $html + * @param unknown_type $attachment_id + * @param unknown_type $attachment + * @return unknown + */ +function image_media_send_to_editor($html, $attachment_id, $attachment) { + $post =& get_post($attachment_id); + if ( substr($post->post_mime_type, 0, 5) == 'image' ) { + $url = $attachment['url']; + $align = !empty($attachment['align']) ? $attachment['align'] : 'none'; + $size = !empty($attachment['image-size']) ? $attachment['image-size'] : 'medium'; + $alt = !empty($attachment['image_alt']) ? $attachment['image_alt'] : ''; + $rel = ( $url == get_attachment_link($attachment_id) ); + + return get_image_send_to_editor($attachment_id, $attachment['post_excerpt'], $attachment['post_title'], $align, $url, $rel, $size, $alt); + } + + return $html; +} + +add_filter('media_send_to_editor', 'image_media_send_to_editor', 10, 3); + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $post + * @param unknown_type $errors + * @return unknown + */ +function get_attachment_fields_to_edit($post, $errors = null) { + if ( is_int($post) ) + $post =& get_post($post); + if ( is_array($post) ) + $post = (object) $post; + + $image_url = wp_get_attachment_url($post->ID); + + $edit_post = sanitize_post($post, 'edit'); + + + + $form_fields = array( + 'post_title' => array( + 'label' => __('Title'), + 'value' => $edit_post->post_title + ), + 'image_alt' => array(), + 'post_excerpt' => array( + 'label' => __('Caption'), + 'value' => $edit_post->post_excerpt + ), + 'post_content' => array( + 'label' => __('Description'), + 'value' => $edit_post->post_content, + 'input' => 'textarea' + ), + 'url' => array( + 'label' => __('Link URL'), + 'input' => 'html', + 'html' => image_link_input_fields($post, get_option('image_default_link_type')), + 'helps' => __('Enter a link URL or click above for presets.') + ), + 'menu_order' => array( + 'label' => __('Order'), + 'value' => $edit_post->menu_order + ), + 'image_url' => array( + 'label' => __('File URL'), + 'input' => 'html', + 'html' => "
", + 'value' => wp_get_attachment_url($post->ID), + 'helps' => __('Location of the uploaded file.') + ) + ); + + foreach ( get_attachment_taxonomies($post) as $taxonomy ) { + $t = (array) get_taxonomy($taxonomy); + if ( ! $t['public'] ) + continue; + if ( empty($t['label']) ) + $t['label'] = $taxonomy; + if ( empty($t['args']) ) + $t['args'] = array(); + + $terms = get_object_term_cache($post->ID, $taxonomy); + if ( empty($terms) ) + $terms = wp_get_object_terms($post->ID, $taxonomy, $t['args']); + + $values = array(); + + foreach ( $terms as $term ) + $values[] = $term->name; + $t['value'] = join(', ', $values); + + $form_fields[$taxonomy] = $t; + } + + // Merge default fields with their errors, so any key passed with the error (e.g. 'error', 'helps', 'value') will replace the default + // The recursive merge is easily traversed with array casting: foreach( (array) $things as $thing ) + $form_fields = array_merge_recursive($form_fields, (array) $errors); + + $form_fields = apply_filters('attachment_fields_to_edit', $form_fields, $post); + + return $form_fields; +} + +/** + * Retrieve HTML for media items of post gallery. + * + * The HTML markup retrieved will be created for the progress of SWF Upload + * component. Will also create link for showing and hiding the form to modify + * the image attachment. + * + * @since 2.5.0 + * + * @param int $post_id Optional. Post ID. + * @param array $errors Errors for attachment, if any. + * @return string + */ +function get_media_items( $post_id, $errors ) { + $attachments = array(); + if ( $post_id ) { + $post = get_post($post_id); + if ( $post && $post->post_type == 'attachment' ) + $attachments = array($post->ID => $post); + else + $attachments = get_children( array( 'post_parent' => $post_id, 'post_type' => 'attachment', 'orderby' => 'menu_order ASC, ID', 'order' => 'DESC') ); + } else { + if ( is_array($GLOBALS['wp_the_query']->posts) ) + foreach ( $GLOBALS['wp_the_query']->posts as $attachment ) + $attachments[$attachment->ID] = $attachment; + } + + $output = ''; + foreach ( (array) $attachments as $id => $attachment ) { + if ( $attachment->post_status == 'trash' ) + continue; + if ( $item = get_media_item( $id, array( 'errors' => isset($errors[$id]) ? $errors[$id] : null) ) ) + $output .= "\n
$item\n
"; + } + + return $output; +} + +/** + * Retrieve HTML form for modifying the image attachment. + * + * @since 2.5.0 + * + * @param int $attachment_id Attachment ID for modification. + * @param string|array $args Optional. Override defaults. + * @return string HTML form for attachment. + */ +function get_media_item( $attachment_id, $args = null ) { + global $redir_tab; + + if ( ( $attachment_id = intval( $attachment_id ) ) && $thumb_url = wp_get_attachment_image_src( $attachment_id, 'thumbnail', true ) ) + $thumb_url = $thumb_url[0]; + else + $thumb_url = false; + + $post = get_post( $attachment_id ); + + $default_args = array( 'errors' => null, 'send' => $post->post_parent ? post_type_supports( get_post_type( $post->post_parent ), 'editor' ) : true, 'delete' => true, 'toggle' => true, 'show_title' => true ); + $args = wp_parse_args( $args, $default_args ); + $args = apply_filters( 'get_media_item_args', $args ); + extract( $args, EXTR_SKIP ); + + $toggle_on = __( 'Show' ); + $toggle_off = __( 'Hide' ); + + $filename = esc_html( basename( $post->guid ) ); + $title = esc_attr( $post->post_title ); + + if ( $_tags = get_the_tags( $attachment_id ) ) { + foreach ( $_tags as $tag ) + $tags[] = $tag->name; + $tags = esc_attr( join( ', ', $tags ) ); + } + + $post_mime_types = get_post_mime_types(); + $keys = array_keys( wp_match_mime_types( array_keys( $post_mime_types ), $post->post_mime_type ) ); + $type = array_shift( $keys ); + $type_html = ""; + + $form_fields = get_attachment_fields_to_edit( $post, $errors ); + + if ( $toggle ) { + $class = empty( $errors ) ? 'startclosed' : 'startopen'; + $toggle_links = " + $toggle_on + $toggle_off"; + } else { + $class = 'form-table'; + $toggle_links = ''; + } + + $display_title = ( !empty( $title ) ) ? $title : $filename; // $title shouldn't ever be empty, but just in case + $display_title = $show_title ? "
" . wp_html_excerpt( $display_title, 60 ) . "
" : ''; + + $gallery = ( ( isset( $_REQUEST['tab'] ) && 'gallery' == $_REQUEST['tab'] ) || ( isset( $redir_tab ) && 'gallery' == $redir_tab ) ); + $order = ''; + + foreach ( $form_fields as $key => $val ) { + if ( 'menu_order' == $key ) { + if ( $gallery ) + $order = ""; + else + $order = ""; + + unset( $form_fields['menu_order'] ); + break; + } + } + + $media_dims = ''; + $meta = wp_get_attachment_metadata( $post->ID ); + if ( is_array( $meta ) && array_key_exists( 'width', $meta ) && array_key_exists( 'height', $meta ) ) + $media_dims .= "{$meta['width']} × {$meta['height']} "; + $media_dims = apply_filters( 'media_meta', $media_dims, $post ); + + $image_edit_button = ''; + if ( gd_edit_image_support( $post->post_mime_type ) ) { + $nonce = wp_create_nonce( "image_editor-$post->ID" ); + $image_edit_button = " "; + } + + $attachment_url = get_permalink( $attachment_id ); + + $item = " + $type_html + $toggle_links + $order + $display_title + + + + + \n"; + + + + $item .= " + + + + \n"; + + $defaults = array( + 'input' => 'text', + 'required' => false, + 'value' => '', + 'extra_rows' => array(), + ); + + if ( $send ) + $send = get_submit_button( __( 'Insert into Post' ), 'button', "send[$attachment_id]", false ); + if ( $delete && current_user_can( 'delete_post', $attachment_id ) ) { + if ( !EMPTY_TRASH_DAYS ) { + $delete = "" . __( 'Delete Permanently' ) . ''; + } elseif ( !MEDIA_TRASH ) { + $delete = "" . __( 'Delete' ) . " + "; + } else { + $delete = "" . __( 'Move to Trash' ) . " + "; + } + } else { + $delete = ''; + } + + $thumbnail = ''; + $calling_post_id = 0; + if ( isset( $_GET['post_id'] ) ) + $calling_post_id = absint( $_GET['post_id'] ); + elseif ( isset( $_POST ) && count( $_POST ) ) // Like for async-upload where $_GET['post_id'] isn't set + $calling_post_id = $post->post_parent; + if ( 'image' == $type && $calling_post_id && current_theme_supports( 'post-thumbnails', get_post_type( $calling_post_id ) ) && get_post_thumbnail_id( $calling_post_id ) != $attachment_id ) { + $ajax_nonce = wp_create_nonce( "set_post_thumbnail-$calling_post_id" ); + $thumbnail = "" . esc_html__( "Use as featured image" ) . ""; + } + + if ( ( $send || $thumbnail || $delete ) && !isset( $form_fields['buttons'] ) ) + $form_fields['buttons'] = array( 'tr' => "\t\t\n" ); + + $hidden_fields = array(); + + foreach ( $form_fields as $id => $field ) { + if ( $id[0] == '_' ) + continue; + + if ( !empty( $field['tr'] ) ) { + $item .= $field['tr']; + continue; + } + + $field = array_merge( $defaults, $field ); + $name = "attachments[$attachment_id][$id]"; + + if ( $field['input'] == 'hidden' ) { + $hidden_fields[$name] = $field['value']; + continue; + } + + $required = $field['required'] ? '*' : ''; + $aria_required = $field['required'] ? " aria-required='true' " : ''; + $class = $id; + $class .= $field['required'] ? ' form-required' : ''; + + $item .= "\t\t\n\t\t\t\n\t\t\t\n\t\t\n"; + + $extra_rows = array(); + + if ( !empty( $field['errors'] ) ) + foreach ( array_unique( (array) $field['errors'] ) as $error ) + $extra_rows['error'][] = $error; + + if ( !empty( $field['extra_rows'] ) ) + foreach ( $field['extra_rows'] as $class => $rows ) + foreach ( (array) $rows as $html ) + $extra_rows[$class][] = $html; + + foreach ( $extra_rows as $class => $rows ) + foreach ( $rows as $html ) + $item .= "\t\t\n"; + } + + if ( !empty( $form_fields['_final'] ) ) + $item .= "\t\t\n"; + $item .= "\t\n"; + $item .= "\t
+

+

$image_edit_button

+
+

" . __('File name:') . " $filename

+

" . __('File type:') . " $post->post_mime_type

+

" . __('Upload date:') . " " . mysql2date( get_option('date_format'), $post->post_date ). '

'; + if ( !empty( $media_dims ) ) + $item .= "

" . __('Dimensions:') . " $media_dims

\n"; + + $item .= "
$send $thumbnail $delete
"; + if ( !empty( $field[ $field['input'] ] ) ) + $item .= $field[ $field['input'] ]; + elseif ( $field['input'] == 'textarea' ) { + if ( user_can_richedit() ) { // textarea_escaped when user_can_richedit() = false + $field['value'] = esc_textarea( $field['value'] ); + } + $item .= "'; + } else { + $item .= ""; + } + if ( !empty( $field['helps'] ) ) + $item .= "

" . join( "

\n

", array_unique( (array) $field['helps'] ) ) . '

'; + $item .= "
$html
{$form_fields['_final']}
\n"; + + foreach ( $hidden_fields as $name => $value ) + $item .= "\t\n"; + + if ( $post->post_parent < 1 && isset( $_REQUEST['post_id'] ) ) { + $parent = (int) $_REQUEST['post_id']; + $parent_name = "attachments[$attachment_id][post_parent]"; + $item .= "\t\n"; + } + + return $item; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + */ +function media_upload_header() { + ?> + +
+ +
+ 1024 && $u < count( $sizes ) - 1; $u++ ) + $upload_size_unit /= 1024; + if ( $u < 0 ) { + $upload_size_unit = 0; + $u = 0; + } else { + $upload_size_unit = (int) $upload_size_unit; + } +?> + +
+ + + +
+
+ + get_error_message(); ?> + +
+' . sprintf( __( 'Sorry, you have filled your storage quota (%s MB).' ), get_space_allowed() ) . '

'; + return; +} + +do_action('pre-upload-ui'); + +if ( $flash ) : + +// Set the post params, which SWFUpload will post back with the file, and pass +// them through a filter. +$post_params = array( + "post_id" => $post_id, + "auth_cookie" => (is_ssl() ? $_COOKIE[SECURE_AUTH_COOKIE] : $_COOKIE[AUTH_COOKIE]), + "logged_in_cookie" => $_COOKIE[LOGGED_IN_COOKIE], + "_wpnonce" => wp_create_nonce('media-form'), + "type" => $type, + "tab" => $tab, + "short" => "1", +); +$post_params = apply_filters( 'swfupload_post_params', $post_params ); +$p = array(); +foreach ( $post_params as $param => $val ) + $p[] = "\t\t'$param' : '$val'"; +$post_params_str = implode( ", \n", $p ); + +// #8545. wmode=transparent cannot be used with SWFUpload +if ( 'media-new.php' == $pagenow ) { + $upload_image_path = get_user_option( 'admin_color' ); + if ( 'classic' != $upload_image_path ) + $upload_image_path = 'fresh'; + $upload_image_path = admin_url( 'images/upload-' . $upload_image_path . '.png?ver=20101205' ); +} else { + $upload_image_path = includes_url( 'images/upload.png?ver=20100531' ); +} + +?> + + +
+ + +
+ +
+ +
+

+ +

+
+ + +
> + +

+ + + + +

+
+

+ +

+ + +
+ + + +
+ + + + +

+ + + + +
+'.esc_html($id->get_error_message()).'
'; + exit; + } +} +?> +
+

+ +

+ + + +
+ + + + + +

+ + + +
+
+ +
+
+
+ + + +
+ + + + + + + | + | + +
+ + + +
+ + + + + + + +
    + $reals ) + foreach ( $reals as $real ) + if ( isset($num_posts[$_type]) ) + $num_posts[$_type] += $_num_posts[$real]; + else + $num_posts[$_type] = $_num_posts[$real]; +// If available type specified by media button clicked, filter by that type +if ( empty($_GET['post_mime_type']) && !empty($num_posts[$type]) ) { + $_GET['post_mime_type'] = $type; + list($post_mime_types, $avail_post_mime_types) = wp_edit_attachments_query(); +} +if ( empty($_GET['post_mime_type']) || $_GET['post_mime_type'] == 'all' ) + $class = ' class="current"'; +else + $class = ''; +$type_links[] = "
  • 'all', 'paged'=>false, 'm'=>false))) . "'$class>".__('All Types').""; +foreach ( $post_mime_types as $mime_type => $label ) { + $class = ''; + + if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) ) + continue; + + if ( isset($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) ) + $class = ' class="current"'; + + $type_links[] = "
  • $mime_type, 'paged'=>false))) . "'$class>" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), "" . number_format_i18n( $num_posts[$mime_type] ) . '') . ''; +} +echo implode(' |
  • ', apply_filters( 'media_upload_mime_type_links', $type_links ) ) . ''; +unset($type_links); +?> +
+ +
+ + add_query_arg( 'paged', '%#%' ), + 'format' => '', + 'prev_text' => __('«'), + 'next_text' => __('»'), + 'total' => ceil($wp_query->found_posts / 10), + 'current' => $_GET['paged'] +)); + +if ( $page_links ) + echo "
$page_links
"; +?> + +
+posts WHERE post_type = 'attachment' ORDER BY post_date DESC"; + +$arc_result = $wpdb->get_results( $arc_query ); + +$month_count = count($arc_result); + +if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ?> + + + + + +
+ +
+
+
+ +
+ + + + + + +
+ + +
+

+ + +

+
+ + + + + + +'; + } else { + $caption = ''; + } + + $default_align = get_option('image_default_align'); + if ( empty($default_align) ) + $default_align = 'none'; + + return ' +

' . __('Insert an image from another web site') . '

+ + + + + + + + + + + + + + + + ' . $caption . ' + + + + + + + + + + ' . _insert_into_post_button('image') . ' +
+ + * +
+ + * +
+ + +

' . __('Alt text for the image, e.g. “The Mona Lisa”') . '

+ + + + + + + + +
+ +
+ + + +

' . __('Enter a link URL or click above for presets.') . '

+'; + +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @return unknown + */ +function type_url_form_audio() { + return ' + + + + + + + + + + + ' . _insert_into_post_button('audio') . ' +
+ + * +
+ + * +
' . __('Link text, e.g. “Still Alive by Jonathan Coulton”') . '
+'; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @return unknown + */ +function type_url_form_video() { + return ' + + + + + + + + + + + ' . _insert_into_post_button('video') . ' +
+ + * +
+ + * +
' . __('Link text, e.g. “Lucy on YouTube”') . '
+'; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @return unknown + */ +function type_url_form_file() { + return ' + + + + + + + + + + + ' . _insert_into_post_button('file') . ' +
+ + * +
+ + * +
' . __('Link text, e.g. “Ransom Demands (PDF)”') . '
+'; +} + + +function _insert_into_post_button($type) { + if ( !post_type_supports(get_post_type($_GET['post_id']), 'editor') ) + return ''; + + if ( 'image' == $type ) + return ' + + + + + + + '; + + return ' + + + + ' . get_submit_button( __( 'Insert into Post' ), 'button', 'insertonlybutton', false ) . ' + + + '; +} + +/** + * {@internal Missing Short Description}} + * + * Support a GET parameter for disabling the flash uploader. + * + * @since 2.6.0 + * + * @param unknown_type $flash + * @return unknown + */ +function media_upload_use_flash($flash) { + if ( array_key_exists('flash', $_REQUEST) ) + $flash = !empty($_REQUEST['flash']); + return $flash; +} + +add_filter('flash_uploader', 'media_upload_use_flash'); + +/** + * {@internal Missing Short Description}} + * + * @since 2.6.0 + */ +function media_upload_flash_bypass() { + echo '

'; + printf( __('You are using the Flash uploader. Problems? Try the Browser uploader instead.'), esc_url(add_query_arg('flash', 0)) ); + echo '

'; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.6.0 + */ +function media_upload_html_bypass($flash = true) { + echo '

'; + _e('You are using the Browser uploader.'); + if ( $flash ) { + // the user manually selected the browser uploader, so let them switch back to Flash + echo ' '; + printf( __('Try the Flash uploader instead.'), esc_url(add_query_arg('flash', 1)) ); + } + echo "

\n"; +} + +add_action('post-flash-upload-ui', 'media_upload_flash_bypass'); +add_action('post-html-upload-ui', 'media_upload_html_bypass'); + +/** + * {@internal Missing Short Description}} + * + * Make sure the GET parameter sticks when we submit a form. + * + * @since 2.6.0 + * + * @param unknown_type $url + * @return unknown + */ +function media_upload_bypass_url($url) { + if ( array_key_exists('flash', $_REQUEST) ) + $url = add_query_arg('flash', intval($_REQUEST['flash'])); + return $url; +} + +add_filter('media_upload_form_url', 'media_upload_bypass_url'); + +add_filter('async_upload_image', 'get_media_item', 10, 2); +add_filter('async_upload_audio', 'get_media_item', 10, 2); +add_filter('async_upload_video', 'get_media_item', 10, 2); +add_filter('async_upload_file', 'get_media_item', 10, 2); + +add_action('media_upload_image', 'media_upload_image'); +add_action('media_upload_audio', 'media_upload_audio'); +add_action('media_upload_video', 'media_upload_video'); +add_action('media_upload_file', 'media_upload_file'); + +add_filter('media_upload_gallery', 'media_upload_gallery'); + +add_filter('media_upload_library', 'media_upload_library'); diff --git a/src/wp-admin/includes/menu.php b/src/wp-admin/includes/menu.php new file mode 100644 index 0000000..fa85e4b --- /dev/null +++ b/src/wp-admin/includes/menu.php @@ -0,0 +1,230 @@ + $sub) { + foreach ($sub as $index => $data) { + if ( ! current_user_can($data[1]) ) { + unset(${$sub_loop}[$parent][$index]); + $_wp_submenu_nopriv[$parent][$data[2]] = true; + } + } + unset($index, $data); + + if ( empty(${$sub_loop}[$parent]) ) + unset(${$sub_loop}[$parent]); + } + unset($sub, $parent); +} +unset($sub_loop); + +// Loop over the top-level menu. +// Menus for which the original parent is not accessible due to lack of privs will have the next +// submenu in line be assigned as the new menu parent. +foreach ( $menu as $id => $data ) { + if ( empty($submenu[$data[2]]) ) + continue; + $subs = $submenu[$data[2]]; + $first_sub = array_shift($subs); + $old_parent = $data[2]; + $new_parent = $first_sub[2]; + // If the first submenu is not the same as the assigned parent, + // make the first submenu the new parent. + if ( $new_parent != $old_parent ) { + $_wp_real_parent_file[$old_parent] = $new_parent; + $menu[$id][2] = $new_parent; + + foreach ($submenu[$old_parent] as $index => $data) { + $submenu[$new_parent][$index] = $submenu[$old_parent][$index]; + unset($submenu[$old_parent][$index]); + } + unset($submenu[$old_parent], $index); + + if ( isset($_wp_submenu_nopriv[$old_parent]) ) + $_wp_submenu_nopriv[$new_parent] = $_wp_submenu_nopriv[$old_parent]; + } +} +unset($id, $data, $subs, $first_sub, $old_parent, $new_parent); + +if ( is_network_admin() ) + do_action('network_admin_menu', ''); +elseif ( is_user_admin() ) + do_action('user_admin_menu', ''); +else + do_action('admin_menu', ''); + +// Remove menus that have no accessible submenus and require privs that the user does not have. +// Run re-parent loop again. +foreach ( $menu as $id => $data ) { + if ( ! current_user_can($data[1]) ) + $_wp_menu_nopriv[$data[2]] = true; + + // If there is only one submenu and it is has same destination as the parent, + // remove the submenu. + if ( ! empty( $submenu[$data[2]] ) && 1 == count ( $submenu[$data[2]] ) ) { + $subs = $submenu[$data[2]]; + $first_sub = array_shift($subs); + if ( $data[2] == $first_sub[2] ) + unset( $submenu[$data[2]] ); + } + + // If submenu is empty... + if ( empty($submenu[$data[2]]) ) { + // And user doesn't have privs, remove menu. + if ( isset( $_wp_menu_nopriv[$data[2]] ) ) { + unset($menu[$id]); + } + } +} +unset($id, $data, $subs, $first_sub); + +// Remove any duplicated separators +$separator_found = false; +foreach ( $menu as $id => $data ) { + if ( 0 == strcmp('wp-menu-separator', $data[4] ) ) { + if (false == $separator_found) { + $separator_found = true; + } else { + unset($menu[$id]); + $separator_found = false; + } + } else { + $separator_found = false; + } +} +unset($id, $data); + +function add_cssclass($add, $class) { + $class = empty($class) ? $add : $class .= ' ' . $add; + return $class; +} + +function add_menu_classes($menu) { + + $first = $lastorder = false; + $i = 0; + $mc = count($menu); + foreach ( $menu as $order => $top ) { + $i++; + + if ( 0 == $order ) { // dashboard is always shown/single + $menu[0][4] = add_cssclass('menu-top-first', $top[4]); + $lastorder = 0; + continue; + } + + if ( 0 === strpos($top[2], 'separator') ) { // if separator + $first = true; + $c = $menu[$lastorder][4]; + $menu[$lastorder][4] = add_cssclass('menu-top-last', $c); + continue; + } + + if ( $first ) { + $c = $menu[$order][4]; + $menu[$order][4] = add_cssclass('menu-top-first', $c); + $first = false; + } + + if ( $mc == $i ) { // last item + $c = $menu[$order][4]; + $menu[$order][4] = add_cssclass('menu-top-last', $c); + } + + $lastorder = $order; + } + + return apply_filters( 'add_menu_classes', $menu ); +} + +uksort($menu, "strnatcasecmp"); // make it all pretty + +if ( apply_filters('custom_menu_order', false) ) { + $menu_order = array(); + foreach ( $menu as $menu_item ) { + $menu_order[] = $menu_item[2]; + } + unset($menu_item); + $default_menu_order = $menu_order; + $menu_order = apply_filters('menu_order', $menu_order); + $menu_order = array_flip($menu_order); + $default_menu_order = array_flip($default_menu_order); + + function sort_menu($a, $b) { + global $menu_order, $default_menu_order; + $a = $a[2]; + $b = $b[2]; + if ( isset($menu_order[$a]) && !isset($menu_order[$b]) ) { + return -1; + } elseif ( !isset($menu_order[$a]) && isset($menu_order[$b]) ) { + return 1; + } elseif ( isset($menu_order[$a]) && isset($menu_order[$b]) ) { + if ( $menu_order[$a] == $menu_order[$b] ) + return 0; + return ($menu_order[$a] < $menu_order[$b]) ? -1 : 1; + } else { + return ($default_menu_order[$a] <= $default_menu_order[$b]) ? -1 : 1; + } + } + + usort($menu, 'sort_menu'); + unset($menu_order, $default_menu_order); +} + +// Remove the last menu item if it is a separator. +$last_menu_key = array_pop( array_keys( $menu ) ); +if ( 'wp-menu-separator' == $menu[ $last_menu_key ][ 4 ] ) + unset( $menu[ $last_menu_key ] ); +unset( $last_menu_key ); + +if ( !user_can_access_admin_page() ) { + do_action('admin_page_access_denied'); + wp_die( __('You do not have sufficient permissions to access this page.') ); +} + +$menu = add_menu_classes($menu); + +?> \ No newline at end of file diff --git a/src/wp-admin/includes/meta-boxes.php b/src/wp-admin/includes/meta-boxes.php new file mode 100644 index 0000000..6d396ad --- /dev/null +++ b/src/wp-admin/includes/meta-boxes.php @@ -0,0 +1,914 @@ +post_type; + $post_type_object = get_post_type_object($post_type); + $can_publish = current_user_can($post_type_object->cap->publish_posts); +?> +
+ +
+ + +
+ +
+ +
+
+post_status && 'future' != $post->post_status && 'pending' != $post->post_status ) { ?> +post_status ) { ?>style="display:none" type="submit" name="save" id="save-post" value="" tabindex="4" class="button button-highlighted" /> +post_status && $can_publish ) { ?> + + + +
+ +
+post_status ) { + $preview_link = esc_url( get_permalink( $post->ID ) ); + $preview_button = __( 'Preview Changes' ); +} else { + $preview_link = get_permalink( $post->ID ); + if ( is_ssl() ) + $preview_link = str_replace( 'http://', 'https://', $preview_link ); + $preview_link = esc_url( apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ) ) ); + $preview_button = __( 'Preview' ); +} +?> + + +
+ +
+
+ +
+ +
+ +post_status ) { + case 'private': + _e('Privately Published'); + break; + case 'publish': + _e('Published'); + break; + case 'future': + _e('Scheduled'); + break; + case 'pending': + _e('Pending Review'); + break; + case 'draft': + case 'auto-draft': + _e('Draft'); + break; +} +?> + +post_status || 'private' == $post->post_status || $can_publish ) { ?> +post_status ) { ?>style="display:none;" class="edit-post-status hide-if-no-js" tabindex='4'> + +
+ + + + +
+ + +
+ +
+ post_status ) { + $post->post_password = ''; + $visibility = 'private'; + $visibility_trans = __('Private'); +} elseif ( !empty( $post->post_password ) ) { + $visibility = 'password'; + $visibility_trans = __('Password protected'); +} elseif ( $post_type == 'post' && is_sticky( $post->ID ) ) { + $visibility = 'public'; + $visibility_trans = __('Public, Sticky'); +} else { + $visibility = 'public'; + $visibility_trans = __('Public'); +} + +echo esc_html( $visibility_trans ); ?> + + + +
+ + +ID)); ?> /> + + + + + />
+ +ID ) ); ?> tabindex="4" />
+ + />
+
+ />
+ +

+ + +

+
+ + +
+ +ID ) { + if ( 'future' == $post->post_status ) { // scheduled for publishing at a future date + $stamp = __('Scheduled for: %1$s'); + } else if ( 'publish' == $post->post_status || 'private' == $post->post_status ) { // already published + $stamp = __('Published on: %1$s'); + } else if ( '0000-00-00 00:00:00' == $post->post_date_gmt ) { // draft, 1 or more saves, no date specified + $stamp = __('Publish immediately'); + } else if ( time() < strtotime( $post->post_date_gmt . ' +0000' ) ) { // draft, 1 or more saves, future date specified + $stamp = __('Schedule for: %1$s'); + } else { // draft, 1 or more saves, date specified + $stamp = __('Publish on: %1$s'); + } + $date = date_i18n( $datef, strtotime( $post->post_date ) ); +} else { // draft (no saves, and thus no date specified) + $stamp = __('Publish immediately'); + $date = date_i18n( $datef, strtotime( current_time('mysql') ) ); +} + +if ( $can_publish ) : // Contributors don't get to choose the date of publish ?> +
+ + + +
+
+ + + +
+
+
+ +
+ +
+ID ) ) { + if ( !EMPTY_TRASH_DAYS ) + $delete_text = __('Delete Permanently'); + else + $delete_text = __('Move to Trash'); + ?> + +
+ +
+ +post_status, array('publish', 'future', 'private') ) || 0 == $post->ID ) { + if ( $can_publish ) : + if ( !empty($post->post_date_gmt) && time() < strtotime( $post->post_date_gmt . ' +0000' ) ) : ?> + + '5', 'accesskey' => 'p' ) ); ?> + + + '5', 'accesskey' => 'p' ) ); ?> + + + '5', 'accesskey' => 'p' ) ); ?> + + + + +
+
+
+
+ +post_type, 'post-formats' ) ) : + $post_formats = get_theme_support( 'post-formats' ); + + if ( is_array( $post_formats[0] ) ) : + $post_format = get_post_format( $post->ID ); + if ( !$post_format ) + $post_format = '0'; + // Add in the current one if it isn't there yet, in case the current theme doesn't support it + if ( $post_format && !in_array( $post_format, $post_formats[0] ) ) + $post_formats[0][] = $post_format; + ?> +
+ /> + +
/> +
+
+ 'post_tag'); + if ( !isset($box['args']) || !is_array($box['args']) ) + $args = array(); + else + $args = $box['args']; + extract( wp_parse_args($args, $defaults), EXTR_SKIP ); + $tax_name = esc_attr($taxonomy); + $taxonomy = get_taxonomy($taxonomy); + $disabled = !current_user_can($taxonomy->cap->assign_terms) ? 'disabled="disabled"' : ''; +?> +
+
+
+

labels->add_or_remove_items; ?>

+
+ cap->assign_terms) ) : ?> +
+ +
labels->add_new_item; ?>
+

+

+
+

labels->separate_items_with_commas ); ?>

+ +
+
+
+cap->assign_terms) ) : ?> +

labels->choose_from_most_used; ?>

+ + 'category'); + if ( !isset($box['args']) || !is_array($box['args']) ) + $args = array(); + else + $args = $box['args']; + extract( wp_parse_args($args, $defaults), EXTR_SKIP ); + $tax = get_taxonomy($taxonomy); + + ?> +
+ + + + +
+ "; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks. + ?> +
    + ID, array( 'taxonomy' => $taxonomy, 'popular_cats' => $popular_ids ) ) ?> +
+
+ cap->edit_terms) ) : ?> +
+

+ + labels->add_new_item ); + ?> + +

+

+ + + + $taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '— ' . $tax->labels->parent_item . ' —', 'tab_index' => 3 ) ); ?> + + + +

+
+ +
+ + +

Learn more about manual excerpts.'); ?>

+to_ping) ) .'" />'; + if ('' != $post->pinged) { + $pings = '

'. __('Already pinged:') . '

    '; + $already_pinged = explode("\n", trim($post->pinged)); + foreach ($already_pinged as $pinged_url) { + $pings .= "\n\t
  • " . esc_html($pinged_url) . "
  • "; + } + $pings .= '
'; + } + +?> +


()

+

pingbacks, no other action necessary.'); ?>

+ +
+
+ID); +list_meta($metadata); +meta_form(); ?> +
+

use in your theme.'); ?>

+ + +

+
+ + +

+get_var($wpdb->prepare("SELECT count(1) FROM $wpdb->comments WHERE comment_post_ID = '%d' AND ( comment_approved = '0' OR comment_approved = '1')", $post_ID)); + + if ( 1 > $total ) { + echo '

' . __('No comments yet.') . '

'; + return; + } + + wp_nonce_field( 'get-comments', 'add_comment_nonce', false ); + + $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); + $wp_list_table->display( true ); +?> +

+ + + + + + + 'authors', + 'name' => 'post_author_override', + 'selected' => empty($post->ID) ? $user_ID : $post->post_author, + 'include_selected' => true + ) ); +} + + +/** + * Display list of revisions. + * + * @since 2.6.0 + * + * @param object $post + */ +function post_revisions_meta_box($post) { + wp_list_post_revisions(); +} + + +// -- Page related Meta Boxes + +/** + * Display page attributes form fields. + * + * @since 2.7.0 + * + * @param object $post + */ +function page_attributes_meta_box($post) { + $post_type_object = get_post_type_object($post->post_type); + if ( $post_type_object->hierarchical ) { + $pages = wp_dropdown_pages(array('post_type' => $post->post_type, 'exclude_tree' => $post->ID, 'selected' => $post->post_parent, 'name' => 'parent_id', 'show_option_none' => __('(no parent)'), 'sort_column'=> 'menu_order, post_title', 'echo' => 0)); + if ( ! empty($pages) ) { +?> +

+ + +post_type && 0 != count( get_page_templates() ) ) { + $template = !empty($post->page_template) ? $post->page_template : false; + ?> +

+ + +

+

+

post_type ) _e( 'Need help? Use the Help tab in the upper right of your screen.' ); ?>

+ + + +
    +
  • +
  • +
+ +
+
    + link_id) ) + wp_link_category_checklist($link->link_id); + else + wp_link_category_checklist(); + ?> +
+
+ + + +
+

+ +
+ +
+

+

+

+
+

+link_rel ) ? $link->link_rel : ''; // In PHP 5.3: $link_rel = $link->link_rel ?: ''; + $rels = preg_split('/\s+/', $link_rel); + + if ('' != $value && in_array($value, $rels) ) { + echo ' checked="checked"'; + } + + if ('' == $value) { + if ('family' == $class && strpos($link_rel, 'child') === false && strpos($link_rel, 'parent') === false && strpos($link_rel, 'sibling') === false && strpos($link_rel, 'spouse') === false && strpos($link_rel, 'kin') === false) echo ' checked="checked"'; + if ('friendship' == $class && strpos($link_rel, 'friend') === false && strpos($link_rel, 'acquaintance') === false && strpos($link_rel, 'contact') === false) echo ' checked="checked"'; + if ('geographical' == $class && strpos($link_rel, 'co-resident') === false && strpos($link_rel, 'neighbor') === false) echo ' checked="checked"'; + if ('identity' == $class && in_array('me', $rels) ) echo ' checked="checked"'; + } +} + + +/** + * Display xfn form fields. + * + * @since 2.6.0 + * + * @param object $link + */ +function link_xfn_meta_box($link) { +?> + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ +
+ + +
+ + + +
+ + + + + + +
+ + + + +
+
+

XFN.'); ?>

+ + + + + + + + + + + + + + + + + + +
  +
+ID, '_thumbnail_id', true ); + echo _wp_post_thumbnail_html( $thumbnail_id ); +} diff --git a/src/wp-admin/includes/misc.php b/src/wp-admin/includes/misc.php new file mode 100644 index 0000000..a0db0ad --- /dev/null +++ b/src/wp-admin/includes/misc.php @@ -0,0 +1,588 @@ + $markerline ) { + if (strpos($markerline, '# BEGIN ' . $marker) !== false) + $state = false; + if ( $state ) { + if ( $n + 1 < count( $markerdata ) ) + fwrite( $f, "{$markerline}\n" ); + else + fwrite( $f, "{$markerline}" ); + } + if (strpos($markerline, '# END ' . $marker) !== false) { + fwrite( $f, "# BEGIN {$marker}\n" ); + if ( is_array( $insertion )) + foreach ( $insertion as $insertline ) + fwrite( $f, "{$insertline}\n" ); + fwrite( $f, "# END {$marker}\n" ); + $state = true; + $foundit = true; + } + } + } + if (!$foundit) { + fwrite( $f, "\n# BEGIN {$marker}\n" ); + foreach ( $insertion as $insertline ) + fwrite( $f, "{$insertline}\n" ); + fwrite( $f, "# END {$marker}\n" ); + } + fclose( $f ); + return true; + } else { + return false; + } +} + +/** + * Updates the htaccess file with the current rules if it is writable. + * + * Always writes to the file if it exists and is writable to ensure that we + * blank out old rules. + * + * @since 1.5.0 + */ +function save_mod_rewrite_rules() { + if ( is_multisite() ) + return; + + global $wp_rewrite; + + $home_path = get_home_path(); + $htaccess_file = $home_path.'.htaccess'; + + // If the file doesn't already exist check for write access to the directory and whether we have some rules. + // else check for write access to the file. + if ((!file_exists($htaccess_file) && is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks()) || is_writable($htaccess_file)) { + if ( got_mod_rewrite() ) { + $rules = explode( "\n", $wp_rewrite->mod_rewrite_rules() ); + return insert_with_markers( $htaccess_file, 'WordPress', $rules ); + } + } + + return false; +} + +/** + * Updates the IIS web.config file with the current rules if it is writable. + * If the permalinks do not require rewrite rules then the rules are deleted from the web.config file. + * + * @since 2.8.0 + * + * @return bool True if web.config was updated successfully + */ +function iis7_save_url_rewrite_rules(){ + if ( is_multisite() ) + return; + + global $wp_rewrite; + + $home_path = get_home_path(); + $web_config_file = $home_path . 'web.config'; + + // Using win_is_writable() instead of is_writable() because of a bug in Windows PHP + if ( iis7_supports_permalinks() && ( ( ! file_exists($web_config_file) && win_is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks() ) || win_is_writable($web_config_file) ) ) { + $rule = $wp_rewrite->iis7_url_rewrite_rules(false, '', ''); + if ( ! empty($rule) ) { + return iis7_add_rewrite_rule($web_config_file, $rule); + } else { + return iis7_delete_rewrite_rule($web_config_file); + } + } + return false; +} + +/** + * {@internal Missing Short Description}} + * + * @since 1.5.0 + * + * @param unknown_type $file + */ +function update_recently_edited( $file ) { + $oldfiles = (array ) get_option( 'recently_edited' ); + if ( $oldfiles ) { + $oldfiles = array_reverse( $oldfiles ); + $oldfiles[] = $file; + $oldfiles = array_reverse( $oldfiles ); + $oldfiles = array_unique( $oldfiles ); + if ( 5 < count( $oldfiles )) + array_pop( $oldfiles ); + } else { + $oldfiles[] = $file; + } + update_option( 'recently_edited', $oldfiles ); +} + +/** + * If siteurl or home changed, flush rewrite rules. + * + * @since 2.1.0 + * + * @param unknown_type $old_value + * @param unknown_type $value + */ +function update_home_siteurl( $old_value, $value ) { + global $wp_rewrite; + + if ( defined( "WP_INSTALLING" ) ) + return; + + // If home changed, write rewrite rules to new location. + $wp_rewrite->flush_rules(); +} + +add_action( 'update_option_home', 'update_home_siteurl', 10, 2 ); +add_action( 'update_option_siteurl', 'update_home_siteurl', 10, 2 ); + +/** + * Shorten an URL, to be used as link text + * + * @since 1.2.1 + * + * @param string $url + * @return string + */ +function url_shorten( $url ) { + $short_url = str_replace( 'http://', '', stripslashes( $url )); + $short_url = str_replace( 'www.', '', $short_url ); + if ('/' == substr( $short_url, -1 )) + $short_url = substr( $short_url, 0, -1 ); + if ( strlen( $short_url ) > 35 ) + $short_url = substr( $short_url, 0, 32 ).'...'; + return $short_url; +} + +/** + * Resets global variables based on $_GET and $_POST + * + * This function resets global variables based on the names passed + * in the $vars array to the value of $_POST[$var] or $_GET[$var] or '' + * if neither is defined. + * + * @since 2.0.0 + * + * @param array $vars An array of globals to reset. + */ +function wp_reset_vars( $vars ) { + for ( $i=0; $iget_error_data() ) + $message = $message->get_error_message() . ': ' . $message->get_error_data(); + else + $message = $message->get_error_message(); + } + echo "

$message

\n"; + wp_ob_end_flush_all(); + flush(); +} + +function wp_doc_link_parse( $content ) { + if ( !is_string( $content ) || empty( $content ) ) + return array(); + + if ( !function_exists('token_get_all') ) + return array(); + + $tokens = token_get_all( $content ); + $functions = array(); + $ignore_functions = array(); + for ( $t = 0, $count = count( $tokens ); $t < $count; $t++ ) { + if ( !is_array( $tokens[$t] ) ) continue; + if ( T_STRING == $tokens[$t][0] && ( '(' == $tokens[ $t + 1 ] || '(' == $tokens[ $t + 2 ] ) ) { + // If it's a function or class defined locally, there's not going to be any docs available + if ( ( isset( $tokens[ $t - 2 ][1] ) && in_array( $tokens[ $t - 2 ][1], array( 'function', 'class' ) ) ) || ( isset( $tokens[ $t - 2 ][0] ) && T_OBJECT_OPERATOR == $tokens[ $t - 1 ][0] ) ) { + $ignore_functions[] = $tokens[$t][1]; + } + // Add this to our stack of unique references + $functions[] = $tokens[$t][1]; + } + } + + $functions = array_unique( $functions ); + sort( $functions ); + $ignore_functions = apply_filters( 'documentation_ignore_functions', $ignore_functions ); + $ignore_functions = array_unique( $ignore_functions ); + + $out = array(); + foreach ( $functions as $function ) { + if ( in_array( $function, $ignore_functions ) ) + continue; + $out[] = $function; + } + + return $out; +} + +/** + * Saves option for number of rows when listing posts, pages, comments, etc. + * + * @since 2.8 +**/ +function set_screen_options() { + + if ( isset($_POST['wp_screen_options']) && is_array($_POST['wp_screen_options']) ) { + check_admin_referer( 'screen-options-nonce', 'screenoptionnonce' ); + + if ( !$user = wp_get_current_user() ) + return; + $option = $_POST['wp_screen_options']['option']; + $value = $_POST['wp_screen_options']['value']; + + if ( !preg_match( '/^[a-z_-]+$/', $option ) ) + return; + + $option = str_replace('-', '_', $option); + + $map_option = $option; + $type = str_replace('edit_', '', $map_option); + $type = str_replace('_per_page', '', $type); + if ( in_array($type, get_post_types()) ) + $map_option = 'edit_per_page'; + if ( in_array( $type, get_taxonomies()) ) + $map_option = 'edit_tags_per_page'; + + + switch ( $map_option ) { + case 'edit_per_page': + case 'users_per_page': + case 'edit_comments_per_page': + case 'upload_per_page': + case 'edit_tags_per_page': + case 'plugins_per_page': + // Network admin + case 'sites_network_per_page': + case 'users_network_per_page': + case 'site_users_network_per_page': + case 'plugins_network_per_page': + case 'themes_network_per_page': + case 'site_themes_network_per_page': + $value = (int) $value; + if ( $value < 1 || $value > 999 ) + return; + break; + default: + $value = apply_filters('set-screen-option', false, $option, $value); + if ( false === $value ) + return; + break; + } + + update_user_meta($user->ID, $option, $value); + wp_redirect( remove_query_arg( array('pagenum', 'apage', 'paged'), wp_get_referer() ) ); + exit; + } +} + +/** + * Check if rewrite rule for WordPress already exists in the IIS 7 configuration file + * + * @since 2.8.0 + * + * @return bool + * @param string $filename The file path to the configuration file + */ +function iis7_rewrite_rule_exists($filename) { + if ( ! file_exists($filename) ) + return false; + if ( ! class_exists('DOMDocument') ) + return false; + + $doc = new DOMDocument(); + if ( $doc->load($filename) === false ) + return false; + $xpath = new DOMXPath($doc); + $rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')]'); + if ( $rules->length == 0 ) + return false; + else + return true; +} + +/** + * Delete WordPress rewrite rule from web.config file if it exists there + * + * @since 2.8.0 + * + * @param string $filename Name of the configuration file + * @return bool + */ +function iis7_delete_rewrite_rule($filename) { + // If configuration file does not exist then rules also do not exist so there is nothing to delete + if ( ! file_exists($filename) ) + return true; + + if ( ! class_exists('DOMDocument') ) + return false; + + $doc = new DOMDocument(); + $doc->preserveWhiteSpace = false; + + if ( $doc -> load($filename) === false ) + return false; + $xpath = new DOMXPath($doc); + $rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')]'); + if ( $rules->length > 0 ) { + $child = $rules->item(0); + $parent = $child->parentNode; + $parent->removeChild($child); + $doc->formatOutput = true; + saveDomDocument($doc, $filename); + } + return true; +} + +/** + * Add WordPress rewrite rule to the IIS 7 configuration file. + * + * @since 2.8.0 + * + * @param string $filename The file path to the configuration file + * @param string $rewrite_rule The XML fragment with URL Rewrite rule + * @return bool + */ +function iis7_add_rewrite_rule($filename, $rewrite_rule) { + if ( ! class_exists('DOMDocument') ) + return false; + + // If configuration file does not exist then we create one. + if ( ! file_exists($filename) ) { + $fp = fopen( $filename, 'w'); + fwrite($fp, ''); + fclose($fp); + } + + $doc = new DOMDocument(); + $doc->preserveWhiteSpace = false; + + if ( $doc->load($filename) === false ) + return false; + + $xpath = new DOMXPath($doc); + + // First check if the rule already exists as in that case there is no need to re-add it + $wordpress_rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')]'); + if ( $wordpress_rules->length > 0 ) + return true; + + // Check the XPath to the rewrite rule and create XML nodes if they do not exist + $xmlnodes = $xpath->query('/configuration/system.webServer/rewrite/rules'); + if ( $xmlnodes->length > 0 ) { + $rules_node = $xmlnodes->item(0); + } else { + $rules_node = $doc->createElement('rules'); + + $xmlnodes = $xpath->query('/configuration/system.webServer/rewrite'); + if ( $xmlnodes->length > 0 ) { + $rewrite_node = $xmlnodes->item(0); + $rewrite_node->appendChild($rules_node); + } else { + $rewrite_node = $doc->createElement('rewrite'); + $rewrite_node->appendChild($rules_node); + + $xmlnodes = $xpath->query('/configuration/system.webServer'); + if ( $xmlnodes->length > 0 ) { + $system_webServer_node = $xmlnodes->item(0); + $system_webServer_node->appendChild($rewrite_node); + } else { + $system_webServer_node = $doc->createElement('system.webServer'); + $system_webServer_node->appendChild($rewrite_node); + + $xmlnodes = $xpath->query('/configuration'); + if ( $xmlnodes->length > 0 ) { + $config_node = $xmlnodes->item(0); + $config_node->appendChild($system_webServer_node); + } else { + $config_node = $doc->createElement('configuration'); + $doc->appendChild($config_node); + $config_node->appendChild($system_webServer_node); + } + } + } + } + + $rule_fragment = $doc->createDocumentFragment(); + $rule_fragment->appendXML($rewrite_rule); + $rules_node->appendChild($rule_fragment); + + $doc->encoding = "UTF-8"; + $doc->formatOutput = true; + saveDomDocument($doc, $filename); + + return true; +} + +/** + * Saves the XML document into a file + * + * @since 2.8.0 + * + * @param DOMDocument $doc + * @param string $filename + */ +function saveDomDocument($doc, $filename) { + $config = $doc->saveXML(); + $config = preg_replace("/([^\r])\n/", "$1\r\n", $config); + $fp = fopen($filename, 'w'); + fwrite($fp, $config); + fclose($fp); +} + +/** + * Workaround for Windows bug in is_writable() function + * + * @since 2.8.0 + * + * @param string $path + * @return bool + */ +function win_is_writable( $path ) { + /* will work in despite of Windows ACLs bug + * NOTE: use a trailing slash for folders!!! + * see http://bugs.php.net/bug.php?id=27609 + * see http://bugs.php.net/bug.php?id=30931 + */ + + if ( $path[strlen( $path ) - 1] == '/' ) // recursively return a temporary file path + return win_is_writable( $path . uniqid( mt_rand() ) . '.tmp'); + else if ( is_dir( $path ) ) + return win_is_writable( $path . '/' . uniqid( mt_rand() ) . '.tmp' ); + // check tmp file for read/write capabilities + $should_delete_tmp_file = !file_exists( $path ); + $f = @fopen( $path, 'a' ); + if ( $f === false ) + return false; + fclose( $f ); + if ( $should_delete_tmp_file ) + unlink( $path ); + return true; +} + +/** + * Display the default admin color scheme picker (Used in user-edit.php) + * + * @since 3.0.0 + */ +function admin_color_scheme_picker() { + global $_wp_admin_css_colors, $user_id; ?> +
+ $color_info ): ?> +
/> + + + colors as $html_color ): ?> + + + +
 
+ + +
+ +
+ diff --git a/src/wp-admin/includes/ms-deprecated.php b/src/wp-admin/includes/ms-deprecated.php new file mode 100644 index 0000000..e7b017b --- /dev/null +++ b/src/wp-admin/includes/ms-deprecated.php @@ -0,0 +1,68 @@ + \ No newline at end of file diff --git a/src/wp-admin/includes/ms.php b/src/wp-admin/includes/ms.php new file mode 100644 index 0000000..98991ef --- /dev/null +++ b/src/wp-admin/includes/ms.php @@ -0,0 +1,778 @@ + ( 1024 * get_site_option( 'fileupload_maxk', 1500 ) ) ) + $file['error'] = sprintf(__('This file is too big. Files must be less than %1$s KB in size.'), get_site_option( 'fileupload_maxk', 1500 ) ); + if ( upload_is_user_over_quota( false ) ) { + $file['error'] = __( 'You have used your space quota. Please delete files before uploading.' ); + } + if ( $file['error'] != '0' && !isset($_POST['html-upload']) ) + wp_die( $file['error'] . ' ' . __( 'Back' ) . '' ); + + return $file; +} +add_filter( 'wp_handle_upload_prefilter', 'check_upload_size' ); + +/** + * Delete a blog + * + * @since 3.0.0 + * + * @param int $blog_id Blog ID + * @param bool $drop True if blog's table should be dropped. Default is false. + * @return void + */ +function wpmu_delete_blog( $blog_id, $drop = false ) { + global $wpdb; + + $switch = false; + if ( $blog_id != $wpdb->blogid ) { + $switch = true; + switch_to_blog( $blog_id ); + } + + $blog_prefix = $wpdb->get_blog_prefix( $blog_id ); + + do_action( 'delete_blog', $blog_id, $drop ); + + $users = get_users( array( 'blog_id' => $blog_id, 'fields' => 'ids' ) ); + + // Remove users from this blog. + if ( ! empty( $users ) ) { + foreach ( $users as $user_id ) { + remove_user_from_blog( $user_id, $blog_id) ; + } + } + + update_blog_status( $blog_id, 'deleted', 1 ); + + if ( $drop ) { + if ( substr( $blog_prefix, -1 ) == '_' ) + $blog_prefix = substr( $blog_prefix, 0, -1 ) . '\_'; + + $drop_tables = $wpdb->get_results( "SHOW TABLES LIKE '{$blog_prefix}%'", ARRAY_A ); + $drop_tables = apply_filters( 'wpmu_drop_tables', $drop_tables ); + + reset( $drop_tables ); + foreach ( (array) $drop_tables as $drop_table) { + $wpdb->query( "DROP TABLE IF EXISTS ". current( $drop_table ) ."" ); + } + $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->blogs WHERE blog_id = %d", $blog_id ) ); + $dir = apply_filters( 'wpmu_delete_blog_upload_dir', WP_CONTENT_DIR . "/blogs.dir/{$blog_id}/files/", $blog_id ); + $dir = rtrim( $dir, DIRECTORY_SEPARATOR ); + $top_dir = $dir; + $stack = array($dir); + $index = 0; + + while ( $index < count( $stack ) ) { + # Get indexed directory from stack + $dir = $stack[$index]; + + $dh = @opendir( $dir ); + if ( $dh ) { + while ( ( $file = @readdir( $dh ) ) !== false ) { + if ( $file == '.' || $file == '..' ) + continue; + + if ( @is_dir( $dir . DIRECTORY_SEPARATOR . $file ) ) + $stack[] = $dir . DIRECTORY_SEPARATOR . $file; + else if ( @is_file( $dir . DIRECTORY_SEPARATOR . $file ) ) + @unlink( $dir . DIRECTORY_SEPARATOR . $file ); + } + } + $index++; + } + + $stack = array_reverse( $stack ); // Last added dirs are deepest + foreach( (array) $stack as $dir ) { + if ( $dir != $top_dir) + @rmdir( $dir ); + } + } + + $wpdb->query( "DELETE FROM {$wpdb->usermeta} WHERE meta_key = '{$blog_prefix}autosave_draft_ids'" ); + $blogs = get_site_option( 'blog_list' ); + if ( is_array( $blogs ) ) { + foreach ( $blogs as $n => $blog ) { + if ( $blog['blog_id'] == $blog_id ) + unset( $blogs[$n] ); + } + update_site_option( 'blog_list', $blogs ); + } + + if ( $switch === true ) + restore_current_blog(); +} + +// @todo Merge with wp_delete_user() ? +function wpmu_delete_user( $id ) { + global $wpdb; + + $id = (int) $id; + + do_action( 'wpmu_delete_user', $id ); + + $blogs = get_blogs_of_user( $id ); + + if ( ! empty( $blogs ) ) { + foreach ( $blogs as $blog ) { + switch_to_blog( $blog->userblog_id ); + remove_user_from_blog( $id, $blog->userblog_id ); + + $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_author = %d", $id ) ); + foreach ( (array) $post_ids as $post_id ) { + wp_delete_post( $post_id ); + } + + // Clean links + $link_ids = $wpdb->get_col( $wpdb->prepare( "SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id ) ); + + if ( $link_ids ) { + foreach ( $link_ids as $link_id ) + wp_delete_link( $link_id ); + } + + restore_current_blog(); + } + } + + $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->users WHERE ID = %d", $id ) ); + $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->usermeta WHERE user_id = %d", $id ) ); + + clean_user_cache( $id ); + + // allow for commit transaction + do_action( 'deleted_user', $id ); + + return true; +} + +function wpmu_get_blog_allowedthemes( $blog_id = 0 ) { + $themes = get_themes(); + + if ( $blog_id != 0 ) + switch_to_blog( $blog_id ); + + $blog_allowed_themes = get_option( 'allowedthemes' ); + if ( !is_array( $blog_allowed_themes ) || empty( $blog_allowed_themes ) ) { // convert old allowed_themes to new allowedthemes + $blog_allowed_themes = get_option( 'allowed_themes' ); + + if ( is_array( $blog_allowed_themes ) ) { + foreach( (array) $themes as $key => $theme ) { + $theme_key = esc_html( $theme['Stylesheet'] ); + if ( isset( $blog_allowed_themes[$key] ) == true ) { + $blog_allowedthemes[$theme_key] = 1; + } + } + $blog_allowed_themes = $blog_allowedthemes; + add_option( 'allowedthemes', $blog_allowed_themes ); + delete_option( 'allowed_themes' ); + } + } + + if ( $blog_id != 0 ) + restore_current_blog(); + + return $blog_allowed_themes; +} + +function update_option_new_admin_email( $old_value, $value ) { + $email = get_option( 'admin_email' ); + if ( $value == get_option( 'admin_email' ) || !is_email( $value ) ) + return; + + $hash = md5( $value. time() .mt_rand() ); + $new_admin_email = array( + 'hash' => $hash, + 'newemail' => $value + ); + update_option( 'adminhash', $new_admin_email ); + + $content = apply_filters( 'new_admin_email_content', __( "Dear user, + +You recently requested to have the administration email address on +your site changed. +If this is correct, please click on the following link to change it: +###ADMIN_URL### + +You can safely ignore and delete this email if you do not want to +take this action. + +This email has been sent to ###EMAIL### + +Regards, +All at ###SITENAME### +###SITEURL### "), $new_admin_email ); + + $content = str_replace( '###ADMIN_URL###', esc_url( admin_url( 'options.php?adminhash='.$hash ) ), $content ); + $content = str_replace( '###EMAIL###', $value, $content ); + $content = str_replace( '###SITENAME###', get_site_option( 'site_name' ), $content ); + $content = str_replace( '###SITEURL###', network_home_url(), $content ); + + wp_mail( $value, sprintf( __( '[%s] New Admin Email Address' ), get_option( 'blogname' ) ), $content ); +} +add_action( 'update_option_new_admin_email', 'update_option_new_admin_email', 10, 2 ); +add_action( 'add_option_new_admin_email', 'update_option_new_admin_email', 10, 2 ); + +function send_confirmation_on_profile_email() { + global $errors, $wpdb; + $current_user = wp_get_current_user(); + if ( ! is_object($errors) ) + $errors = new WP_Error(); + + if ( $current_user->id != $_POST['user_id'] ) + return false; + + if ( $current_user->user_email != $_POST['email'] ) { + if ( !is_email( $_POST['email'] ) ) { + $errors->add( 'user_email', __( "ERROR: The e-mail address isn't correct." ), array( 'form-field' => 'email' ) ); + return; + } + + if ( $wpdb->get_var( $wpdb->prepare( "SELECT user_email FROM {$wpdb->users} WHERE user_email=%s", $_POST['email'] ) ) ) { + $errors->add( 'user_email', __( "ERROR: The e-mail address is already used." ), array( 'form-field' => 'email' ) ); + delete_option( $current_user->ID . '_new_email' ); + return; + } + + $hash = md5( $_POST['email'] . time() . mt_rand() ); + $new_user_email = array( + 'hash' => $hash, + 'newemail' => $_POST['email'] + ); + update_option( $current_user->ID . '_new_email', $new_user_email ); + + $content = apply_filters( 'new_user_email_content', __( "Dear user, + +You recently requested to have the email address on your account changed. +If this is correct, please click on the following link to change it: +###ADMIN_URL### + +You can safely ignore and delete this email if you do not want to +take this action. + +This email has been sent to ###EMAIL### + +Regards, +All at ###SITENAME### +###SITEURL###" ), $new_user_email ); + + $content = str_replace( '###ADMIN_URL###', esc_url( admin_url( 'profile.php?newuseremail='.$hash ) ), $content ); + $content = str_replace( '###EMAIL###', $_POST['email'], $content); + $content = str_replace( '###SITENAME###', get_site_option( 'site_name' ), $content ); + $content = str_replace( '###SITEURL###', network_home_url(), $content ); + + wp_mail( $_POST['email'], sprintf( __( '[%s] New Email Address' ), get_option( 'blogname' ) ), $content ); + $_POST['email'] = $current_user->user_email; + } +} +add_action( 'personal_options_update', 'send_confirmation_on_profile_email' ); + +function new_user_email_admin_notice() { + if ( strpos( $_SERVER['PHP_SELF'], 'profile.php' ) && isset( $_GET['updated'] ) && $email = get_option( get_current_user_id() . '_new_email' ) ) + echo "
" . sprintf( __( "Your email address has not been updated yet. Please check your inbox at %s for a confirmation email." ), $email['newemail'] ) . "
"; +} +add_action( 'admin_notices', 'new_user_email_admin_notice' ); + +function get_site_allowed_themes() { + $themes = get_themes(); + $allowed_themes = get_site_option( 'allowedthemes' ); + if ( !is_array( $allowed_themes ) || empty( $allowed_themes ) ) { + $allowed_themes = get_site_option( 'allowed_themes' ); // convert old allowed_themes format + if ( !is_array( $allowed_themes ) ) { + $allowed_themes = array(); + } else { + foreach( (array) $themes as $key => $theme ) { + $theme_key = esc_html( $theme['Stylesheet'] ); + if ( isset( $allowed_themes[ $key ] ) == true ) { + $allowedthemes[ $theme_key ] = 1; + } + } + $allowed_themes = $allowedthemes; + } + } + return $allowed_themes; +} + +/** + * Determines if there is any upload space left in the current blog's quota. + * + * @since 3.0.0 + * @return bool True if space is available, false otherwise. + */ +function is_upload_space_available() { + if ( get_site_option( 'upload_space_check_disabled' ) ) + return true; + + if ( !( $space_allowed = get_upload_space_available() ) ) + return false; + + return true; +} + +/** + * @since 3.0.0 + * + * @return int of upload size limit in bytes + */ +function upload_size_limit_filter( $size ) { + $fileupload_maxk = 1024 * get_site_option( 'fileupload_maxk', 1500 ); + if ( get_site_option( 'upload_space_check_disabled' ) ) + return min( $size, $fileupload_maxk ); + + return min( $size, $fileupload_maxk, get_upload_space_available() ); +} +/** + * Determines if there is any upload space left in the current blog's quota. + * + * @return int of upload space available in bytes + */ +function get_upload_space_available() { + $space_allowed = get_space_allowed() * 1024 * 1024; + if ( get_site_option( 'upload_space_check_disabled' ) ) + return $space_allowed; + + $dir_name = trailingslashit( BLOGUPLOADDIR ); + if ( !( is_dir( $dir_name) && is_readable( $dir_name ) ) ) + return $space_allowed; + + $dir = dir( $dir_name ); + $size = 0; + + while ( $file = $dir->read() ) { + if ( $file != '.' && $file != '..' ) { + if ( is_dir( $dir_name . $file) ) { + $size += get_dirsize( $dir_name . $file ); + } else { + $size += filesize( $dir_name . $file ); + } + } + } + $dir->close(); + + if ( ( $space_allowed - $size ) <= 0 ) + return 0; + + return $space_allowed - $size; +} + +/** + * Returns the upload quota for the current blog. + * + * @return int Quota + */ +function get_space_allowed() { + $space_allowed = get_option( 'blog_upload_space' ); + if ( $space_allowed == false ) + $space_allowed = get_site_option( 'blog_upload_space' ); + if ( empty( $space_allowed ) || !is_numeric( $space_allowed ) ) + $space_allowed = 50; + + return $space_allowed; +} + +function display_space_usage() { + $space = get_space_allowed(); + $used = get_dirsize( BLOGUPLOADDIR ) / 1024 / 1024; + + $percentused = ( $used / $space ) * 100; + + if ( $space > 1000 ) { + $space = number_format( $space / 1024 ); + /* translators: Gigabytes */ + $space .= __( 'GB' ); + } else { + /* translators: Megabytes */ + $space .= __( 'MB' ); + } + ?> + + + + + + + update( $wpdb->users, array( $pref => $value ), array( 'ID' => $id ) ); + + clean_user_cache( $id ); + + if ( $pref == 'spam' ) { + if ( $value == 1 ) + do_action( 'make_spam_user', $id ); + else + do_action( 'make_ham_user', $id ); + } + + return $value; +} + +function refresh_user_details( $id ) { + $id = (int) $id; + + if ( !$user = get_userdata( $id ) ) + return false; + + clean_user_cache( $id ); + + return $id; +} + +function format_code_lang( $code = '' ) { + $code = strtolower( substr( $code, 0, 2 ) ); + $lang_codes = array( + 'aa' => 'Afar', 'ab' => 'Abkhazian', 'af' => 'Afrikaans', 'ak' => 'Akan', 'sq' => 'Albanian', 'am' => 'Amharic', 'ar' => 'Arabic', 'an' => 'Aragonese', 'hy' => 'Armenian', 'as' => 'Assamese', 'av' => 'Avaric', 'ae' => 'Avestan', 'ay' => 'Aymara', 'az' => 'Azerbaijani', 'ba' => 'Bashkir', 'bm' => 'Bambara', 'eu' => 'Basque', 'be' => 'Belarusian', 'bn' => 'Bengali', + 'bh' => 'Bihari', 'bi' => 'Bislama', 'bs' => 'Bosnian', 'br' => 'Breton', 'bg' => 'Bulgarian', 'my' => 'Burmese', 'ca' => 'Catalan; Valencian', 'ch' => 'Chamorro', 'ce' => 'Chechen', 'zh' => 'Chinese', 'cu' => 'Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic', 'cv' => 'Chuvash', 'kw' => 'Cornish', 'co' => 'Corsican', 'cr' => 'Cree', + 'cs' => 'Czech', 'da' => 'Danish', 'dv' => 'Divehi; Dhivehi; Maldivian', 'nl' => 'Dutch; Flemish', 'dz' => 'Dzongkha', 'en' => 'English', 'eo' => 'Esperanto', 'et' => 'Estonian', 'ee' => 'Ewe', 'fo' => 'Faroese', 'fj' => 'Fijjian', 'fi' => 'Finnish', 'fr' => 'French', 'fy' => 'Western Frisian', 'ff' => 'Fulah', 'ka' => 'Georgian', 'de' => 'German', 'gd' => 'Gaelic; Scottish Gaelic', + 'ga' => 'Irish', 'gl' => 'Galician', 'gv' => 'Manx', 'el' => 'Greek, Modern', 'gn' => 'Guarani', 'gu' => 'Gujarati', 'ht' => 'Haitian; Haitian Creole', 'ha' => 'Hausa', 'he' => 'Hebrew', 'hz' => 'Herero', 'hi' => 'Hindi', 'ho' => 'Hiri Motu', 'hu' => 'Hungarian', 'ig' => 'Igbo', 'is' => 'Icelandic', 'io' => 'Ido', 'ii' => 'Sichuan Yi', 'iu' => 'Inuktitut', 'ie' => 'Interlingue', + 'ia' => 'Interlingua (International Auxiliary Language Association)', 'id' => 'Indonesian', 'ik' => 'Inupiaq', 'it' => 'Italian', 'jv' => 'Javanese', 'ja' => 'Japanese', 'kl' => 'Kalaallisut; Greenlandic', 'kn' => 'Kannada', 'ks' => 'Kashmiri', 'kr' => 'Kanuri', 'kk' => 'Kazakh', 'km' => 'Central Khmer', 'ki' => 'Kikuyu; Gikuyu', 'rw' => 'Kinyarwanda', 'ky' => 'Kirghiz; Kyrgyz', + 'kv' => 'Komi', 'kg' => 'Kongo', 'ko' => 'Korean', 'kj' => 'Kuanyama; Kwanyama', 'ku' => 'Kurdish', 'lo' => 'Lao', 'la' => 'Latin', 'lv' => 'Latvian', 'li' => 'Limburgan; Limburger; Limburgish', 'ln' => 'Lingala', 'lt' => 'Lithuanian', 'lb' => 'Luxembourgish; Letzeburgesch', 'lu' => 'Luba-Katanga', 'lg' => 'Ganda', 'mk' => 'Macedonian', 'mh' => 'Marshallese', 'ml' => 'Malayalam', + 'mi' => 'Maori', 'mr' => 'Marathi', 'ms' => 'Malay', 'mg' => 'Malagasy', 'mt' => 'Maltese', 'mo' => 'Moldavian', 'mn' => 'Mongolian', 'na' => 'Nauru', 'nv' => 'Navajo; Navaho', 'nr' => 'Ndebele, South; South Ndebele', 'nd' => 'Ndebele, North; North Ndebele', 'ng' => 'Ndonga', 'ne' => 'Nepali', 'nn' => 'Norwegian Nynorsk; Nynorsk, Norwegian', 'nb' => 'Bokmål, Norwegian, Norwegian Bokmål', + 'no' => 'Norwegian', 'ny' => 'Chichewa; Chewa; Nyanja', 'oc' => 'Occitan, Provençal', 'oj' => 'Ojibwa', 'or' => 'Oriya', 'om' => 'Oromo', 'os' => 'Ossetian; Ossetic', 'pa' => 'Panjabi; Punjabi', 'fa' => 'Persian', 'pi' => 'Pali', 'pl' => 'Polish', 'pt' => 'Portuguese', 'ps' => 'Pushto', 'qu' => 'Quechua', 'rm' => 'Romansh', 'ro' => 'Romanian', 'rn' => 'Rundi', 'ru' => 'Russian', + 'sg' => 'Sango', 'sa' => 'Sanskrit', 'sr' => 'Serbian', 'hr' => 'Croatian', 'si' => 'Sinhala; Sinhalese', 'sk' => 'Slovak', 'sl' => 'Slovenian', 'se' => 'Northern Sami', 'sm' => 'Samoan', 'sn' => 'Shona', 'sd' => 'Sindhi', 'so' => 'Somali', 'st' => 'Sotho, Southern', 'es' => 'Spanish; Castilian', 'sc' => 'Sardinian', 'ss' => 'Swati', 'su' => 'Sundanese', 'sw' => 'Swahili', + 'sv' => 'Swedish', 'ty' => 'Tahitian', 'ta' => 'Tamil', 'tt' => 'Tatar', 'te' => 'Telugu', 'tg' => 'Tajik', 'tl' => 'Tagalog', 'th' => 'Thai', 'bo' => 'Tibetan', 'ti' => 'Tigrinya', 'to' => 'Tonga (Tonga Islands)', 'tn' => 'Tswana', 'ts' => 'Tsonga', 'tk' => 'Turkmen', 'tr' => 'Turkish', 'tw' => 'Twi', 'ug' => 'Uighur; Uyghur', 'uk' => 'Ukrainian', 'ur' => 'Urdu', 'uz' => 'Uzbek', + 've' => 'Venda', 'vi' => 'Vietnamese', 'vo' => 'Volapük', 'cy' => 'Welsh','wa' => 'Walloon','wo' => 'Wolof', 'xh' => 'Xhosa', 'yi' => 'Yiddish', 'yo' => 'Yoruba', 'za' => 'Zhuang; Chuang', 'zu' => 'Zulu' ); + $lang_codes = apply_filters( 'lang_codes', $lang_codes, $code ); + return strtr( $code, $lang_codes ); +} + +function sync_category_tag_slugs( $term, $taxonomy ) { + if ( global_terms_enabled() && ( $taxonomy == 'category' || $taxonomy == 'post_tag' ) ) { + if ( is_object( $term ) ) { + $term->slug = sanitize_title( $term->name ); + } else { + $term['slug'] = sanitize_title( $term['name'] ); + } + } + return $term; +} +add_filter( 'get_term', 'sync_category_tag_slugs', 10, 2 ); + +function _access_denied_splash() { + if ( ! is_user_logged_in() || is_network_admin() ) + return; + + $blogs = get_blogs_of_user( get_current_user_id() ); + + if ( wp_list_filter( $blogs, array( 'userblog_id' => get_current_blog_id() ) ) ) + return; + + $blog_name = get_bloginfo( 'name' ); + + if ( empty( $blogs ) ) + wp_die( sprintf( __( 'You attempted to access the "%1$s" dashboard, but you do not currently have privileges on this site. If you believe you should be able to access the "%1$s" dashboard, please contact your network administrator.' ), $blog_name ) ); + + $output = '

' . sprintf( __( 'You attempted to access the "%1$s" dashboard, but you do not currently have privileges on this site. If you believe you should be able to access the "%1$s" dashboard, please contact your network administrator.' ), $blog_name ) . '

'; + $output .= '

' . __( 'If you reached this screen by accident and meant to visit one of your own sites, here are some shortcuts to help you find your way.' ) . '

'; + + $output .= '

' . __('Your Sites') . '

'; + $output .= ''; + + foreach ( $blogs as $blog ) { + $output .= ""; + $output .= ""; + $output .= ""; + $output .= ""; + } + $output .= '
"; + $output .= "{$blog->blogname}"; + $output .= ""; + $output .= "" . __( 'Visit Dashboard' ) . " | " . __( 'View Site' ) . "" ; + $output .= "
'; + + wp_die( $output ); +} +add_action( 'admin_page_access_denied', '_access_denied_splash', 99 ); + +function check_import_new_users( $permission ) { + if ( !is_super_admin() ) + return false; + return true; +} +add_filter( 'import_allow_create_users', 'check_import_new_users' ); +// See "import_allow_fetch_attachments" and "import_attachment_size_limit" filters too. + +function mu_dropdown_languages( $lang_files = array(), $current = '' ) { + $flag = false; + $output = array(); + + foreach ( (array) $lang_files as $val ) { + $code_lang = basename( $val, '.mo' ); + + if ( $code_lang == 'en_US' ) { // American English + $flag = true; + $ae = __( 'American English' ); + $output[$ae] = ''; + } elseif ( $code_lang == 'en_GB' ) { // British English + $flag = true; + $be = __( 'British English' ); + $output[$be] = ''; + } else { + $translated = format_code_lang( $code_lang ); + $output[$translated] = ''; + } + + } + + if ( $flag === false ) // WordPress english + $output[] = '"; + + // Order by name + uksort( $output, 'strnatcasecmp' ); + + $output = apply_filters( 'mu_dropdown_languages', $output, $lang_files, $current ); + echo implode( "\n\t", $output ); +} + +/* Warn the admin if SECRET SALT information is missing from wp-config.php */ +function secret_salt_warning() { + if ( !is_super_admin() ) + return; + $secret_keys = array( 'AUTH_KEY', 'SECURE_AUTH_KEY', 'LOGGED_IN_KEY', 'NONCE_KEY', 'AUTH_SALT', 'SECURE_AUTH_SALT', 'LOGGED_IN_SALT', 'NONCE_SALT' ); + $out = ''; + foreach( $secret_keys as $key ) { + if ( ! defined( $key ) ) + $out .= "define( '$key', '" . esc_html( wp_generate_password( 64, true, true ) ) . "' );
"; + } + if ( $out != '' ) { + $msg = __( 'Warning! WordPress encrypts user cookies, but you must add the following lines to wp-config.php for it to be more secure.' ); + $msg .= '
' . __( "Before the line /* That's all, stop editing! Happy blogging. */ please add this code:" ); + $msg .= "

$out"; + + echo "
$msg
"; + } +} +add_action( 'network_admin_notices', 'secret_salt_warning' ); + +function site_admin_notice() { + global $wp_db_version; + if ( !is_super_admin() ) + return false; + if ( get_site_option( 'wpmu_upgrade_site' ) != $wp_db_version ) + echo "
" . sprintf( __( 'Thank you for Updating! Please visit the Update Network page to update all your sites.' ), esc_url( network_admin_url( 'upgrade.php' ) ) ) . "
"; +} +add_action( 'admin_notices', 'site_admin_notice' ); +add_action( 'network_admin_notices', 'site_admin_notice' ); + +function avoid_blog_page_permalink_collision( $data, $postarr ) { + if ( is_subdomain_install() ) + return $data; + if ( $data['post_type'] != 'page' ) + return $data; + if ( !isset( $data['post_name'] ) || $data['post_name'] == '' ) + return $data; + if ( !is_main_site() ) + return $data; + + $post_name = $data['post_name']; + $c = 0; + while( $c < 10 && get_id_from_blogname( $post_name ) ) { + $post_name .= mt_rand( 1, 10 ); + $c ++; + } + if ( $post_name != $data['post_name'] ) { + $data['post_name'] = $post_name; + } + return $data; +} +add_filter( 'wp_insert_post_data', 'avoid_blog_page_permalink_collision', 10, 2 ); + +function choose_primary_blog() { + ?> + + + + + + + + + + + +
+ 1 ) { + $found = false; + ?> + + userblog_id ); + } + } elseif ( count( $all_blogs ) == 1 ) { + $blog = array_shift( $all_blogs ); + echo $blog->domain; + if ( $primary_blog != $blog->userblog_id ) // Set the primary blog again if it's out of sync with blog list. + update_user_meta( get_current_user_id(), 'primary_blog', $blog->userblog_id ); + } else { + echo "N/A"; + } + ?> +
+ +
+ ' . sprintf( __( 'The %1$s file is deprecated. Please remove it and update your server rewrite rules to use %2$s instead.' ), 'wp-content/blogs.php', 'wp-includes/ms-files.php' ) . ''; +} +add_action( 'network_admin_notices', 'ms_deprecated_blogs_file' ); + +/** + * Grants super admin privileges. + * + * @since 3.0.0 + * @param int $user_id + */ +function grant_super_admin( $user_id ) { + global $super_admins; + + // If global super_admins override is defined, there is nothing to do here. + if ( isset($super_admins) ) + return false; + + do_action( 'grant_super_admin', $user_id ); + + // Directly fetch site_admins instead of using get_super_admins() + $super_admins = get_site_option( 'site_admins', array( 'admin' ) ); + + $user = new WP_User( $user_id ); + if ( ! in_array( $user->user_login, $super_admins ) ) { + $super_admins[] = $user->user_login; + update_site_option( 'site_admins' , $super_admins ); + do_action( 'granted_super_admin', $user_id ); + return true; + } + return false; +} + +/** + * Revokes super admin privileges. + * + * @since 3.0.0 + * @param int $user_id + */ +function revoke_super_admin( $user_id ) { + global $super_admins; + + // If global super_admins override is defined, there is nothing to do here. + if ( isset($super_admins) ) + return false; + + do_action( 'revoke_super_admin', $user_id ); + + // Directly fetch site_admins instead of using get_super_admins() + $super_admins = get_site_option( 'site_admins', array( 'admin' ) ); + + $user = new WP_User( $user_id ); + if ( $user->user_email != get_site_option( 'admin_email' ) ) { + if ( false !== ( $key = array_search( $user->user_login, $super_admins ) ) ) { + unset( $super_admins[$key] ); + update_site_option( 'site_admins', $super_admins ); + do_action( 'revoked_super_admin', $user_id ); + return true; + } + } + return false; +} + +/** + * Whether or not we can edit this network from this page + * + * By default editing of network is restricted to the Network Admin for that site_id this allows for this to be overridden + * + * @since 3.1.0 + * @param integer $site_id The network/site id to check. + */ +function can_edit_network( $site_id ) { + global $wpdb; + + if ($site_id == $wpdb->siteid ) + $result = true; + else + $result = false; + + return apply_filters( 'can_edit_network', $result, $site_id ); +} + +/** + * Thickbox image paths for Network Admin. + * + * @since 3.1.0 + * @access private + */ +function _thickbox_path_admin_subfolder() { +?> + + diff --git a/src/wp-admin/includes/nav-menu.php b/src/wp-admin/includes/nav-menu.php new file mode 100644 index 0000000..8890166 --- /dev/null +++ b/src/wp-admin/includes/nav-menu.php @@ -0,0 +1,1171 @@ + $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth; + + $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; + + ob_start(); + $item_id = esc_attr( $item->ID ); + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); + + $original_title = ''; + if ( 'taxonomy' == $item->type ) { + $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' ); + if ( is_wp_error( $original_title ) ) + $original_title = false; + } elseif ( 'post_type' == $item->type ) { + $original_object = get_post( $item->object_id ); + $original_title = $original_object->post_title; + } + + $classes = array( + 'menu-item menu-item-depth-' . $depth, + 'menu-item-' . esc_attr( $item->object ), + 'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'), + ); + + $title = $item->title; + + if ( ! empty( $item->_invalid ) ) { + $classes[] = 'menu-item-invalid'; + /* translators: %s: title of menu item which is invalid */ + $title = sprintf( __( '%s (Invalid)' ), $item->title ); + } elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) { + $classes[] = 'pending'; + /* translators: %s: title of menu item in draft status */ + $title = sprintf( __('%s (Pending)'), $item->title ); + } + + $title = empty( $item->label ) ? $title : $item->label; + + ?> +
  • '; + $output .= ''; + + // Menu item hidden fields + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + } +} + +/** + * Prints the appropriate response to a menu quick search. + * + * @since 3.0.0 + * + * @param array $request The unsanitized request values. + */ +function _wp_ajax_menu_quick_search( $request = array() ) { + $args = array(); + $type = isset( $request['type'] ) ? $request['type'] : ''; + $object_type = isset( $request['object_type'] ) ? $request['object_type'] : ''; + $query = isset( $request['q'] ) ? $request['q'] : ''; + $response_format = isset( $request['response-format'] ) && in_array( $request['response-format'], array( 'json', 'markup' ) ) ? $request['response-format'] : 'json'; + + if ( 'markup' == $response_format ) { + $args['walker'] = new Walker_Nav_Menu_Checklist; + } + + if ( 'get-post-item' == $type ) { + if ( post_type_exists( $object_type ) ) { + if ( isset( $request['ID'] ) ) { + $object_id = (int) $request['ID']; + if ( 'markup' == $response_format ) { + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $object_id ) ) ), 0, (object) $args ); + } elseif ( 'json' == $response_format ) { + $post_obj = get_post( $object_id ); + echo json_encode( + array( + 'ID' => $object_id, + 'post_title' => get_the_title( $object_id ), + 'post_type' => get_post_type( $object_id ), + ) + ); + echo "\n"; + } + } + } elseif ( taxonomy_exists( $object_type ) ) { + if ( isset( $request['ID'] ) ) { + $object_id = (int) $request['ID']; + if ( 'markup' == $response_format ) { + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_term( $object_id, $object_type ) ) ), 0, (object) $args ); + } elseif ( 'json' == $response_format ) { + $post_obj = get_term( $object_id, $object_type ); + echo json_encode( + array( + 'ID' => $object_id, + 'post_title' => $post_obj->name, + 'post_type' => $object_type, + ) + ); + echo "\n"; + } + } + + } + + + } elseif ( preg_match('/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*\b)/', $type, $matches) ) { + if ( 'posttype' == $matches[1] && get_post_type_object( $matches[2] ) ) { + query_posts(array( + 'posts_per_page' => 10, + 'post_type' => $matches[2], + 's' => $query, + )); + if ( ! have_posts() ) + return; + while ( have_posts() ) { + the_post(); + if ( 'markup' == $response_format ) { + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( get_the_ID() ) ) ), 0, (object) $args ); + } elseif ( 'json' == $response_format ) { + echo json_encode( + array( + 'ID' => get_the_ID(), + 'post_title' => get_the_title(), + 'post_type' => get_post_type(), + ) + ); + echo "\n"; + } + } + } elseif ( 'taxonomy' == $matches[1] ) { + $terms = get_terms( $matches[2], array( + 'name__like' => $query, + 'number' => 10, + )); + if ( empty( $terms ) || is_wp_error( $terms ) ) + return; + foreach( (array) $terms as $term ) { + if ( 'markup' == $response_format ) { + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( $term ) ), 0, (object) $args ); + } elseif ( 'json' == $response_format ) { + echo json_encode( + array( + 'ID' => $term->term_id, + 'post_title' => $term->name, + 'post_type' => $matches[2], + ) + ); + echo "\n"; + } + } + } + } +} + +/** + * Register nav menu metaboxes and advanced menu items + * + * @since 3.0.0 + **/ +function wp_nav_menu_setup() { + // Register meta boxes + if ( wp_get_nav_menus() ) + add_meta_box( 'nav-menu-theme-locations', __( 'Theme Locations' ), 'wp_nav_menu_locations_meta_box' , 'nav-menus', 'side', 'default' ); + add_meta_box( 'add-custom-links', __('Custom Links'), 'wp_nav_menu_item_link_meta_box', 'nav-menus', 'side', 'default' ); + wp_nav_menu_post_type_meta_boxes(); + wp_nav_menu_taxonomy_meta_boxes(); + + // Register advanced menu items (columns) + add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns'); + + // If first time editing, disable advanced items by default. + if( false === get_user_option( 'managenav-menuscolumnshidden' ) ) { + $user = wp_get_current_user(); + update_user_option($user->ID, 'managenav-menuscolumnshidden', + array( 0 => 'link-target', 1 => 'css-classes', 2 => 'xfn', 3 => 'description', ), + true); + } +} + +/** + * Limit the amount of meta boxes to just links, pages and cats for first time users. + * + * @since 3.0.0 + **/ +function wp_initial_nav_menu_meta_boxes() { + global $wp_meta_boxes; + + if ( get_user_option( 'metaboxhidden_nav-menus' ) !== false || ! is_array($wp_meta_boxes) ) + return; + + $initial_meta_boxes = array( 'nav-menu-theme-locations', 'add-custom-links', 'add-page', 'add-category' ); + $hidden_meta_boxes = array(); + + foreach ( array_keys($wp_meta_boxes['nav-menus']) as $context ) { + foreach ( array_keys($wp_meta_boxes['nav-menus'][$context]) as $priority ) { + foreach ( $wp_meta_boxes['nav-menus'][$context][$priority] as $box ) { + if ( in_array( $box['id'], $initial_meta_boxes ) ) { + unset( $box['id'] ); + } else { + $hidden_meta_boxes[] = $box['id']; + } + } + } + } + + $user = wp_get_current_user(); + update_user_option( $user->ID, 'metaboxhidden_nav-menus', $hidden_meta_boxes, true ); +} + +/** + * Creates metaboxes for any post type menu item. + * + * @since 3.0.0 + */ +function wp_nav_menu_post_type_meta_boxes() { + $post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); + + if ( ! $post_types ) + return; + + foreach ( $post_types as $post_type ) { + $post_type = apply_filters( 'nav_menu_meta_box_object', $post_type ); + if ( $post_type ) { + $id = $post_type->name; + add_meta_box( "add-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', 'default', $post_type ); + } + } +} + +/** + * Creates metaboxes for any taxonomy menu item. + * + * @since 3.0.0 + */ +function wp_nav_menu_taxonomy_meta_boxes() { + $taxonomies = get_taxonomies( array( 'show_in_nav_menus' => true ), 'object' ); + + if ( !$taxonomies ) + return; + + foreach ( $taxonomies as $tax ) { + $tax = apply_filters( 'nav_menu_meta_box_object', $tax ); + if ( $tax ) { + $id = $tax->name; + add_meta_box( "add-{$id}", $tax->labels->name, 'wp_nav_menu_item_taxonomy_meta_box', 'nav-menus', 'side', 'default', $tax ); + } + } +} + +/** + * Displays a metabox for the nav menu theme locations. + * + * @since 3.0.0 + */ +function wp_nav_menu_locations_meta_box() { + global $nav_menu_selected_id; + + if ( ! current_theme_supports( 'menus' ) ) { + // We must only support widgets. Leave a message and bail. + echo '

    ' . __('The current theme does not natively support menus, but you can use the “Custom Menu” widget to add any menus you create here to the theme’s sidebar.') . '

    '; + return; + } + + $locations = get_registered_nav_menus(); + $menus = wp_get_nav_menus(); + $menu_locations = get_nav_menu_locations(); + $num_locations = count( array_keys($locations) ); + + echo '

    ' . sprintf( _n('Your theme supports %s menu. Select which menu you would like to use.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations ), number_format_i18n($num_locations) ) . '

    '; + + foreach ( $locations as $location => $description ) { + ?> +

    + +

    + +

    + + +

    + $_nav_menu_placeholder ? $_nav_menu_placeholder - 1 : -1; + + $current_tab = 'create'; + if ( isset( $_REQUEST['customlink-tab'] ) && in_array( $_REQUEST['customlink-tab'], array('create', 'all') ) ) { + $current_tab = $_REQUEST['customlink-tab']; + } + + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); + + ?> +
    + + + + + + +

    + + + class="button-secondary submit-add-to-menu" value="" name="add-custom-menu-item" id="submit-customlinkdiv" /> + +

    + +
    + name; + + // paginate browsing for large numbers of post objects + $per_page = 50; + $pagenum = isset( $_REQUEST[$post_type_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; + $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; + + $args = array( + 'offset' => $offset, + 'order' => 'ASC', + 'orderby' => 'title', + 'posts_per_page' => $per_page, + 'post_type' => $post_type_name, + 'suppress_filters' => true, + 'update_post_term_cache' => false, + 'update_post_meta_cache' => false + ); + + if ( isset( $post_type['args']->_default_query ) ) + $args = array_merge($args, (array) $post_type['args']->_default_query ); + + // @todo transient caching of these results with proper invalidation on updating of a post of this type + $get_posts = new WP_Query; + $posts = $get_posts->query( $args ); + if ( ! $get_posts->post_count ) { + echo '

    ' . __( 'No items.' ) . '

    '; + return; + } + + $post_type_object = get_post_type_object($post_type_name); + + $num_pages = $get_posts->max_num_pages; + + $page_links = paginate_links( array( + 'base' => add_query_arg( + array( + $post_type_name . '-tab' => 'all', + 'paged' => '%#%', + 'item-type' => 'post_type', + 'item-object' => $post_type_name, + ) + ), + 'format' => '', + 'prev_text' => __('«'), + 'next_text' => __('»'), + 'total' => $num_pages, + 'current' => $pagenum + )); + + if ( !$posts ) + $error = '
  • '. $post_type['args']->labels->not_found .'
  • '; + + $db_fields = false; + if ( is_post_type_hierarchical( $post_type_name ) ) { + $db_fields = array( 'parent' => 'post_parent', 'id' => 'ID' ); + } + + $walker = new Walker_Nav_Menu_Checklist( $db_fields ); + + $current_tab = 'most-recent'; + if ( isset( $_REQUEST[$post_type_name . '-tab'] ) && in_array( $_REQUEST[$post_type_name . '-tab'], array('all', 'search') ) ) { + $current_tab = $_REQUEST[$post_type_name . '-tab']; + } + + if ( ! empty( $_REQUEST['quick-search-posttype-' . $post_type_name] ) ) { + $current_tab = 'search'; + } + + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); + + ?> +
    +
      +
    • >
    • +
    • >
    • +
    • >
    • +
    + +
    +
      + 'post_date', 'order' => 'DESC', 'posts_per_page' => 15 ) ); + $most_recent = $get_posts->query( $recent_args ); + $args['walker'] = $walker; + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $most_recent), 0, (object) $args ); + ?> +
    +
    + + + + +
    + + + +
      + _add_to_top = true; + $front_page_obj->label = sprintf( _x('Home: %s', 'nav menu front page title'), $front_page_obj->post_title ); + array_unshift( $posts, $front_page_obj ); + } else { + $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1; + array_unshift( $posts, (object) array( + '_add_to_top' => true, + 'ID' => 0, + 'object_id' => $_nav_menu_placeholder, + 'post_content' => '', + 'post_excerpt' => '', + 'post_parent' => '', + 'post_title' => _x('Home', 'nav menu home label'), + 'post_type' => 'nav_menu_item', + 'type' => 'custom', + 'url' => home_url('/'), + ) ); + } + } + + $posts = apply_filters( 'nav_menu_items_'.$post_type_name, $posts, $args, $post_type ); + $checkbox_items = walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $posts), 0, (object) $args ); + + if ( 'all' == $current_tab && ! empty( $_REQUEST['selectall'] ) ) { + $checkbox_items = preg_replace('/(type=(.)checkbox(\2))/', '$1 checked=$2checked$2', $checkbox_items); + + } + + echo $checkbox_items; + ?> +
    + + + +
    + + +

    + + + + + + + class="button-secondary submit-add-to-menu" value="" name="add-post-type-menu-item" id="submit-posttype-" /> + +

    + +
    + name; + + // paginate browsing for large numbers of objects + $per_page = 50; + $pagenum = isset( $_REQUEST[$taxonomy_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; + $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; + + $args = array( + 'child_of' => 0, + 'exclude' => '', + 'hide_empty' => false, + 'hierarchical' => 1, + 'include' => '', + 'include_last_update_time' => false, + 'number' => $per_page, + 'offset' => $offset, + 'order' => 'ASC', + 'orderby' => 'name', + 'pad_counts' => false, + ); + + $terms = get_terms( $taxonomy_name, $args ); + + if ( ! $terms || is_wp_error($terms) ) { + echo '

    ' . __( 'No items.' ) . '

    '; + return; + } + + $num_pages = ceil( wp_count_terms( $taxonomy_name , array_merge( $args, array('number' => '', 'offset' => '') ) ) / $per_page ); + + $page_links = paginate_links( array( + 'base' => add_query_arg( + array( + $taxonomy_name . '-tab' => 'all', + 'paged' => '%#%', + 'item-type' => 'taxonomy', + 'item-object' => $taxonomy_name, + ) + ), + 'format' => '', + 'prev_text' => __('«'), + 'next_text' => __('»'), + 'total' => $num_pages, + 'current' => $pagenum + )); + + $db_fields = false; + if ( is_taxonomy_hierarchical( $taxonomy_name ) ) { + $db_fields = array( 'parent' => 'parent', 'id' => 'term_id' ); + } + + $walker = new Walker_Nav_Menu_Checklist( $db_fields ); + + $current_tab = 'most-used'; + if ( isset( $_REQUEST[$taxonomy_name . '-tab'] ) && in_array( $_REQUEST[$taxonomy_name . '-tab'], array('all', 'most-used', 'search') ) ) { + $current_tab = $_REQUEST[$taxonomy_name . '-tab']; + } + + if ( ! empty( $_REQUEST['quick-search-taxonomy-' . $taxonomy_name] ) ) { + $current_tab = 'search'; + } + + $removed_args = array( + 'action', + 'customlink-tab', + 'edit-menu-item', + 'menu-item', + 'page-tab', + '_wpnonce', + ); + + ?> +
    +
      +
    • >
    • +
    • >
    • +
    • >
    • +
    + +
    +
      + 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) ); + $args['walker'] = $walker; + echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $popular_terms), 0, (object) $args ); + ?> +
    +
    + +
    + + + +
      + +
    + + + +
    + +
    + $searched, 'fields' => 'all', 'orderby' => 'count', 'order' => 'DESC', 'hierarchical' => false ) ); + } else { + $searched = ''; + $search_results = array(); + } + ?> +

    + + + 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?> +

    + +
      + + + +
    • get_error_message(); ?>
    • + +
    • + +
    +
    + +

    + + + + + + + class="button-secondary submit-add-to-menu" value="" name="add-taxonomy-menu-item" id="submit-taxonomy-" /> + +

    + +
    + $_item_object_data ) { + if ( + empty( $_item_object_data['menu-item-object-id'] ) && // checkbox is not checked + ( + ! isset( $_item_object_data['menu-item-type'] ) || // and item type either isn't set + in_array( $_item_object_data['menu-item-url'], array( 'http://', '' ) ) || // or URL is the default + ! ( 'custom' == $_item_object_data['menu-item-type'] && ! isset( $_item_object_data['menu-item-db-id'] ) ) || // or it's not a custom menu item (but not the custom home page) + ! empty( $_item_object_data['menu-item-db-id'] ) // or it *is* a custom menu item that already exists + ) + ) { + continue; // then this potential menu item is not getting added to this menu + } + + // if this possible menu item doesn't actually have a menu database ID yet + if ( + empty( $_item_object_data['menu-item-db-id'] ) || + ( 0 > $_possible_db_id ) || + $_possible_db_id != $_item_object_data['menu-item-db-id'] + ) { + $_actual_db_id = 0; + } else { + $_actual_db_id = (int) $_item_object_data['menu-item-db-id']; + } + + $args = array( + 'menu-item-db-id' => ( isset( $_item_object_data['menu-item-db-id'] ) ? $_item_object_data['menu-item-db-id'] : '' ), + 'menu-item-object-id' => ( isset( $_item_object_data['menu-item-object-id'] ) ? $_item_object_data['menu-item-object-id'] : '' ), + 'menu-item-object' => ( isset( $_item_object_data['menu-item-object'] ) ? $_item_object_data['menu-item-object'] : '' ), + 'menu-item-parent-id' => ( isset( $_item_object_data['menu-item-parent-id'] ) ? $_item_object_data['menu-item-parent-id'] : '' ), + 'menu-item-position' => ( isset( $_item_object_data['menu-item-position'] ) ? $_item_object_data['menu-item-position'] : '' ), + 'menu-item-type' => ( isset( $_item_object_data['menu-item-type'] ) ? $_item_object_data['menu-item-type'] : '' ), + 'menu-item-title' => ( isset( $_item_object_data['menu-item-title'] ) ? $_item_object_data['menu-item-title'] : '' ), + 'menu-item-url' => ( isset( $_item_object_data['menu-item-url'] ) ? $_item_object_data['menu-item-url'] : '' ), + 'menu-item-description' => ( isset( $_item_object_data['menu-item-description'] ) ? $_item_object_data['menu-item-description'] : '' ), + 'menu-item-attr-title' => ( isset( $_item_object_data['menu-item-attr-title'] ) ? $_item_object_data['menu-item-attr-title'] : '' ), + 'menu-item-target' => ( isset( $_item_object_data['menu-item-target'] ) ? $_item_object_data['menu-item-target'] : '' ), + 'menu-item-classes' => ( isset( $_item_object_data['menu-item-classes'] ) ? $_item_object_data['menu-item-classes'] : '' ), + 'menu-item-xfn' => ( isset( $_item_object_data['menu-item-xfn'] ) ? $_item_object_data['menu-item-xfn'] : '' ), + ); + + $items_saved[] = wp_update_nav_menu_item( $menu_id, $_actual_db_id, $args ); + + } + } + return $items_saved; +} + +/** + * Adds custom arguments to some of the meta box object types. + * + * @since 3.0.0 + * + * @access private + * + * @param object $object The post type or taxonomy meta-object. + * @return object The post type of taxonomy object. + */ +function _wp_nav_menu_meta_box_object( $object = null ) { + if ( isset( $object->name ) ) { + + if ( 'page' == $object->name ) { + $object->_default_query = array( + 'orderby' => 'menu_order title', + 'post_status' => 'publish', + ); + + // posts should show only published items + } elseif ( 'post' == $object->name ) { + $object->_default_query = array( + 'post_status' => 'publish', + ); + + // cats should be in reverse chronological order + } elseif ( 'category' == $object->name ) { + $object->_default_query = array( + 'orderby' => 'id', + 'order' => 'DESC', + ); + + // custom post types should show only published items + } else { + $object->_default_query = array( + 'post_status' => 'publish', + ); + } + } + + return $object; +} + +/** + * Returns the menu formatted to edit. + * + * @since 3.0.0 + * + * @param string $menu_id The ID of the menu to format. + * @return string|WP_Error $output The menu formatted to edit or error object on failure. + */ +function wp_get_nav_menu_to_edit( $menu_id = 0 ) { + $menu = wp_get_nav_menu_object( $menu_id ); + + // If the menu exists, get its items. + if ( is_nav_menu( $menu ) ) { + $menu_items = wp_get_nav_menu_items( $menu->term_id, array('post_status' => 'any') ); + $result = '
    ' : '">'; + $result .= '

    ' . __('Select menu items (pages, categories, links) from the boxes at left to begin building your custom menu.') . '

    '; + $result .= '
    '; + + if( empty($menu_items) ) + return $result . ' '; + + $walker_class_name = apply_filters( 'wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $menu_id ); + + if ( class_exists( $walker_class_name ) ) + $walker = new $walker_class_name; + else + return new WP_Error( 'menu_walker_not_exist', sprintf( __('The Walker class named %s does not exist.'), $walker_class_name ) ); + + $some_pending_menu_items = $some_invalid_menu_items = false; + foreach( (array) $menu_items as $menu_item ) { + if ( isset( $menu_item->post_status ) && 'draft' == $menu_item->post_status ) + $some_pending_menu_items = true; + if ( ! empty( $menu_item->_invalid ) ) + $some_invalid_menu_items = true; + } + + if ( $some_pending_menu_items ) + $result .= '

    ' . __('Click Save Menu to make pending menu items public.') . '

    '; + + if ( $some_invalid_menu_items ) + $result .= '

    ' . __('There are some invalid menu items. Please check or delete them.') . '

    '; + + $result .= ' '; + return $result; + } elseif ( is_wp_error( $menu ) ) { + return $menu; + } + + +} + +/** + * Returns the columns for the nav menus page. + * + * @since 3.0.0 + * + * @return string|WP_Error $output The menu formatted to edit or error object on failure. + */ +function wp_nav_menu_manage_columns() { + return array( + '_title' => __('Show advanced menu properties'), + 'cb' => '', + 'link-target' => __('Link Target'), + 'css-classes' => __('CSS Classes'), + 'xfn' => __('Link Relationship (XFN)'), + 'description' => __('Description'), + ); +} + +/** + * Deletes orphaned draft menu items + * + * @access private + * @since 3.0.0 + * + */ +function _wp_delete_orphaned_draft_menu_items() { + global $wpdb; + $delete_timestamp = time() - (60*60*24*EMPTY_TRASH_DAYS); + + // delete orphaned draft menu items + $menu_items_to_delete = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts AS p LEFT JOIN $wpdb->postmeta AS m ON p.ID = m.post_id WHERE post_type = 'nav_menu_item' AND post_status = 'draft' AND meta_key = '_menu_item_orphaned' AND meta_value < '%d'", $delete_timestamp ) ); + + foreach( (array) $menu_items_to_delete as $menu_item_id ) + wp_delete_post( $menu_item_id, true ); +} + +add_action('admin_head-nav-menus.php', '_wp_delete_orphaned_draft_menu_items'); + +?> diff --git a/src/wp-admin/includes/plugin-install.php b/src/wp-admin/includes/plugin-install.php new file mode 100644 index 0000000..ca3e1f5 --- /dev/null +++ b/src/wp-admin/includes/plugin-install.php @@ -0,0 +1,369 @@ +per_page) ) + $args->per_page = 24; + + // Allows a plugin to override the WordPress.org API entirely. + // Use the filter 'plugins_api_result' to mearly add results. + // Please ensure that a object is returned from the following filters. + $args = apply_filters('plugins_api_args', $args, $action); + $res = apply_filters('plugins_api', false, $action, $args); + + if ( false === $res ) { + $request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) ); + if ( is_wp_error($request) ) { + $res = new WP_Error('plugins_api_failed', __('An Unexpected HTTP Error occurred during the API request.'), $request->get_error_message() ); + } else { + $res = unserialize( wp_remote_retrieve_body( $request ) ); + if ( false === $res ) + $res = new WP_Error('plugins_api_failed', __('An unknown error occurred.'), wp_remote_retrieve_body( $request ) ); + } + } elseif ( !is_wp_error($res) ) { + $res->external = true; + } + + return apply_filters('plugins_api_result', $res, $action, $args); +} + +/** + * Retrieve popular WordPress plugin tags. + * + * @since 2.7.0 + * + * @param array $args + * @return array + */ +function install_popular_tags( $args = array() ) { + $key = md5(serialize($args)); + if ( false !== ($tags = get_site_transient('poptags_' . $key) ) ) + return $tags; + + $tags = plugins_api('hot_tags', $args); + + if ( is_wp_error($tags) ) + return $tags; + + set_site_transient('poptags_' . $key, $tags, 10800); // 3 * 60 * 60 = 10800 + + return $tags; +} + +function install_dashboard() { + ?> +

    WordPress Plugin Directory or upload a plugin in .zip format via this page.') ?>

    + +

    +

    + + +

    +

    + '; + if ( is_wp_error($api_tags) ) { + echo $api_tags->get_error_message(); + } else { + //Set up the tags in a way which can be interprated by wp_generate_tag_cloud() + $tags = array(); + foreach ( (array)$api_tags as $tag ) + $tags[ $tag['name'] ] = (object) array( + 'link' => esc_url( self_admin_url('plugin-install.php?tab=search&type=tag&s=' . urlencode($tag['name'])) ), + 'name' => $tag['name'], + 'id' => sanitize_title_with_dashes($tag['name']), + 'count' => $tag['count'] ); + echo wp_generate_tag_cloud($tags, array( 'single_text' => __('%d plugin'), 'multiple_text' => __('%d plugins') ) ); + } + echo '


    '; +} +add_action('install_plugins_dashboard', 'install_dashboard'); + +/** + * Display search form for searching plugins. + * + * @since 2.7.0 + */ +function install_search_form(){ + $type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : ''; + $term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : ''; + + ?>
    + + + + + +
    +

    +

    +
    + + + + +
    +display(); +} +add_action('install_plugins_search', 'display_plugins_table'); +add_action('install_plugins_featured', 'display_plugins_table'); +add_action('install_plugins_popular', 'display_plugins_table'); +add_action('install_plugins_new', 'display_plugins_table'); +add_action('install_plugins_updated', 'display_plugins_table'); + +/** + * Determine the status we can perform on a plugin. + * + * @since 3.0.0 + */ +function install_plugin_install_status($api, $loop = false) { + // this function is called recursivly, $loop prevents futhur loops. + if ( is_array($api) ) + $api = (object) $api; + + //Default to a "new" plugin + $status = 'install'; + $url = false; + + //Check to see if this plugin is known to be installed, and has an update awaiting it. + $update_plugins = get_site_transient('update_plugins'); + if ( is_object( $update_plugins ) ) { + foreach ( (array)$update_plugins->response as $file => $plugin ) { + if ( $plugin->slug === $api->slug ) { + $status = 'update_available'; + $update_file = $file; + $version = $plugin->new_version; + if ( current_user_can('update_plugins') ) + $url = wp_nonce_url(self_admin_url('update.php?action=upgrade-plugin&plugin=' . $update_file), 'upgrade-plugin_' . $update_file); + break; + } + } + } + + if ( 'install' == $status ) { + if ( is_dir( WP_PLUGIN_DIR . '/' . $api->slug ) ) { + $installed_plugin = get_plugins('/' . $api->slug); + if ( empty($installed_plugin) ) { + if ( current_user_can('install_plugins') ) + $url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug); + } else { + $key = array_shift( $key = array_keys($installed_plugin) ); //Use the first plugin regardless of the name, Could have issues for multiple-plugins in one directory if they share different version numbers + if ( version_compare($api->version, $installed_plugin[ $key ]['Version'], '=') ){ + $status = 'latest_installed'; + } elseif ( version_compare($api->version, $installed_plugin[ $key ]['Version'], '<') ) { + $status = 'newer_installed'; + $version = $installed_plugin[ $key ]['Version']; + } else { + //If the above update check failed, Then that probably means that the update checker has out-of-date information, force a refresh + if ( ! $loop ) { + delete_site_transient('update_plugins'); + wp_update_plugins(); + return install_plugin_install_status($api, true); + } + } + } + } else { + // "install" & no directory with that slug + if ( current_user_can('install_plugins') ) + $url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug); + } + } + if ( isset($_GET['from']) ) + $url .= '&from=' . urlencode(stripslashes($_GET['from'])); + + return compact('status', 'url', 'version'); +} + +/** + * Display plugin information in dialog box form. + * + * @since 2.7.0 + */ +function install_plugin_information() { + global $tab; + + $api = plugins_api('plugin_information', array('slug' => stripslashes( $_REQUEST['plugin'] ) )); + + if ( is_wp_error($api) ) + wp_die($api); + + $plugins_allowedtags = array('a' => array('href' => array(), 'title' => array(), 'target' => array()), + 'abbr' => array('title' => array()), 'acronym' => array('title' => array()), + 'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(), + 'div' => array(), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(), + 'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(), + 'img' => array('src' => array(), 'class' => array(), 'alt' => array())); + //Sanitize HTML + foreach ( (array)$api->sections as $section_name => $content ) + $api->sections[$section_name] = wp_kses($content, $plugins_allowedtags); + foreach ( array('version', 'author', 'requires', 'tested', 'homepage', 'downloaded', 'slug') as $key ) + $api->$key = wp_kses($api->$key, $plugins_allowedtags); + + $section = isset($_REQUEST['section']) ? stripslashes( $_REQUEST['section'] ) : 'description'; //Default to the Description tab, Do not translate, API returns English. + if ( empty($section) || ! isset($api->sections[ $section ]) ) + $section = array_shift( $section_titles = array_keys((array)$api->sections) ); + + iframe_header( __('Plugin Install') ); + echo "
    \n"; + echo "
      \n"; + foreach ( (array)$api->sections as $section_name => $content ) { + + $title = $section_name; + $title = ucwords(str_replace('_', ' ', $title)); + + $class = ( $section_name == $section ) ? ' class="current"' : ''; + $href = add_query_arg( array('tab' => $tab, 'section' => $section_name) ); + $href = esc_url($href); + $san_title = esc_attr(sanitize_title_with_dashes($title)); + echo "\t
    • $title
    • \n"; + } + echo "
    \n"; + echo "
    \n"; + ?> +
    + download_link) && ( current_user_can('install_plugins') || current_user_can('update_plugins') ) ) : ?> +

    + ' . __('Install Now') . ''; + break; + case 'update_available': + if ( $status['url'] ) + echo '' . __('Install Update Now') .''; + break; + case 'newer_installed': + echo '' . sprintf(__('Newer Version (%s) Installed'), $status['version']) . ''; + break; + case 'latest_installed': + echo '' . __('Latest Version Installed') . ''; + break; + } + ?> +

    + +

    +
      +version) ) : ?> +
    • version ?>
    • +author) ) : ?> +
    • author, '_blank') ?>
    • +last_updated) ) : ?> +
    • last_updated)) ) ?>
    • +requires) ) : ?> +
    • requires) ?>
    • +tested) ) : ?> +
    • tested ?>
    • +downloaded) ) : ?> +
    • downloaded), number_format_i18n($api->downloaded)) ?>
    • +slug) && empty($api->external) ) : ?> +
    • +homepage) ) : ?> +
    • + +
    + rating) ) : ?> +

    +
    +
    +
    <?php _e('5 stars') ?>
    +
    <?php _e('4 stars') ?>
    +
    <?php _e('3 stars') ?>
    +
    <?php _e('2 stars') ?>
    +
    <?php _e('1 star') ?>
    +
    + num_ratings), number_format_i18n($api->num_ratings)); ?> + +
    +
    + tested) && version_compare( substr($GLOBALS['wp_version'], 0, strlen($api->tested)), $api->tested, '>') ) + echo '

    ' . __('Warning: This plugin has not been tested with your current version of WordPress.') . '

    '; + + else if ( !empty($api->requires) && version_compare( substr($GLOBALS['wp_version'], 0, strlen($api->requires)), $api->requires, '<') ) + echo '

    ' . __('Warning: This plugin has not been marked as compatible with your version of WordPress.') . '

    '; + + foreach ( (array)$api->sections as $section_name => $content ) { + $title = $section_name; + $title[0] = strtoupper($title[0]); + $title = str_replace('_', ' ', $title); + + $content = links_add_base_url($content, 'http://wordpress.org/extend/plugins/' . $api->slug . '/'); + $content = links_add_target($content, '_blank'); + + $san_title = esc_attr(sanitize_title_with_dashes($title)); + + $display = ( $section_name == $section ) ? 'block' : 'none'; + + echo "\t
    \n"; + echo "\t\t

    $title

    "; + echo $content; + echo "\t
    \n"; + } + echo "
    \n"; + + iframe_footer(); + exit; +} +add_action('install_plugins_pre_plugin-information', 'install_plugin_information'); diff --git a/src/wp-admin/includes/plugin.php b/src/wp-admin/includes/plugin.php new file mode 100644 index 0000000..be97e8c --- /dev/null +++ b/src/wp-admin/includes/plugin.php @@ -0,0 +1,1726 @@ + + * /* + * Plugin Name: Name of Plugin + * Plugin URI: Link to plugin information + * Description: Plugin Description + * Author: Plugin author's name + * Author URI: Link to the author's web site + * Version: Must be set in the plugin for WordPress 2.3+ + * Text Domain: Optional. Unique identifier, should be same as the one used in + * plugin_text_domain() + * Domain Path: Optional. Only useful if the translations are located in a + * folder above the plugin's base path. For example, if .mo files are + * located in the locale folder then Domain Path will be "/locale/" and + * must have the first slash. Defaults to the base folder the plugin is + * located in. + * Network: Optional. Specify "Network: true" to require that a plugin is activated + * across all sites in an installation. This will prevent a plugin from being + * activated on a single site when Multisite is enabled. + * * / # Remove the space to close comment + * + * + * Plugin data returned array contains the following: + * 'Name' - Name of the plugin, must be unique. + * 'Title' - Title of the plugin and the link to the plugin's web site. + * 'Description' - Description of what the plugin does and/or notes + * from the author. + * 'Author' - The author's name + * 'AuthorURI' - The authors web site address. + * 'Version' - The plugin version number. + * 'PluginURI' - Plugin web site address. + * 'TextDomain' - Plugin's text domain for localization. + * 'DomainPath' - Plugin's relative directory path to .mo files. + * 'Network' - Boolean. Whether the plugin can only be activated network wide. + * + * Some users have issues with opening large files and manipulating the contents + * for want is usually the first 1kiB or 2kiB. This function stops pulling in + * the plugin contents when it has all of the required plugin data. + * + * The first 8kiB of the file will be pulled in and if the plugin data is not + * within that first 8kiB, then the plugin author should correct their plugin + * and move the plugin data headers to the top. + * + * The plugin file is assumed to have permissions to allow for scripts to read + * the file. This is not checked however and the file is only opened for + * reading. + * + * @link http://trac.wordpress.org/ticket/5651 Previous Optimizations. + * @link http://trac.wordpress.org/ticket/7372 Further and better Optimizations. + * @since 1.5.0 + * + * @param string $plugin_file Path to the plugin file + * @param bool $markup If the returned data should have HTML markup applied + * @param bool $translate If the returned data should be translated + * @return array See above for description. + */ +function get_plugin_data( $plugin_file, $markup = true, $translate = true ) { + + $default_headers = array( + 'Name' => 'Plugin Name', + 'PluginURI' => 'Plugin URI', + 'Version' => 'Version', + 'Description' => 'Description', + 'Author' => 'Author', + 'AuthorURI' => 'Author URI', + 'TextDomain' => 'Text Domain', + 'DomainPath' => 'Domain Path', + 'Network' => 'Network', + // Site Wide Only is deprecated in favor of Network. + '_sitewide' => 'Site Wide Only', + ); + + $plugin_data = get_file_data( $plugin_file, $default_headers, 'plugin' ); + + // Site Wide Only is the old header for Network + if ( empty( $plugin_data['Network'] ) && ! empty( $plugin_data['_sitewide'] ) ) { + _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The %1$s plugin header is deprecated. Use %2$s instead.' ), 'Site Wide Only: true', 'Network: true' ) ); + $plugin_data['Network'] = $plugin_data['_sitewide']; + } + $plugin_data['Network'] = ( 'true' == strtolower( $plugin_data['Network'] ) ); + unset( $plugin_data['_sitewide'] ); + + //For backward compatibility by default Title is the same as Name. + $plugin_data['Title'] = $plugin_data['Name']; + + if ( $markup || $translate ) + $plugin_data = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate ); + else + $plugin_data['AuthorName'] = $plugin_data['Author']; + + return $plugin_data; +} + +function _get_plugin_data_markup_translate($plugin_file, $plugin_data, $markup = true, $translate = true) { + + //Translate fields + if ( $translate && ! empty($plugin_data['TextDomain']) ) { + if ( ! empty( $plugin_data['DomainPath'] ) ) + load_plugin_textdomain($plugin_data['TextDomain'], false, dirname($plugin_file). $plugin_data['DomainPath']); + else + load_plugin_textdomain($plugin_data['TextDomain'], false, dirname($plugin_file)); + + foreach ( array('Name', 'PluginURI', 'Description', 'Author', 'AuthorURI', 'Version') as $field ) + $plugin_data[ $field ] = translate($plugin_data[ $field ], $plugin_data['TextDomain']); + } + + $plugins_allowedtags = array( + 'a' => array( 'href' => array(), 'title' => array() ), + 'abbr' => array( 'title' => array() ), + 'acronym' => array( 'title' => array() ), + 'code' => array(), + 'em' => array(), + 'strong' => array(), + ); + + $plugin_data['AuthorName'] = $plugin_data['Author'] = wp_kses( $plugin_data['Author'], $plugins_allowedtags ); + + //Apply Markup + if ( $markup ) { + if ( ! empty($plugin_data['PluginURI']) && ! empty($plugin_data['Name']) ) + $plugin_data['Title'] = '' . $plugin_data['Name'] . ''; + else + $plugin_data['Title'] = $plugin_data['Name']; + + if ( ! empty($plugin_data['AuthorURI']) && ! empty($plugin_data['Author']) ) + $plugin_data['Author'] = '' . $plugin_data['Author'] . ''; + + $plugin_data['Description'] = wptexturize( $plugin_data['Description'] ); + if ( ! empty($plugin_data['Author']) ) + $plugin_data['Description'] .= ' ' . sprintf( __('By %s'), $plugin_data['Author'] ) . '.'; + } + + // Sanitize all displayed data. Author and AuthorName sanitized above. + $plugin_data['Title'] = wp_kses( $plugin_data['Title'], $plugins_allowedtags ); + $plugin_data['Version'] = wp_kses( $plugin_data['Version'], $plugins_allowedtags ); + $plugin_data['Description'] = wp_kses( $plugin_data['Description'], $plugins_allowedtags ); + $plugin_data['Name'] = wp_kses( $plugin_data['Name'], $plugins_allowedtags ); + + return $plugin_data; +} + +/** + * Get a list of a plugin's files. + * + * @since 2.8.0 + * + * @param string $plugin Plugin ID + * @return array List of files relative to the plugin root. + */ +function get_plugin_files($plugin) { + $plugin_file = WP_PLUGIN_DIR . '/' . $plugin; + $dir = dirname($plugin_file); + $plugin_files = array($plugin); + if ( is_dir($dir) && $dir != WP_PLUGIN_DIR ) { + $plugins_dir = @ opendir( $dir ); + if ( $plugins_dir ) { + while (($file = readdir( $plugins_dir ) ) !== false ) { + if ( substr($file, 0, 1) == '.' ) + continue; + if ( is_dir( $dir . '/' . $file ) ) { + $plugins_subdir = @ opendir( $dir . '/' . $file ); + if ( $plugins_subdir ) { + while (($subfile = readdir( $plugins_subdir ) ) !== false ) { + if ( substr($subfile, 0, 1) == '.' ) + continue; + $plugin_files[] = plugin_basename("$dir/$file/$subfile"); + } + @closedir( $plugins_subdir ); + } + } else { + if ( plugin_basename("$dir/$file") != $plugin ) + $plugin_files[] = plugin_basename("$dir/$file"); + } + } + @closedir( $plugins_dir ); + } + } + + return $plugin_files; +} + +/** + * Check the plugins directory and retrieve all plugin files with plugin data. + * + * WordPress only supports plugin files in the base plugins directory + * (wp-content/plugins) and in one directory above the plugins directory + * (wp-content/plugins/my-plugin). The file it looks for has the plugin data and + * must be found in those two locations. It is recommended that do keep your + * plugin files in directories. + * + * The file with the plugin data is the file that will be included and therefore + * needs to have the main execution for the plugin. This does not mean + * everything must be contained in the file and it is recommended that the file + * be split for maintainability. Keep everything in one file for extreme + * optimization purposes. + * + * @since 1.5.0 + * + * @param string $plugin_folder Optional. Relative path to single plugin folder. + * @return array Key is the plugin file path and the value is an array of the plugin data. + */ +function get_plugins($plugin_folder = '') { + + if ( ! $cache_plugins = wp_cache_get('plugins', 'plugins') ) + $cache_plugins = array(); + + if ( isset($cache_plugins[ $plugin_folder ]) ) + return $cache_plugins[ $plugin_folder ]; + + $wp_plugins = array (); + $plugin_root = WP_PLUGIN_DIR; + if ( !empty($plugin_folder) ) + $plugin_root .= $plugin_folder; + + // Files in wp-content/plugins directory + $plugins_dir = @ opendir( $plugin_root); + $plugin_files = array(); + if ( $plugins_dir ) { + while (($file = readdir( $plugins_dir ) ) !== false ) { + if ( substr($file, 0, 1) == '.' ) + continue; + if ( is_dir( $plugin_root.'/'.$file ) ) { + $plugins_subdir = @ opendir( $plugin_root.'/'.$file ); + if ( $plugins_subdir ) { + while (($subfile = readdir( $plugins_subdir ) ) !== false ) { + if ( substr($subfile, 0, 1) == '.' ) + continue; + if ( substr($subfile, -4) == '.php' ) + $plugin_files[] = "$file/$subfile"; + } + closedir( $plugins_subdir ); + } + } else { + if ( substr($file, -4) == '.php' ) + $plugin_files[] = $file; + } + } + closedir( $plugins_dir ); + } + + if ( empty($plugin_files) ) + return $wp_plugins; + + foreach ( $plugin_files as $plugin_file ) { + if ( !is_readable( "$plugin_root/$plugin_file" ) ) + continue; + + $plugin_data = get_plugin_data( "$plugin_root/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached. + + if ( empty ( $plugin_data['Name'] ) ) + continue; + + $wp_plugins[plugin_basename( $plugin_file )] = $plugin_data; + } + + uasort( $wp_plugins, '_sort_uname_callback' ); + + $cache_plugins[ $plugin_folder ] = $wp_plugins; + wp_cache_set('plugins', $cache_plugins, 'plugins'); + + return $wp_plugins; +} + +/** + * Check the mu-plugins directory and retrieve all mu-plugin files with any plugin data. + * + * WordPress only includes mu-plugin files in the base mu-plugins directory (wp-content/mu-plugins). + * + * @since 3.0.0 + * @return array Key is the mu-plugin file path and the value is an array of the mu-plugin data. + */ +function get_mu_plugins() { + $wp_plugins = array(); + // Files in wp-content/mu-plugins directory + $plugin_files = array(); + + if ( ! is_dir( WPMU_PLUGIN_DIR ) ) + return $wp_plugins; + if ( $plugins_dir = @ opendir( WPMU_PLUGIN_DIR ) ) { + while ( ( $file = readdir( $plugins_dir ) ) !== false ) { + if ( substr( $file, -4 ) == '.php' ) + $plugin_files[] = $file; + } + } else { + return $wp_plugins; + } + + @closedir( $plugins_dir ); + + if ( empty($plugin_files) ) + return $wp_plugins; + + foreach ( $plugin_files as $plugin_file ) { + if ( !is_readable( WPMU_PLUGIN_DIR . "/$plugin_file" ) ) + continue; + + $plugin_data = get_plugin_data( WPMU_PLUGIN_DIR . "/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached. + + if ( empty ( $plugin_data['Name'] ) ) + $plugin_data['Name'] = $plugin_file; + + $wp_plugins[ $plugin_file ] = $plugin_data; + } + + if ( isset( $wp_plugins['index.php'] ) && filesize( WPMU_PLUGIN_DIR . '/index.php') <= 30 ) // silence is golden + unset( $wp_plugins['index.php'] ); + + uasort( $wp_plugins, '_sort_uname_callback' ); + + return $wp_plugins; +} + +/** + * Callback to sort array by a 'Name' key. + * + * @since 3.1.0 + * @access private + */ +function _sort_uname_callback( $a, $b ) { + return strnatcasecmp( $a['Name'], $b['Name'] ); +} + +/** + * Check the wp-content directory and retrieve all drop-ins with any plugin data. + * + * @since 3.0.0 + * @return array Key is the file path and the value is an array of the plugin data. + */ +function get_dropins() { + $dropins = array(); + $plugin_files = array(); + + $_dropins = _get_dropins(); + + // These exist in the wp-content directory + if ( $plugins_dir = @ opendir( WP_CONTENT_DIR ) ) { + while ( ( $file = readdir( $plugins_dir ) ) !== false ) { + if ( isset( $_dropins[ $file ] ) ) + $plugin_files[] = $file; + } + } else { + return $dropins; + } + + @closedir( $plugins_dir ); + + if ( empty($plugin_files) ) + return $dropins; + + foreach ( $plugin_files as $plugin_file ) { + if ( !is_readable( WP_CONTENT_DIR . "/$plugin_file" ) ) + continue; + $plugin_data = get_plugin_data( WP_CONTENT_DIR . "/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached. + if ( empty( $plugin_data['Name'] ) ) + $plugin_data['Name'] = $plugin_file; + $dropins[ $plugin_file ] = $plugin_data; + } + + uksort( $dropins, 'strnatcasecmp' ); + + return $dropins; +} + +/** + * Returns drop-ins that WordPress uses. + * + * Includes Multisite drop-ins only when is_multisite() + * + * @since 3.0.0 + * @return array Key is file name. The value is an array, with the first value the + * purpose of the drop-in and the second value the name of the constant that must be + * true for the drop-in to be used, or true if no constant is required. + */ +function _get_dropins() { + $dropins = array( + 'advanced-cache.php' => array( __( 'Advanced caching plugin.' ), 'WP_CACHE' ), // WP_CACHE + 'db.php' => array( __( 'Custom database class.' ), true ), // auto on load + 'db-error.php' => array( __( 'Custom database error message.' ), true ), // auto on error + 'install.php' => array( __( 'Custom install script.' ), true ), // auto on install + 'maintenance.php' => array( __( 'Custom maintenance message.' ), true ), // auto on maintenance + 'object-cache.php' => array( __( 'External object cache.' ), true ), // auto on load + ); + + if ( is_multisite() ) { + $dropins['sunrise.php' ] = array( __( 'Executed before Multisite is loaded.' ), 'SUNRISE' ); // SUNRISE + $dropins['blog-deleted.php' ] = array( __( 'Custom site deleted message.' ), true ); // auto on deleted blog + $dropins['blog-inactive.php' ] = array( __( 'Custom site inactive message.' ), true ); // auto on inactive blog + $dropins['blog-suspended.php'] = array( __( 'Custom site suspended message.' ), true ); // auto on archived or spammed blog + } + + return $dropins; +} + +/** + * Check whether the plugin is active by checking the active_plugins list. + * + * @since 2.5.0 + * + * @param string $plugin Base plugin path from plugins directory. + * @return bool True, if in the active plugins list. False, not in the list. + */ +function is_plugin_active( $plugin ) { + return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || is_plugin_active_for_network( $plugin ); +} + +/** + * Check whether the plugin is inactive. + * + * Reverse of is_plugin_active(). Used as a callback. + * + * @since 3.1.0 + * @see is_plugin_active() + * + * @param string $plugin Base plugin path from plugins directory. + * @return bool True if inactive. False if active. + */ +function is_plugin_inactive( $plugin ) { + return ! is_plugin_active( $plugin ); +} + +/** + * Check whether the plugin is active for the entire network. + * + * @since 3.0.0 + * + * @param string $plugin Base plugin path from plugins directory. + * @return bool True, if active for the network, otherwise false. + */ +function is_plugin_active_for_network( $plugin ) { + if ( !is_multisite() ) + return false; + + $plugins = get_site_option( 'active_sitewide_plugins'); + if ( isset($plugins[$plugin]) ) + return true; + + return false; +} + +/** + * Checks for "Network: true" in the plugin header to see if this should + * be activated only as a network wide plugin. The plugin would also work + * when Multisite is not enabled. + * + * Checks for "Site Wide Only: true" for backwards compatibility. + * + * @since 3.0.0 + * + * @param string $plugin Plugin to check + * @return bool True if plugin is network only, false otherwise. + */ +function is_network_only_plugin( $plugin ) { + $plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ); + if ( $plugin_data ) + return $plugin_data['Network']; + return false; +} + +/** + * Attempts activation of plugin in a "sandbox" and redirects on success. + * + * A plugin that is already activated will not attempt to be activated again. + * + * The way it works is by setting the redirection to the error before trying to + * include the plugin file. If the plugin fails, then the redirection will not + * be overwritten with the success message. Also, the options will not be + * updated and the activation hook will not be called on plugin error. + * + * It should be noted that in no way the below code will actually prevent errors + * within the file. The code should not be used elsewhere to replicate the + * "sandbox", which uses redirection to work. + * {@source 13 1} + * + * If any errors are found or text is outputted, then it will be captured to + * ensure that the success redirection will update the error redirection. + * + * @since 2.5.0 + * + * @param string $plugin Plugin path to main plugin file with plugin data. + * @param string $redirect Optional. URL to redirect to. + * @param bool $network_wide Whether to enable the plugin for all sites in the + * network or just the current site. Multisite only. Default is false. + * @param bool $silent Prevent calling activation hooks. Optional, default is false. + * @return WP_Error|null WP_Error on invalid file or null on success. + */ +function activate_plugin( $plugin, $redirect = '', $network_wide = false, $silent = false ) { + $plugin = plugin_basename( trim( $plugin ) ); + + if ( is_multisite() && ( $network_wide || is_network_only_plugin($plugin) ) ) { + $network_wide = true; + $current = get_site_option( 'active_sitewide_plugins', array() ); + } else { + $current = get_option( 'active_plugins', array() ); + } + + $valid = validate_plugin($plugin); + if ( is_wp_error($valid) ) + return $valid; + + if ( !in_array($plugin, $current) ) { + if ( !empty($redirect) ) + wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect)); // we'll override this later if the plugin can be included without fatal error + ob_start(); + include_once(WP_PLUGIN_DIR . '/' . $plugin); + + if ( ! $silent ) { + do_action( 'activate_plugin', $plugin, $network_wide ); + do_action( 'activate_' . $plugin, $network_wide ); + } + + if ( $network_wide ) { + $current[$plugin] = time(); + update_site_option( 'active_sitewide_plugins', $current ); + } else { + $current[] = $plugin; + sort($current); + update_option('active_plugins', $current); + } + + if ( ! $silent ) { + do_action( 'activated_plugin', $plugin, $network_wide ); + } + + if ( ob_get_length() > 0 ) { + $output = ob_get_clean(); + return new WP_Error('unexpected_output', __('The plugin generated unexpected output.'), $output); + } + ob_end_clean(); + } + + return null; +} + +/** + * Deactivate a single plugin or multiple plugins. + * + * The deactivation hook is disabled by the plugin upgrader by using the $silent + * parameter. + * + * @since 2.5.0 + * + * @param string|array $plugins Single plugin or list of plugins to deactivate. + * @param bool $silent Prevent calling deactivation hooks. Default is false. + */ +function deactivate_plugins( $plugins, $silent = false ) { + if ( is_multisite() ) + $network_current = get_site_option( 'active_sitewide_plugins', array() ); + $current = get_option( 'active_plugins', array() ); + $do_blog = $do_network = false; + + foreach ( (array) $plugins as $plugin ) { + $plugin = plugin_basename( trim( $plugin ) ); + if ( ! is_plugin_active($plugin) ) + continue; + + $network_wide = is_plugin_active_for_network( $plugin ); + + if ( ! $silent ) + do_action( 'deactivate_plugin', $plugin, $network_wide ); + + if ( $network_wide ) { + $do_network = true; + unset( $network_current[ $plugin ] ); + } else { + $key = array_search( $plugin, $current ); + if ( false !== $key ) { + $do_blog = true; + array_splice( $current, $key, 1 ); + } + } + + if ( ! $silent ) { + do_action( 'deactivate_' . $plugin, $network_wide ); + do_action( 'deactivated_plugin', $plugin, $network_wide ); + } + } + + if ( $do_blog ) + update_option('active_plugins', $current); + if ( $do_network ) + update_site_option( 'active_sitewide_plugins', $network_current ); +} + +/** + * Activate multiple plugins. + * + * When WP_Error is returned, it does not mean that one of the plugins had + * errors. It means that one or more of the plugins file path was invalid. + * + * The execution will be halted as soon as one of the plugins has an error. + * + * @since 2.6.0 + * + * @param string|array $plugins + * @param string $redirect Redirect to page after successful activation. + * @param bool $network_wide Whether to enable the plugin for all sites in the network. + * @param bool $silent Prevent calling activation hooks. Default is false. + * @return bool|WP_Error True when finished or WP_Error if there were errors during a plugin activation. + */ +function activate_plugins( $plugins, $redirect = '', $network_wide = false, $silent = false ) { + if ( !is_array($plugins) ) + $plugins = array($plugins); + + $errors = array(); + foreach ( $plugins as $plugin ) { + if ( !empty($redirect) ) + $redirect = add_query_arg('plugin', $plugin, $redirect); + $result = activate_plugin($plugin, $redirect, $network_wide, $silent); + if ( is_wp_error($result) ) + $errors[$plugin] = $result; + } + + if ( !empty($errors) ) + return new WP_Error('plugins_invalid', __('One of the plugins is invalid.'), $errors); + + return true; +} + +/** + * Remove directory and files of a plugin for a single or list of plugin(s). + * + * If the plugins parameter list is empty, false will be returned. True when + * completed. + * + * @since 2.6.0 + * + * @param array $plugins List of plugin + * @param string $redirect Redirect to page when complete. + * @return mixed + */ +function delete_plugins($plugins, $redirect = '' ) { + global $wp_filesystem; + + if ( empty($plugins) ) + return false; + + $checked = array(); + foreach( $plugins as $plugin ) + $checked[] = 'checked[]=' . $plugin; + + ob_start(); + $url = wp_nonce_url('plugins.php?action=delete-selected&verify-delete=1&' . implode('&', $checked), 'bulk-plugins'); + if ( false === ($credentials = request_filesystem_credentials($url)) ) { + $data = ob_get_contents(); + ob_end_clean(); + if ( ! empty($data) ){ + include_once( ABSPATH . 'wp-admin/admin-header.php'); + echo $data; + include( ABSPATH . 'wp-admin/admin-footer.php'); + exit; + } + return; + } + + if ( ! WP_Filesystem($credentials) ) { + request_filesystem_credentials($url, '', true); //Failed to connect, Error and request again + $data = ob_get_contents(); + ob_end_clean(); + if ( ! empty($data) ){ + include_once( ABSPATH . 'wp-admin/admin-header.php'); + echo $data; + include( ABSPATH . 'wp-admin/admin-footer.php'); + exit; + } + return; + } + + if ( ! is_object($wp_filesystem) ) + return new WP_Error('fs_unavailable', __('Could not access filesystem.')); + + if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) + return new WP_Error('fs_error', __('Filesystem error.'), $wp_filesystem->errors); + + //Get the base plugin folder + $plugins_dir = $wp_filesystem->wp_plugins_dir(); + if ( empty($plugins_dir) ) + return new WP_Error('fs_no_plugins_dir', __('Unable to locate WordPress Plugin directory.')); + + $plugins_dir = trailingslashit( $plugins_dir ); + + $errors = array(); + + foreach( $plugins as $plugin_file ) { + // Run Uninstall hook + if ( is_uninstallable_plugin( $plugin_file ) ) + uninstall_plugin($plugin_file); + + $this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin_file) ); + // If plugin is in its own directory, recursively delete the directory. + if ( strpos($plugin_file, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory separator AND that its not the root plugin folder + $deleted = $wp_filesystem->delete($this_plugin_dir, true); + else + $deleted = $wp_filesystem->delete($plugins_dir . $plugin_file); + + if ( ! $deleted ) + $errors[] = $plugin_file; + } + + if ( ! empty($errors) ) + return new WP_Error('could_not_remove_plugin', sprintf(__('Could not fully remove the plugin(s) %s.'), implode(', ', $errors)) ); + + // Force refresh of plugin update information + if ( $current = get_site_transient('update_plugins') ) { + unset( $current->response[ $plugin_file ] ); + set_site_transient('update_plugins', $current); + } + + return true; +} + +/** + * Validate active plugins + * + * Validate all active plugins, deactivates invalid and + * returns an array of deactivated ones. + * + * @since 2.5.0 + * @return array invalid plugins, plugin as key, error as value + */ +function validate_active_plugins() { + $plugins = get_option( 'active_plugins', array() ); + // validate vartype: array + if ( ! is_array( $plugins ) ) { + update_option( 'active_plugins', array() ); + $plugins = array(); + } + + if ( is_multisite() && is_super_admin() ) { + $network_plugins = (array) get_site_option( 'active_sitewide_plugins', array() ); + $plugins = array_merge( $plugins, array_keys( $network_plugins ) ); + } + + if ( empty( $plugins ) ) + return; + + $invalid = array(); + + // invalid plugins get deactivated + foreach ( $plugins as $plugin ) { + $result = validate_plugin( $plugin ); + if ( is_wp_error( $result ) ) { + $invalid[$plugin] = $result; + deactivate_plugins( $plugin, true ); + } + } + return $invalid; +} + +/** + * Validate the plugin path. + * + * Checks that the file exists and {@link validate_file() is valid file}. + * + * @since 2.5.0 + * + * @param string $plugin Plugin Path + * @return WP_Error|int 0 on success, WP_Error on failure. + */ +function validate_plugin($plugin) { + if ( validate_file($plugin) ) + return new WP_Error('plugin_invalid', __('Invalid plugin path.')); + if ( ! file_exists(WP_PLUGIN_DIR . '/' . $plugin) ) + return new WP_Error('plugin_not_found', __('Plugin file does not exist.')); + + $installed_plugins = get_plugins(); + if ( ! isset($installed_plugins[$plugin]) ) + return new WP_Error('no_plugin_header', __('The plugin does not have a valid header.')); + return 0; +} + +/** + * Whether the plugin can be uninstalled. + * + * @since 2.7.0 + * + * @param string $plugin Plugin path to check. + * @return bool Whether plugin can be uninstalled. + */ +function is_uninstallable_plugin($plugin) { + $file = plugin_basename($plugin); + + $uninstallable_plugins = (array) get_option('uninstall_plugins'); + if ( isset( $uninstallable_plugins[$file] ) || file_exists( WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php' ) ) + return true; + + return false; +} + +/** + * Uninstall a single plugin. + * + * Calls the uninstall hook, if it is available. + * + * @since 2.7.0 + * + * @param string $plugin Relative plugin path from Plugin Directory. + */ +function uninstall_plugin($plugin) { + $file = plugin_basename($plugin); + + $uninstallable_plugins = (array) get_option('uninstall_plugins'); + if ( file_exists( WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php' ) ) { + if ( isset( $uninstallable_plugins[$file] ) ) { + unset($uninstallable_plugins[$file]); + update_option('uninstall_plugins', $uninstallable_plugins); + } + unset($uninstallable_plugins); + + define('WP_UNINSTALL_PLUGIN', $file); + include WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php'; + + return true; + } + + if ( isset( $uninstallable_plugins[$file] ) ) { + $callable = $uninstallable_plugins[$file]; + unset($uninstallable_plugins[$file]); + update_option('uninstall_plugins', $uninstallable_plugins); + unset($uninstallable_plugins); + + include WP_PLUGIN_DIR . '/' . $file; + + add_action( 'uninstall_' . $file, $callable ); + do_action( 'uninstall_' . $file ); + } +} + +// +// Menu +// + +/** + * Add a top level menu page + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * @param string $icon_url The url to the icon to be used for this menu + * @param int $position The position in the menu order this one should appear + * + * @return string The resulting page's hook_suffix + */ +function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '', $position = NULL ) { + global $menu, $admin_page_hooks, $_registered_pages, $_parent_pages; + + $menu_slug = plugin_basename( $menu_slug ); + + $admin_page_hooks[$menu_slug] = sanitize_title( $menu_title ); + + $hookname = get_plugin_page_hookname( $menu_slug, '' ); + + if ( !empty( $function ) && !empty( $hookname ) && current_user_can( $capability ) ) + add_action( $hookname, $function ); + + if ( empty($icon_url) ) + $icon_url = esc_url( admin_url( 'images/generic.png' ) ); + elseif ( is_ssl() && 0 === strpos($icon_url, 'http://') ) + $icon_url = 'https://' . substr($icon_url, 7); + + $new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url ); + + if ( null === $position ) + $menu[] = $new_menu; + else + $menu[$position] = $new_menu; + + $_registered_pages[$hookname] = true; + + // No parent as top level + $_parent_pages[$menu_slug] = false; + + return $hookname; +} + +/** + * Add a top level menu page in the 'objects' section + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * @param string $icon_url The url to the icon to be used for this menu + * + * @return string The resulting page's hook_suffix + */ +function add_object_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '') { + global $_wp_last_object_menu; + + $_wp_last_object_menu++; + + return add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $_wp_last_object_menu); +} + +/** + * Add a top level menu page in the 'utility' section + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * @param string $icon_url The url to the icon to be used for this menu + * + * @return string The resulting page's hook_suffix + */ +function add_utility_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '') { + global $_wp_last_utility_menu; + + $_wp_last_utility_menu++; + + return add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $_wp_last_utility_menu); +} + +/** + * Add a sub menu page + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $parent_slug The slug name for the parent menu (or the file name of a standard WordPress admin page) + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + global $submenu; + global $menu; + global $_wp_real_parent_file; + global $_wp_submenu_nopriv; + global $_registered_pages; + global $_parent_pages; + + $menu_slug = plugin_basename( $menu_slug ); + $parent_slug = plugin_basename( $parent_slug); + + if ( isset( $_wp_real_parent_file[$parent_slug] ) ) + $parent_slug = $_wp_real_parent_file[$parent_slug]; + + if ( !current_user_can( $capability ) ) { + $_wp_submenu_nopriv[$parent_slug][$menu_slug] = true; + return false; + } + + // If the parent doesn't already have a submenu, add a link to the parent + // as the first item in the submenu. If the submenu file is the same as the + // parent file someone is trying to link back to the parent manually. In + // this case, don't automatically add a link back to avoid duplication. + if (!isset( $submenu[$parent_slug] ) && $menu_slug != $parent_slug ) { + foreach ( (array)$menu as $parent_menu ) { + if ( $parent_menu[2] == $parent_slug && current_user_can( $parent_menu[1] ) ) + $submenu[$parent_slug][] = $parent_menu; + } + } + + $submenu[$parent_slug][] = array ( $menu_title, $capability, $menu_slug, $page_title ); + + $hookname = get_plugin_page_hookname( $menu_slug, $parent_slug); + if (!empty ( $function ) && !empty ( $hookname )) + add_action( $hookname, $function ); + + $_registered_pages[$hookname] = true; + // backwards-compatibility for plugins using add_management page. See wp-admin/admin.php for redirect from edit.php to tools.php + if ( 'tools.php' == $parent_slug ) + $_registered_pages[get_plugin_page_hookname( $menu_slug, 'edit.php')] = true; + + // No parent as top level + $_parent_pages[$menu_slug] = $parent_slug; + + return $hookname; +} + +/** + * Add sub menu page to the tools main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_management_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'tools.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the options main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'options-general.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the themes main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'themes.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the plugins main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_plugins_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'plugins.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the Users/Profile main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_users_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + if ( current_user_can('edit_users') ) + $parent = 'users.php'; + else + $parent = 'profile.php'; + return add_submenu_page( $parent, $page_title, $menu_title, $capability, $menu_slug, $function ); +} +/** + * Add sub menu page to the Dashboard main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_dashboard_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'index.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the posts main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_posts_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'edit.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the media main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_media_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'upload.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the links main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. + */ +function add_links_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'link-manager.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the pages main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. +*/ +function add_pages_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'edit.php?post_type=page', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + +/** + * Add sub menu page to the comments main menu. + * + * This function takes a capability which will be used to determine whether + * or not a page is included in the menu. + * + * The function which is hooked in to handle the output of the page must check + * that the user has the required capability as well. + * + * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected + * @param string $menu_title The text to be used for the menu + * @param string $capability The capability required for this menu to be displayed to the user. + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param callback $function The function to be called to output the content for this page. + * + * @return string|bool The resulting page's hook_suffix, or false if the user does not have the capability required. +*/ +function add_comments_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { + return add_submenu_page( 'edit-comments.php', $page_title, $menu_title, $capability, $menu_slug, $function ); +} + + +/** + * Remove a top level admin menu + * + * @since 3.1.0 + * + * @param string $menu_slug The slug of the menu + * @return array|bool The removed menu on success, False if not found + */ +function remove_menu_page( $menu_slug ) { + global $menu; + + foreach ( $menu as $i => $item ) { + if ( $menu_slug == $item[2] ) { + unset( $menu[$i] ); + return $item; + } + } + + return false; +} + +/** + * Remove an admin submenu + * + * @since 3.1.0 + * + * @param string $menu_slug The slug for the parent menu + * @param string $submenu_slug The slug of the submenu + * @return array|bool The removed submenu on success, False if not found + */ +function remove_submenu_page( $menu_slug, $submenu_slug ) { + global $submenu; + + if ( !isset( $submenu[$menu_slug] ) ) + return false; + + foreach ( $submenu[$menu_slug] as $i => $item ) { + if ( $submenu_slug == $item[2] ) { + unset( $submenu[$menu_slug][$i] ); + return $item; + } + } + + return false; +} + +/** + * Get the url to access a particular menu page based on the slug it was registered with. + * + * If the slug hasn't been registered properly no url will be returned + * + * @since 3.0 + * + * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) + * @param bool $echo Whether or not to echo the url - default is true + * @return string the url + */ +function menu_page_url($menu_slug, $echo = true) { + global $_parent_pages; + + if ( isset( $_parent_pages[$menu_slug] ) ) { + $parent_slug = $_parent_pages[$menu_slug]; + if ( $parent_slug && ! isset( $_parent_pages[$parent_slug] ) ) { + $url = admin_url( add_query_arg( 'page', $menu_slug, $parent_slug ) ); + } else { + $url = admin_url( 'admin.php?page=' . $menu_slug ); + } + } else { + $url = ''; + } + + $url = esc_url($url); + + if ( $echo ) + echo $url; + + return $url; +} + +// +// Pluggable Menu Support -- Private +// + +function get_admin_page_parent( $parent = '' ) { + global $parent_file; + global $menu; + global $submenu; + global $pagenow; + global $typenow; + global $plugin_page; + global $_wp_real_parent_file; + global $_wp_menu_nopriv; + global $_wp_submenu_nopriv; + + if ( !empty ( $parent ) && 'admin.php' != $parent ) { + if ( isset( $_wp_real_parent_file[$parent] ) ) + $parent = $_wp_real_parent_file[$parent]; + return $parent; + } + + /* + if ( !empty ( $parent_file ) ) { + if ( isset( $_wp_real_parent_file[$parent_file] ) ) + $parent_file = $_wp_real_parent_file[$parent_file]; + + return $parent_file; + } + */ + + if ( $pagenow == 'admin.php' && isset( $plugin_page ) ) { + foreach ( (array)$menu as $parent_menu ) { + if ( $parent_menu[2] == $plugin_page ) { + $parent_file = $plugin_page; + if ( isset( $_wp_real_parent_file[$parent_file] ) ) + $parent_file = $_wp_real_parent_file[$parent_file]; + return $parent_file; + } + } + if ( isset( $_wp_menu_nopriv[$plugin_page] ) ) { + $parent_file = $plugin_page; + if ( isset( $_wp_real_parent_file[$parent_file] ) ) + $parent_file = $_wp_real_parent_file[$parent_file]; + return $parent_file; + } + } + + if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) ) { + $parent_file = $pagenow; + if ( isset( $_wp_real_parent_file[$parent_file] ) ) + $parent_file = $_wp_real_parent_file[$parent_file]; + return $parent_file; + } + + foreach (array_keys( (array)$submenu ) as $parent) { + foreach ( $submenu[$parent] as $submenu_array ) { + if ( isset( $_wp_real_parent_file[$parent] ) ) + $parent = $_wp_real_parent_file[$parent]; + if ( !empty($typenow) && ($submenu_array[2] == "$pagenow?post_type=$typenow") ) { + $parent_file = $parent; + return $parent; + } elseif ( $submenu_array[2] == $pagenow && empty($typenow) && ( empty($parent_file) || false === strpos($parent_file, '?') ) ) { + $parent_file = $parent; + return $parent; + } else + if ( isset( $plugin_page ) && ($plugin_page == $submenu_array[2] ) ) { + $parent_file = $parent; + return $parent; + } + } + } + + if ( empty($parent_file) ) + $parent_file = ''; + return ''; +} + +function get_admin_page_title() { + global $title; + global $menu; + global $submenu; + global $pagenow; + global $plugin_page; + global $typenow; + + if ( ! empty ( $title ) ) + return $title; + + $hook = get_plugin_page_hook( $plugin_page, $pagenow ); + + $parent = $parent1 = get_admin_page_parent(); + + if ( empty ( $parent) ) { + foreach ( (array)$menu as $menu_array ) { + if ( isset( $menu_array[3] ) ) { + if ( $menu_array[2] == $pagenow ) { + $title = $menu_array[3]; + return $menu_array[3]; + } else + if ( isset( $plugin_page ) && ($plugin_page == $menu_array[2] ) && ($hook == $menu_array[3] ) ) { + $title = $menu_array[3]; + return $menu_array[3]; + } + } else { + $title = $menu_array[0]; + return $title; + } + } + } else { + foreach ( array_keys( $submenu ) as $parent ) { + foreach ( $submenu[$parent] as $submenu_array ) { + if ( isset( $plugin_page ) && + ( $plugin_page == $submenu_array[2] ) && + ( + ( $parent == $pagenow ) || + ( $parent == $plugin_page ) || + ( $plugin_page == $hook ) || + ( $pagenow == 'admin.php' && $parent1 != $submenu_array[2] ) || + ( !empty($typenow) && $parent == $pagenow . '?post_type=' . $typenow) + ) + ) { + $title = $submenu_array[3]; + return $submenu_array[3]; + } + + if ( $submenu_array[2] != $pagenow || isset( $_GET['page'] ) ) // not the current page + continue; + + if ( isset( $submenu_array[3] ) ) { + $title = $submenu_array[3]; + return $submenu_array[3]; + } else { + $title = $submenu_array[0]; + return $title; + } + } + } + if ( empty ( $title ) ) { + foreach ( $menu as $menu_array ) { + if ( isset( $plugin_page ) && + ( $plugin_page == $menu_array[2] ) && + ( $pagenow == 'admin.php' ) && + ( $parent1 == $menu_array[2] ) ) + { + $title = $menu_array[3]; + return $menu_array[3]; + } + } + } + } + + return $title; +} + +function get_plugin_page_hook( $plugin_page, $parent_page ) { + $hook = get_plugin_page_hookname( $plugin_page, $parent_page ); + if ( has_action($hook) ) + return $hook; + else + return null; +} + +function get_plugin_page_hookname( $plugin_page, $parent_page ) { + global $admin_page_hooks; + + $parent = get_admin_page_parent( $parent_page ); + + $page_type = 'admin'; + if ( empty ( $parent_page ) || 'admin.php' == $parent_page || isset( $admin_page_hooks[$plugin_page] ) ) { + if ( isset( $admin_page_hooks[$plugin_page] ) ) + $page_type = 'toplevel'; + else + if ( isset( $admin_page_hooks[$parent] )) + $page_type = $admin_page_hooks[$parent]; + } else if ( isset( $admin_page_hooks[$parent] ) ) { + $page_type = $admin_page_hooks[$parent]; + } + + $plugin_name = preg_replace( '!\.php!', '', $plugin_page ); + + return $page_type . '_page_' . $plugin_name; +} + +function user_can_access_admin_page() { + global $pagenow; + global $menu; + global $submenu; + global $_wp_menu_nopriv; + global $_wp_submenu_nopriv; + global $plugin_page; + global $_registered_pages; + + $parent = get_admin_page_parent(); + + if ( !isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$pagenow] ) ) + return false; + + if ( isset( $plugin_page ) ) { + if ( isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) ) + return false; + + $hookname = get_plugin_page_hookname($plugin_page, $parent); + + if ( !isset($_registered_pages[$hookname]) ) + return false; + } + + if ( empty( $parent) ) { + if ( isset( $_wp_menu_nopriv[$pagenow] ) ) + return false; + if ( isset( $_wp_submenu_nopriv[$pagenow][$pagenow] ) ) + return false; + if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) ) + return false; + if ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[$plugin_page] ) ) + return false; + foreach (array_keys( $_wp_submenu_nopriv ) as $key ) { + if ( isset( $_wp_submenu_nopriv[$key][$pagenow] ) ) + return false; + if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$key][$plugin_page] ) ) + return false; + } + return true; + } + + if ( isset( $plugin_page ) && ( $plugin_page == $parent ) && isset( $_wp_menu_nopriv[$plugin_page] ) ) + return false; + + if ( isset( $submenu[$parent] ) ) { + foreach ( $submenu[$parent] as $submenu_array ) { + if ( isset( $plugin_page ) && ( $submenu_array[2] == $plugin_page ) ) { + if ( current_user_can( $submenu_array[1] )) + return true; + else + return false; + } else if ( $submenu_array[2] == $pagenow ) { + if ( current_user_can( $submenu_array[1] )) + return true; + else + return false; + } + } + } + + foreach ( $menu as $menu_array ) { + if ( $menu_array[2] == $parent) { + if ( current_user_can( $menu_array[1] )) + return true; + else + return false; + } + } + + return true; +} + +/* Whitelist functions */ + +/** + * Register a setting and its sanitization callback + * + * @since 2.7.0 + * + * @param string $option_group A settings group name. Should correspond to a whitelisted option key name. + * Default whitelisted option key names include "general," "discussion," and "reading," among others. + * @param string $option_name The name of an option to sanitize and save. + * @param unknown_type $sanitize_callback A callback function that sanitizes the option's value. + * @return unknown + */ +function register_setting( $option_group, $option_name, $sanitize_callback = '' ) { + global $new_whitelist_options; + + if ( 'misc' == $option_group ) { + _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) ); + $option_group = 'general'; + } + + $new_whitelist_options[ $option_group ][] = $option_name; + if ( $sanitize_callback != '' ) + add_filter( "sanitize_option_{$option_name}", $sanitize_callback ); +} + +/** + * Unregister a setting + * + * @since 2.7.0 + * + * @param unknown_type $option_group + * @param unknown_type $option_name + * @param unknown_type $sanitize_callback + * @return unknown + */ +function unregister_setting( $option_group, $option_name, $sanitize_callback = '' ) { + global $new_whitelist_options; + + if ( 'misc' == $option_group ) { + _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) ); + $option_group = 'general'; + } + + $pos = array_search( $option_name, (array) $new_whitelist_options ); + if ( $pos !== false ) + unset( $new_whitelist_options[ $option_group ][ $pos ] ); + if ( $sanitize_callback != '' ) + remove_filter( "sanitize_option_{$option_name}", $sanitize_callback ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $options + * @return unknown + */ +function option_update_filter( $options ) { + global $new_whitelist_options; + + if ( is_array( $new_whitelist_options ) ) + $options = add_option_whitelist( $new_whitelist_options, $options ); + + return $options; +} +add_filter( 'whitelist_options', 'option_update_filter' ); + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $new_options + * @param unknown_type $options + * @return unknown + */ +function add_option_whitelist( $new_options, $options = '' ) { + if ( $options == '' ) + global $whitelist_options; + else + $whitelist_options = $options; + + foreach ( $new_options as $page => $keys ) { + foreach ( $keys as $key ) { + if ( !isset($whitelist_options[ $page ]) || !is_array($whitelist_options[ $page ]) ) { + $whitelist_options[ $page ] = array(); + $whitelist_options[ $page ][] = $key; + } else { + $pos = array_search( $key, $whitelist_options[ $page ] ); + if ( $pos === false ) + $whitelist_options[ $page ][] = $key; + } + } + } + + return $whitelist_options; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $del_options + * @param unknown_type $options + * @return unknown + */ +function remove_option_whitelist( $del_options, $options = '' ) { + if ( $options == '' ) + global $whitelist_options; + else + $whitelist_options = $options; + + foreach ( $del_options as $page => $keys ) { + foreach ( $keys as $key ) { + if ( isset($whitelist_options[ $page ]) && is_array($whitelist_options[ $page ]) ) { + $pos = array_search( $key, $whitelist_options[ $page ] ); + if ( $pos !== false ) + unset( $whitelist_options[ $page ][ $pos ] ); + } + } + } + + return $whitelist_options; +} + +/** + * Output nonce, action, and option_page fields for a settings page. + * + * @since 2.7.0 + * + * @param string $option_group A settings group name. This should match the group name used in register_setting(). + */ +function settings_fields($option_group) { + echo ""; + echo ''; + wp_nonce_field("$option_group-options"); +} + +?> diff --git a/src/wp-admin/includes/post.php b/src/wp-admin/includes/post.php new file mode 100644 index 0000000..d65e0e2 --- /dev/null +++ b/src/wp-admin/includes/post.php @@ -0,0 +1,1864 @@ +cap->edit_others_posts ) ) { + if ( 'page' == $post_data['post_type'] ) { + return new WP_Error( 'edit_others_pages', $update ? + __( 'You are not allowed to edit pages as this user.' ) : + __( 'You are not allowed to create pages as this user.' ) + ); + } else { + return new WP_Error( 'edit_others_posts', $update ? + __( 'You are not allowed to edit posts as this user.' ) : + __( 'You are not allowed to post as this user.' ) + ); + } + } + } + + // What to do based on which button they pressed + if ( isset($post_data['saveasdraft']) && '' != $post_data['saveasdraft'] ) + $post_data['post_status'] = 'draft'; + if ( isset($post_data['saveasprivate']) && '' != $post_data['saveasprivate'] ) + $post_data['post_status'] = 'private'; + if ( isset($post_data['publish']) && ( '' != $post_data['publish'] ) && ( !isset($post_data['post_status']) || $post_data['post_status'] != 'private' ) ) + $post_data['post_status'] = 'publish'; + if ( isset($post_data['advanced']) && '' != $post_data['advanced'] ) + $post_data['post_status'] = 'draft'; + if ( isset($post_data['pending']) && '' != $post_data['pending'] ) + $post_data['post_status'] = 'pending'; + + if ( isset( $post_data['ID'] ) ) + $post_id = $post_data['ID']; + else + $post_id = false; + $previous_status = $post_id ? get_post_field( 'post_status', $post_id ) : false; + + // Posts 'submitted for approval' present are submitted to $_POST the same as if they were being published. + // Change status from 'publish' to 'pending' if user lacks permissions to publish or to resave published posts. + if ( isset($post_data['post_status']) && ('publish' == $post_data['post_status'] && !current_user_can( $ptype->cap->publish_posts )) ) + if ( $previous_status != 'publish' || !current_user_can( 'edit_post', $post_id ) ) + $post_data['post_status'] = 'pending'; + + if ( ! isset($post_data['post_status']) ) + $post_data['post_status'] = $previous_status; + + if (!isset( $post_data['comment_status'] )) + $post_data['comment_status'] = 'closed'; + + if (!isset( $post_data['ping_status'] )) + $post_data['ping_status'] = 'closed'; + + foreach ( array('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) { + if ( !empty( $post_data['hidden_' . $timeunit] ) && $post_data['hidden_' . $timeunit] != $post_data[$timeunit] ) { + $post_data['edit_date'] = '1'; + break; + } + } + + if ( !empty( $post_data['edit_date'] ) ) { + $aa = $post_data['aa']; + $mm = $post_data['mm']; + $jj = $post_data['jj']; + $hh = $post_data['hh']; + $mn = $post_data['mn']; + $ss = $post_data['ss']; + $aa = ($aa <= 0 ) ? date('Y') : $aa; + $mm = ($mm <= 0 ) ? date('n') : $mm; + $jj = ($jj > 31 ) ? 31 : $jj; + $jj = ($jj <= 0 ) ? date('j') : $jj; + $hh = ($hh > 23 ) ? $hh -24 : $hh; + $mn = ($mn > 59 ) ? $mn -60 : $mn; + $ss = ($ss > 59 ) ? $ss -60 : $ss; + $post_data['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss ); + $post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] ); + } + + return $post_data; +} + +/** + * Update an existing post with values provided in $_POST. + * + * @since 1.5.0 + * + * @param array $post_data Optional. + * @return int Post ID. + */ +function edit_post( $post_data = null ) { + + if ( empty($post_data) ) + $post_data = &$_POST; + + // Clear out any data in internal vars. + unset( $post_data['filter'] ); + + $post_ID = (int) $post_data['post_ID']; + $post = get_post( $post_ID ); + $post_data['post_type'] = $post->post_type; + $post_data['post_mime_type'] = $post->post_mime_type; + + $ptype = get_post_type_object($post_data['post_type']); + if ( !current_user_can( $ptype->cap->edit_post, $post_ID ) ) { + if ( 'page' == $post_data['post_type'] ) + wp_die( __('You are not allowed to edit this page.' )); + else + wp_die( __('You are not allowed to edit this post.' )); + } + + // Autosave shouldn't save too soon after a real save + if ( 'autosave' == $post_data['action'] ) { + $post =& get_post( $post_ID ); + $now = time(); + $then = strtotime($post->post_date_gmt . ' +0000'); + $delta = AUTOSAVE_INTERVAL / 2; + if ( ($now - $then) < $delta ) + return $post_ID; + } + + $post_data = _wp_translate_postdata( true, $post_data ); + if ( is_wp_error($post_data) ) + wp_die( $post_data->get_error_message() ); + if ( 'autosave' != $post_data['action'] && 'auto-draft' == $post_data['post_status'] ) + $post_data['post_status'] = 'draft'; + + if ( isset($post_data['visibility']) ) { + switch ( $post_data['visibility'] ) { + case 'public' : + $post_data['post_password'] = ''; + break; + case 'password' : + unset( $post_data['sticky'] ); + break; + case 'private' : + $post_data['post_status'] = 'private'; + $post_data['post_password'] = ''; + unset( $post_data['sticky'] ); + break; + } + } + + // Post Formats + if ( current_theme_supports( 'post-formats' ) && isset( $post_data['post_format'] ) ) { + $formats = get_theme_support( 'post-formats' ); + if ( is_array( $formats ) ) { + $formats = $formats[0]; + if ( in_array( $post_data['post_format'], $formats ) ) { + set_post_format( $post_ID, $post_data['post_format'] ); + } elseif ( '0' == $post_data['post_format'] ) { + set_post_format( $post_ID, false ); + } + } + } + + // Meta Stuff + if ( isset($post_data['meta']) && $post_data['meta'] ) { + foreach ( $post_data['meta'] as $key => $value ) { + if ( !$meta = get_post_meta_by_id( $key ) ) + continue; + if ( $meta->post_id != $post_ID ) + continue; + if ( is_protected_meta( $value['key'] ) ) + continue; + update_meta( $key, $value['key'], $value['value'] ); + } + } + + if ( isset($post_data['deletemeta']) && $post_data['deletemeta'] ) { + foreach ( $post_data['deletemeta'] as $key => $value ) { + if ( !$meta = get_post_meta_by_id( $key ) ) + continue; + if ( $meta->post_id != $post_ID ) + continue; + if ( is_protected_meta( $meta->meta_key ) ) + continue; + delete_meta( $key ); + } + } + + add_meta( $post_ID ); + + update_post_meta( $post_ID, '_edit_last', $GLOBALS['current_user']->ID ); + + wp_update_post( $post_data ); + + // Reunite any orphaned attachments with their parent + if ( !$draft_ids = get_user_option( 'autosave_draft_ids' ) ) + $draft_ids = array(); + if ( $draft_temp_id = (int) array_search( $post_ID, $draft_ids ) ) + _relocate_children( $draft_temp_id, $post_ID ); + + // Now that we have an ID we can fix any attachment anchor hrefs + _fix_attachment_links( $post_ID ); + + wp_set_post_lock( $post_ID, $GLOBALS['current_user']->ID ); + + if ( current_user_can( $ptype->cap->edit_others_posts ) ) { + if ( ! empty( $post_data['sticky'] ) ) + stick_post( $post_ID ); + else + unstick_post( $post_ID ); + } + + return $post_ID; +} + +/** + * Process the post data for the bulk editing of posts. + * + * Updates all bulk edited posts/pages, adding (but not removing) tags and + * categories. Skips pages when they would be their own parent or child. + * + * @since 2.7.0 + * + * @param array $post_data Optional, the array of post data to process if not provided will use $_POST superglobal. + * @return array + */ +function bulk_edit_posts( $post_data = null ) { + global $wpdb; + + if ( empty($post_data) ) + $post_data = &$_POST; + + if ( isset($post_data['post_type']) ) + $ptype = get_post_type_object($post_data['post_type']); + else + $ptype = get_post_type_object('post'); + + if ( !current_user_can( $ptype->cap->edit_posts ) ) { + if ( 'page' == $ptype->name ) + wp_die( __('You are not allowed to edit pages.')); + else + wp_die( __('You are not allowed to edit posts.')); + } + + if ( -1 == $post_data['_status'] ) { + $post_data['post_status'] = null; + unset($post_data['post_status']); + } else { + $post_data['post_status'] = $post_data['_status']; + } + unset($post_data['_status']); + + $post_IDs = array_map( 'intval', (array) $post_data['post'] ); + + $reset = array( 'post_author', 'post_status', 'post_password', 'post_parent', 'page_template', 'comment_status', 'ping_status', 'keep_private', 'tax_input', 'post_category', 'sticky' ); + foreach ( $reset as $field ) { + if ( isset($post_data[$field]) && ( '' == $post_data[$field] || -1 == $post_data[$field] ) ) + unset($post_data[$field]); + } + + if ( isset($post_data['post_category']) ) { + if ( is_array($post_data['post_category']) && ! empty($post_data['post_category']) ) + $new_cats = array_map( 'absint', $post_data['post_category'] ); + else + unset($post_data['post_category']); + } + + $tax_input = array(); + if ( isset($post_data['tax_input'])) { + foreach ( $post_data['tax_input'] as $tax_name => $terms ) { + if ( empty($terms) ) + continue; + if ( is_taxonomy_hierarchical( $tax_name ) ) + $tax_input[$tax_name] = array_map( 'absint', $terms ); + else { + $tax_input[$tax_name] = preg_replace( '/\s*,\s*/', ',', rtrim( trim($terms), ' ,' ) ); + $tax_input[$tax_name] = explode(',', $tax_input[$tax_name]); + } + } + } + + if ( isset($post_data['post_parent']) && ($parent = (int) $post_data['post_parent']) ) { + $pages = $wpdb->get_results("SELECT ID, post_parent FROM $wpdb->posts WHERE post_type = 'page'"); + $children = array(); + + for ( $i = 0; $i < 50 && $parent > 0; $i++ ) { + $children[] = $parent; + + foreach ( $pages as $page ) { + if ( $page->ID == $parent ) { + $parent = $page->post_parent; + break; + } + } + } + } + + $updated = $skipped = $locked = array(); + foreach ( $post_IDs as $post_ID ) { + $post_type_object = get_post_type_object( get_post_type( $post_ID ) ); + + if ( !isset( $post_type_object ) || ( isset($children) && in_array($post_ID, $children) ) || !current_user_can( $post_type_object->cap->edit_post, $post_ID ) ) { + $skipped[] = $post_ID; + continue; + } + + if ( wp_check_post_lock( $post_ID ) ) { + $locked[] = $post_ID; + continue; + } + + $post = get_post( $post_ID ); + $tax_names = get_object_taxonomies( $post ); + foreach ( $tax_names as $tax_name ) { + $taxonomy_obj = get_taxonomy($tax_name); + if ( isset( $tax_input[$tax_name]) && current_user_can( $taxonomy_obj->cap->assign_terms ) ) + $new_terms = $tax_input[$tax_name]; + else + $new_terms = array(); + + if ( $taxonomy_obj->hierarchical ) + $current_terms = (array) wp_get_object_terms( $post_ID, $tax_name, array('fields' => 'ids') ); + else + $current_terms = (array) wp_get_object_terms( $post_ID, $tax_name, array('fields' => 'names') ); + + $post_data['tax_input'][$tax_name] = array_merge( $current_terms, $new_terms ); + } + + if ( isset($new_cats) && in_array( 'category', $tax_names ) ) { + $cats = (array) wp_get_post_categories($post_ID); + $post_data['post_category'] = array_unique( array_merge($cats, $new_cats) ); + unset( $post_data['tax_input']['category'] ); + } + + $post_data['post_mime_type'] = $post->post_mime_type; + $post_data['guid'] = $post->guid; + + $post_data['ID'] = $post_ID; + $updated[] = wp_update_post( $post_data ); + + if ( isset( $post_data['sticky'] ) && current_user_can( $ptype->cap->edit_others_posts ) ) { + if ( 'sticky' == $post_data['sticky'] ) + stick_post( $post_ID ); + else + unstick_post( $post_ID ); + } + + } + + return array( 'updated' => $updated, 'skipped' => $skipped, 'locked' => $locked ); +} + +/** + * Default post information to use when populating the "Write Post" form. + * + * @since 2.0.0 + * + * @param string $post_type A post type string, defaults to 'post'. + * @return object stdClass object containing all the default post data as attributes + */ +function get_default_post_to_edit( $post_type = 'post', $create_in_db = false ) { + global $wpdb; + + $post_title = ''; + if ( !empty( $_REQUEST['post_title'] ) ) + $post_title = esc_html( stripslashes( $_REQUEST['post_title'] )); + + $post_content = ''; + if ( !empty( $_REQUEST['content'] ) ) + $post_content = esc_html( stripslashes( $_REQUEST['content'] )); + + $post_excerpt = ''; + if ( !empty( $_REQUEST['excerpt'] ) ) + $post_excerpt = esc_html( stripslashes( $_REQUEST['excerpt'] )); + + if ( $create_in_db ) { + // Cleanup old auto-drafts more than 7 days old + $old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" ); + foreach ( (array) $old_posts as $delete ) + wp_delete_post( $delete, true ); // Force delete + $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) ); + $post = get_post( $post_id ); + if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post->post_type, 'post-formats' ) && get_option( 'default_post_format' ) ) + set_post_format( $post, get_option( 'default_post_format' ) ); + } else { + $post->ID = 0; + $post->post_author = ''; + $post->post_date = ''; + $post->post_date_gmt = ''; + $post->post_password = ''; + $post->post_type = $post_type; + $post->post_status = 'draft'; + $post->to_ping = ''; + $post->pinged = ''; + $post->comment_status = get_option( 'default_comment_status' ); + $post->ping_status = get_option( 'default_ping_status' ); + $post->post_pingback = get_option( 'default_pingback_flag' ); + $post->post_category = get_option( 'default_category' ); + $post->page_template = 'default'; + $post->post_parent = 0; + $post->menu_order = 0; + } + + $post->post_content = apply_filters( 'default_content', $post_content, $post ); + $post->post_title = apply_filters( 'default_title', $post_title, $post ); + $post->post_excerpt = apply_filters( 'default_excerpt', $post_excerpt, $post ); + $post->post_name = ''; + + return $post; +} + +/** + * Get the default page information to use. + * + * @since 2.5.0 + * + * @return object stdClass object containing all the default post data as attributes + */ +function get_default_page_to_edit() { + $page = get_default_post_to_edit(); + $page->post_type = 'page'; + return $page; +} + +/** + * Get an existing post and format it for editing. + * + * @since 2.0.0 + * + * @param unknown_type $id + * @return unknown + */ +function get_post_to_edit( $id ) { + + $post = get_post( $id, OBJECT, 'edit' ); + + if ( $post->post_type == 'page' ) + $post->page_template = get_post_meta( $id, '_wp_page_template', true ); + + return $post; +} + +/** + * Determine if a post exists based on title, content, and date + * + * @since 2.0.0 + * + * @param string $title Post title + * @param string $content Optional post content + * @param string $date Optional post date + * @return int Post ID if post exists, 0 otherwise. + */ +function post_exists($title, $content = '', $date = '') { + global $wpdb; + + $post_title = stripslashes( sanitize_post_field( 'post_title', $title, 0, 'db' ) ); + $post_content = stripslashes( sanitize_post_field( 'post_content', $content, 0, 'db' ) ); + $post_date = stripslashes( sanitize_post_field( 'post_date', $date, 0, 'db' ) ); + + $query = "SELECT ID FROM $wpdb->posts WHERE 1=1"; + $args = array(); + + if ( !empty ( $date ) ) { + $query .= ' AND post_date = %s'; + $args[] = $post_date; + } + + if ( !empty ( $title ) ) { + $query .= ' AND post_title = %s'; + $args[] = $post_title; + } + + if ( !empty ( $content ) ) { + $query .= 'AND post_content = %s'; + $args[] = $post_content; + } + + if ( !empty ( $args ) ) + return $wpdb->get_var( $wpdb->prepare($query, $args) ); + + return 0; +} + +/** + * Creates a new post from the "Write Post" form using $_POST information. + * + * @since 2.1.0 + * + * @return unknown + */ +function wp_write_post() { + global $user_ID; + + + if ( isset($_POST['post_type']) ) + $ptype = get_post_type_object($_POST['post_type']); + else + $ptype = get_post_type_object('post'); + + if ( !current_user_can( $ptype->cap->edit_posts ) ) { + if ( 'page' == $ptype->name ) + return new WP_Error( 'edit_pages', __( 'You are not allowed to create pages on this site.' ) ); + else + return new WP_Error( 'edit_posts', __( 'You are not allowed to create posts or drafts on this site.' ) ); + } + + $_POST['post_mime_type'] = ''; + + // Clear out any data in internal vars. + unset( $_POST['filter'] ); + + // Check for autosave collisions + // Does this need to be updated? ~ Mark + $temp_id = false; + if ( isset($_POST['temp_ID']) ) { + $temp_id = (int) $_POST['temp_ID']; + if ( !$draft_ids = get_user_option( 'autosave_draft_ids' ) ) + $draft_ids = array(); + foreach ( $draft_ids as $temp => $real ) + if ( time() + $temp > 86400 ) // 1 day: $temp is equal to -1 * time( then ) + unset($draft_ids[$temp]); + + if ( isset($draft_ids[$temp_id]) ) { // Edit, don't write + $_POST['post_ID'] = $draft_ids[$temp_id]; + unset($_POST['temp_ID']); + update_user_option( $user_ID, 'autosave_draft_ids', $draft_ids ); + return edit_post(); + } + } + + // Edit don't write if we have a post id. + if ( isset( $_POST['ID'] ) ) { + $_POST['post_ID'] = $_POST['ID']; + unset ( $_POST['ID'] ); + } + if ( isset( $_POST['post_ID'] ) ) { + return edit_post(); + } + + $translated = _wp_translate_postdata( false ); + if ( is_wp_error($translated) ) + return $translated; + + if ( isset($_POST['visibility']) ) { + switch ( $_POST['visibility'] ) { + case 'public' : + $_POST['post_password'] = ''; + break; + case 'password' : + unset( $_POST['sticky'] ); + break; + case 'private' : + $_POST['post_status'] = 'private'; + $_POST['post_password'] = ''; + unset( $_POST['sticky'] ); + break; + } + } + + // Create the post. + $post_ID = wp_insert_post( $_POST ); + if ( is_wp_error( $post_ID ) ) + return $post_ID; + + if ( empty($post_ID) ) + return 0; + + add_meta( $post_ID ); + + add_post_meta( $post_ID, '_edit_last', $GLOBALS['current_user']->ID ); + + // Reunite any orphaned attachments with their parent + // Does this need to be udpated? ~ Mark + if ( !$draft_ids = get_user_option( 'autosave_draft_ids' ) ) + $draft_ids = array(); + if ( $draft_temp_id = (int) array_search( $post_ID, $draft_ids ) ) + _relocate_children( $draft_temp_id, $post_ID ); + if ( $temp_id && $temp_id != $draft_temp_id ) + _relocate_children( $temp_id, $post_ID ); + + // Update autosave collision detection + if ( $temp_id ) { + $draft_ids[$temp_id] = $post_ID; + update_user_option( $user_ID, 'autosave_draft_ids', $draft_ids ); + } + + // Now that we have an ID we can fix any attachment anchor hrefs + _fix_attachment_links( $post_ID ); + + wp_set_post_lock( $post_ID, $GLOBALS['current_user']->ID ); + + return $post_ID; +} + +/** + * Calls wp_write_post() and handles the errors. + * + * @since 2.0.0 + * + * @return unknown + */ +function write_post() { + $result = wp_write_post(); + if ( is_wp_error( $result ) ) + wp_die( $result->get_error_message() ); + else + return $result; +} + +// +// Post Meta +// + +/** + * {@internal Missing Short Description}} + * + * @since 1.2.0 + * + * @param unknown_type $post_ID + * @return unknown + */ +function add_meta( $post_ID ) { + global $wpdb; + $post_ID = (int) $post_ID; + + $metakeyselect = isset($_POST['metakeyselect']) ? stripslashes( trim( $_POST['metakeyselect'] ) ) : ''; + $metakeyinput = isset($_POST['metakeyinput']) ? stripslashes( trim( $_POST['metakeyinput'] ) ) : ''; + $metavalue = isset($_POST['metavalue']) ? maybe_serialize( stripslashes_deep( $_POST['metavalue'] ) ) : ''; + if ( is_string($metavalue) ) + $metavalue = trim( $metavalue ); + + if ( ('0' === $metavalue || !empty ( $metavalue ) ) && ((('#NONE#' != $metakeyselect) && !empty ( $metakeyselect) ) || !empty ( $metakeyinput) ) ) { + // We have a key/value pair. If both the select and the + // input for the key have data, the input takes precedence: + + if ('#NONE#' != $metakeyselect) + $metakey = $metakeyselect; + + if ( $metakeyinput) + $metakey = $metakeyinput; // default + + if ( is_protected_meta( $metakey ) ) + return false; + + wp_cache_delete($post_ID, 'post_meta'); + $wpdb->insert( $wpdb->postmeta, array( 'post_id' => $post_ID, 'meta_key' => $metakey, 'meta_value' => $metavalue ) ); + $meta_id = $wpdb->insert_id; + do_action( 'added_postmeta', $meta_id, $post_ID, $metakey, $metavalue ); + + return $meta_id; + } + return false; +} // add_meta + +/** + * {@internal Missing Short Description}} + * + * @since 1.2.0 + * + * @param unknown_type $mid + * @return unknown + */ +function delete_meta( $mid ) { + global $wpdb; + $mid = (int) $mid; + + $post_id = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = %d", $mid) ); + + do_action( 'delete_postmeta', $mid ); + wp_cache_delete($post_id, 'post_meta'); + $rval = $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->postmeta WHERE meta_id = %d", $mid) ); + do_action( 'deleted_postmeta', $mid ); + + return $rval; +} + +/** + * Get a list of previously defined keys. + * + * @since 1.2.0 + * + * @return unknown + */ +function get_meta_keys() { + global $wpdb; + + $keys = $wpdb->get_col( " + SELECT meta_key + FROM $wpdb->postmeta + GROUP BY meta_key + ORDER BY meta_key" ); + + return $keys; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.1.0 + * + * @param unknown_type $mid + * @return unknown + */ +function get_post_meta_by_id( $mid ) { + global $wpdb; + $mid = (int) $mid; + + $meta = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE meta_id = %d", $mid) ); + if ( empty($meta) ) + return false; + if ( is_serialized_string( $meta->meta_value ) ) + $meta->meta_value = maybe_unserialize( $meta->meta_value ); + return $meta; +} + +/** + * {@internal Missing Short Description}} + * + * Some postmeta stuff. + * + * @since 1.2.0 + * + * @param unknown_type $postid + * @return unknown + */ +function has_meta( $postid ) { + global $wpdb; + + return $wpdb->get_results( $wpdb->prepare("SELECT meta_key, meta_value, meta_id, post_id + FROM $wpdb->postmeta WHERE post_id = %d + ORDER BY meta_key,meta_id", $postid), ARRAY_A ); + +} + +/** + * {@internal Missing Short Description}} + * + * @since 1.2.0 + * + * @param unknown_type $meta_id + * @param unknown_type $meta_key Expect Slashed + * @param unknown_type $meta_value Expect Slashed + * @return unknown + */ +function update_meta( $meta_id, $meta_key, $meta_value ) { + global $wpdb; + + $meta_key = stripslashes($meta_key); + + if ( is_protected_meta( $meta_key ) ) + return false; + + if ( '' === trim( $meta_value ) ) + return false; + + $post_id = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_id = %d", $meta_id) ); + + $meta_value = maybe_serialize( stripslashes_deep( $meta_value ) ); + $meta_id = (int) $meta_id; + + $data = compact( 'meta_key', 'meta_value' ); + $where = compact( 'meta_id' ); + + do_action( 'update_postmeta', $meta_id, $post_id, $meta_key, $meta_value ); + $rval = $wpdb->update( $wpdb->postmeta, $data, $where ); + wp_cache_delete($post_id, 'post_meta'); + do_action( 'updated_postmeta', $meta_id, $post_id, $meta_key, $meta_value ); + + return $rval; +} + +// +// Private +// + +/** + * Replace hrefs of attachment anchors with up-to-date permalinks. + * + * @since 2.3.0 + * @access private + * + * @param unknown_type $post_ID + * @return unknown + */ +function _fix_attachment_links( $post_ID ) { + global $_fix_attachment_link_id; + + $post = & get_post( $post_ID, ARRAY_A ); + + $search = "#]+rel=('|\")[^'\"]*attachment[^>]*>#ie"; + + // See if we have any rel="attachment" links + if ( 0 == preg_match_all( $search, $post['post_content'], $anchor_matches, PREG_PATTERN_ORDER ) ) + return; + + $i = 0; + $search = "#[\s]+rel=(\"|')(.*?)wp-att-(\d+)\\1#i"; + foreach ( $anchor_matches[0] as $anchor ) { + if ( 0 == preg_match( $search, $anchor, $id_matches ) ) + continue; + + $id = (int) $id_matches[3]; + + // While we have the attachment ID, let's adopt any orphans. + $attachment = & get_post( $id, ARRAY_A ); + if ( ! empty( $attachment) && ! is_object( get_post( $attachment['post_parent'] ) ) ) { + $attachment['post_parent'] = $post_ID; + // Escape data pulled from DB. + $attachment = add_magic_quotes( $attachment ); + wp_update_post( $attachment ); + } + + $post_search[$i] = $anchor; + $_fix_attachment_link_id = $id; + $post_replace[$i] = preg_replace_callback( "#href=(\"|')[^'\"]*\\1#", '_fix_attachment_links_replace_cb', $anchor ); + ++$i; + } + + $post['post_content'] = str_replace( $post_search, $post_replace, $post['post_content'] ); + + // Escape data pulled from DB. + $post = add_magic_quotes( $post); + + return wp_update_post( $post); +} + +function _fix_attachment_links_replace_cb($match) { + global $_fix_attachment_link_id; + return stripslashes( 'href='.$match[1] ).get_attachment_link( $_fix_attachment_link_id ).stripslashes( $match[1] ); +} + +/** + * Move child posts to a new parent. + * + * @since 2.3.0 + * @access private + * + * @param unknown_type $old_ID + * @param unknown_type $new_ID + * @return unknown + */ +function _relocate_children( $old_ID, $new_ID ) { + global $wpdb; + $old_ID = (int) $old_ID; + $new_ID = (int) $new_ID; + + $children = $wpdb->get_col( $wpdb->prepare(" + SELECT post_id + FROM $wpdb->postmeta + WHERE meta_key = '_wp_attachment_temp_parent' + AND meta_value = %d", $old_ID) ); + + foreach ( $children as $child_id ) { + $wpdb->update($wpdb->posts, array('post_parent' => $new_ID), array('ID' => $child_id) ); + delete_post_meta($child_id, '_wp_attachment_temp_parent'); + } +} + +/** + * Get all the possible statuses for a post_type + * + * @since 2.5.0 + * + * @param string $type The post_type you want the statuses for + * @return array As array of all the statuses for the supplied post type + */ +function get_available_post_statuses($type = 'post') { + $stati = wp_count_posts($type); + + return array_keys(get_object_vars($stati)); +} + +/** + * Run the wp query to fetch the posts for listing on the edit posts page + * + * @since 2.5.0 + * + * @param array|bool $q Array of query variables to use to build the query or false to use $_GET superglobal. + * @return array + */ +function wp_edit_posts_query( $q = false ) { + if ( false === $q ) + $q = $_GET; + $q['m'] = isset($q['m']) ? (int) $q['m'] : 0; + $q['cat'] = isset($q['cat']) ? (int) $q['cat'] : 0; + $post_stati = get_post_stati(); + + if ( isset($q['post_type']) && in_array( $q['post_type'], get_post_types() ) ) + $post_type = $q['post_type']; + else + $post_type = 'post'; + + $avail_post_stati = get_available_post_statuses($post_type); + + if ( isset($q['post_status']) && in_array( $q['post_status'], $post_stati ) ) { + $post_status = $q['post_status']; + $perm = 'readable'; + } + + if ( isset($q['orderby']) ) + $orderby = $q['orderby']; + elseif ( isset($q['post_status']) && in_array($q['post_status'], array('pending', 'draft')) ) + $orderby = 'modified'; + + if ( isset($q['order']) ) + $order = $q['order']; + elseif ( isset($q['post_status']) && 'pending' == $q['post_status'] ) + $order = 'ASC'; + + $per_page = 'edit_' . $post_type . '_per_page'; + $posts_per_page = (int) get_user_option( $per_page ); + if ( empty( $posts_per_page ) || $posts_per_page < 1 ) + $posts_per_page = 20; + + $posts_per_page = apply_filters( $per_page, $posts_per_page ); + $posts_per_page = apply_filters( 'edit_posts_per_page', $posts_per_page, $post_type ); + + $query = compact('post_type', 'post_status', 'perm', 'order', 'orderby', 'posts_per_page'); + + // Hierarchical types require special args. + if ( is_post_type_hierarchical( $post_type ) && !isset($orderby) ) { + $query['orderby'] = 'menu_order title'; + $query['order'] = 'asc'; + $query['posts_per_page'] = -1; + $query['posts_per_archive_page'] = -1; + } + + if ( ! empty( $q['show_sticky'] ) ) + $query['post__in'] = (array) get_option( 'sticky_posts' ); + + wp( $query ); + + return $avail_post_stati; +} + +/** + * Get default post mime types + * + * @since 2.9.0 + * + * @return array + */ +function get_post_mime_types() { + $post_mime_types = array( // array( adj, noun ) + 'image' => array(__('Images'), __('Manage Images'), _n_noop('Image (%s)', 'Images (%s)')), + 'audio' => array(__('Audio'), __('Manage Audio'), _n_noop('Audio (%s)', 'Audio (%s)')), + 'video' => array(__('Video'), __('Manage Video'), _n_noop('Video (%s)', 'Video (%s)')), + ); + + return apply_filters('post_mime_types', $post_mime_types); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $type + * @return unknown + */ +function get_available_post_mime_types($type = 'attachment') { + global $wpdb; + + $types = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT post_mime_type FROM $wpdb->posts WHERE post_type = %s", $type)); + return $types; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $q + * @return unknown + */ +function wp_edit_attachments_query( $q = false ) { + if ( false === $q ) + $q = $_GET; + + $q['m'] = isset( $q['m'] ) ? (int) $q['m'] : 0; + $q['cat'] = isset( $q['cat'] ) ? (int) $q['cat'] : 0; + $q['post_type'] = 'attachment'; + $post_type = get_post_type_object( 'attachment' ); + $states = 'inherit'; + if ( current_user_can( $post_type->cap->read_private_posts ) ) + $states .= ',private'; + + $q['post_status'] = isset( $q['status'] ) && 'trash' == $q['status'] ? 'trash' : $states; + $media_per_page = (int) get_user_option( 'upload_per_page' ); + if ( empty( $media_per_page ) || $media_per_page < 1 ) + $media_per_page = 20; + $q['posts_per_page'] = apply_filters( 'upload_per_page', $media_per_page ); + + $post_mime_types = get_post_mime_types(); + $avail_post_mime_types = get_available_post_mime_types('attachment'); + + if ( isset($q['post_mime_type']) && !array_intersect( (array) $q['post_mime_type'], array_keys($post_mime_types) ) ) + unset($q['post_mime_type']); + + if ( isset($q['detached']) ) + add_filter('posts_where', '_edit_attachments_query_helper'); + + wp( $q ); + + if ( isset($q['detached']) ) + remove_filter('posts_where', '_edit_attachments_query_helper'); + + return array($post_mime_types, $avail_post_mime_types); +} + +function _edit_attachments_query_helper($where) { + return $where .= ' AND post_parent < 1'; +} + +/** + * Returns the list of classes to be used by a metabox + * + * @uses get_user_option() + * @since 2.5.0 + * + * @param unknown_type $id + * @param unknown_type $page + * @return unknown + */ +function postbox_classes( $id, $page ) { + if ( isset( $_GET['edit'] ) && $_GET['edit'] == $id ) { + $classes = array( '' ); + } elseif ( $closed = get_user_option('closedpostboxes_'.$page ) ) { + if ( !is_array( $closed ) ) { + $classes = array( '' ); + } else { + $classes = in_array( $id, $closed ) ? array( 'closed' ) : array( '' ); + } + } else { + $classes = array( '' ); + } + + $classes = apply_filters( "postbox_classes_{$page}_{$id}", $classes ); + return implode( ' ', $classes ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param int|object $id Post ID or post object. + * @param string $title (optional) Title + * @param string $name (optional) Name + * @return array With two entries of type string + */ +function get_sample_permalink($id, $title = null, $name = null) { + $post = &get_post($id); + if ( !$post->ID ) + return array('', ''); + + $ptype = get_post_type_object($post->post_type); + + $original_status = $post->post_status; + $original_date = $post->post_date; + $original_name = $post->post_name; + + // Hack: get_permalink would return ugly permalink for + // drafts, so we will fake, that our post is published + if ( in_array($post->post_status, array('draft', 'pending')) ) { + $post->post_status = 'publish'; + $post->post_name = sanitize_title($post->post_name ? $post->post_name : $post->post_title, $post->ID); + } + + // If the user wants to set a new name -- override the current one + // Note: if empty name is supplied -- use the title instead, see #6072 + if ( !is_null($name) ) + $post->post_name = sanitize_title($name ? $name : $title, $post->ID); + + $post->post_name = wp_unique_post_slug($post->post_name, $post->ID, $post->post_status, $post->post_type, $post->post_parent); + + $post->filter = 'sample'; + + $permalink = get_permalink($post, true); + + // Replace custom post_type Token with generic pagename token for ease of use. + $permalink = str_replace("%$post->post_type%", '%pagename%', $permalink); + + // Handle page hierarchy + if ( $ptype->hierarchical ) { + $uri = get_page_uri($post); + $uri = untrailingslashit($uri); + $uri = strrev( stristr( strrev( $uri ), '/' ) ); + $uri = untrailingslashit($uri); + $uri = apply_filters( 'editable_slug', $uri ); + if ( !empty($uri) ) + $uri .= '/'; + $permalink = str_replace('%pagename%', "{$uri}%pagename%", $permalink); + } + + $permalink = array($permalink, apply_filters('editable_slug', $post->post_name)); + $post->post_status = $original_status; + $post->post_date = $original_date; + $post->post_name = $original_name; + unset($post->filter); + + return $permalink; +} + +/** + * sample permalink html + * + * intended to be used for the inplace editor of the permalink post slug on in the post (and page?) editor. + * + * @since 2.5.0 + * + * @param int|object $id Post ID or post object. + * @param string $new_title (optional) New title + * @param string $new_slug (optional) New slug + * @return string intended to be used for the inplace editor of the permalink post slug on in the post (and page?) editor. + */ +function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) { + global $wpdb; + $post = &get_post($id); + + list($permalink, $post_name) = get_sample_permalink($post->ID, $new_title, $new_slug); + + if ( 'publish' == $post->post_status ) { + $ptype = get_post_type_object($post->post_type); + $view_post = $ptype->labels->view_item; + $title = __('Click to edit this part of the permalink'); + } else { + $title = __('Temporary permalink. Click to edit this part.'); + } + + if ( false === strpos($permalink, '%postname%') && false === strpos($permalink, '%pagename%') ) { + $return = '' . __('Permalink:') . "\n" . '' . $permalink . "\n"; + if ( '' == get_option( 'permalink_structure' ) && current_user_can( 'manage_options' ) && !( 'page' == get_option('show_on_front') && $id == get_option('page_on_front') ) ) + $return .= '' . __('Change Permalinks') . "\n"; + if ( isset($view_post) ) + $return .= "$view_post\n"; + + $return = apply_filters('get_sample_permalink_html', $return, $id, $new_title, $new_slug); + + return $return; + } + + if ( function_exists('mb_strlen') ) { + if ( mb_strlen($post_name) > 30 ) { + $post_name_abridged = mb_substr($post_name, 0, 14). '…' . mb_substr($post_name, -14); + } else { + $post_name_abridged = $post_name; + } + } else { + if ( strlen($post_name) > 30 ) { + $post_name_abridged = substr($post_name, 0, 14). '…' . substr($post_name, -14); + } else { + $post_name_abridged = $post_name; + } + } + + $post_name_html = '' . $post_name_abridged . ''; + $display_link = str_replace(array('%pagename%','%postname%'), $post_name_html, $permalink); + $view_link = str_replace(array('%pagename%','%postname%'), $post_name, $permalink); + $return = '' . __('Permalink:') . "\n"; + $return .= '' . $display_link . "\n"; + $return .= '‎'; // Fix bi-directional text display defect in RTL languages. + $return .= '' . __('Edit') . "\n"; + $return .= '' . $post_name . "\n"; + if ( isset($view_post) ) + $return .= "$view_post\n"; + + $return = apply_filters('get_sample_permalink_html', $return, $id, $new_title, $new_slug); + + return $return; +} + +/** + * Output HTML for the post thumbnail meta-box. + * + * @since 2.9.0 + * + * @param int $thumbnail_id ID of the attachment used for thumbnail + * @return string html + */ +function _wp_post_thumbnail_html( $thumbnail_id = NULL ) { + global $content_width, $_wp_additional_image_sizes, $post_ID; + $set_thumbnail_link = '

    %s

    '; + $content = sprintf($set_thumbnail_link, esc_html__( 'Set featured image' )); + + if ( $thumbnail_id && get_post( $thumbnail_id ) ) { + $old_content_width = $content_width; + $content_width = 266; + if ( !isset( $_wp_additional_image_sizes['post-thumbnail'] ) ) + $thumbnail_html = wp_get_attachment_image( $thumbnail_id, array( $content_width, $content_width ) ); + else + $thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'post-thumbnail' ); + if ( !empty( $thumbnail_html ) ) { + $ajax_nonce = wp_create_nonce( "set_post_thumbnail-$post_ID" ); + $content = sprintf($set_thumbnail_link, $thumbnail_html); + $content .= '

    ' . esc_html__( 'Remove featured image' ) . '

    '; + } + $content_width = $old_content_width; + } + + return apply_filters( 'admin_post_thumbnail_html', $content ); +} + +/** + * Check to see if the post is currently being edited by another user. + * + * @since 2.5.0 + * + * @param int $post_id ID of the post to check for editing + * @return bool|int False: not locked or locked by current user. Int: user ID of user with lock. + */ +function wp_check_post_lock( $post_id ) { + if ( !$post = get_post( $post_id ) ) + return false; + + if ( !$lock = get_post_meta( $post->ID, '_edit_lock', true ) ) + return false; + + $lock = explode( ':', $lock ); + $time = $lock[0]; + $user = isset( $lock[1] ) ? $lock[1] : get_post_meta( $post->ID, '_edit_last', true ); + + $time_window = apply_filters( 'wp_check_post_lock_window', AUTOSAVE_INTERVAL * 2 ); + + if ( $time && $time > time() - $time_window && $user != get_current_user_id() ) + return $user; + return false; +} + +/** + * Mark the post as currently being edited by the current user + * + * @since 2.5.0 + * + * @param int $post_id ID of the post to being edited + * @return bool Returns false if the post doesn't exist of there is no current user + */ +function wp_set_post_lock( $post_id ) { + if ( !$post = get_post( $post_id ) ) + return false; + if ( 0 == ($user_id = get_current_user_id()) ) + return false; + + $now = time(); + $lock = "$now:$user_id"; + + update_post_meta( $post->ID, '_edit_lock', $lock ); +} + +/** + * Outputs the notice message to say that someone else is editing this post at the moment. + * + * @since 2.8.5 + * @return none + */ +function _admin_notice_post_locked() { + global $post; + + $lock = explode( ':', get_post_meta( $post->ID, '_edit_lock', true ) ); + $user = isset( $lock[1] ) ? $lock[1] : get_post_meta( $post->ID, '_edit_last', true ); + $last_user = get_userdata( $user ); + $last_user_name = $last_user ? $last_user->display_name : __('Somebody'); + + switch ($post->post_type) { + case 'post': + $message = __( 'Warning: %s is currently editing this post' ); + break; + case 'page': + $message = __( 'Warning: %s is currently editing this page' ); + break; + default: + $message = __( 'Warning: %s is currently editing this.' ); + } + + $message = sprintf( $message, esc_html( $last_user_name ) ); + echo "

    $message

    "; +} + +/** + * Creates autosave data for the specified post from $_POST data. + * + * @package WordPress + * @subpackage Post_Revisions + * @since 2.6.0 + * + * @uses _wp_translate_postdata() + * @uses _wp_post_revision_fields() + * + * @return unknown + */ +function wp_create_post_autosave( $post_id ) { + $translated = _wp_translate_postdata( true ); + if ( is_wp_error( $translated ) ) + return $translated; + + // Only store one autosave. If there is already an autosave, overwrite it. + if ( $old_autosave = wp_get_post_autosave( $post_id ) ) { + $new_autosave = _wp_post_revision_fields( $_POST, true ); + $new_autosave['ID'] = $old_autosave->ID; + $new_autosave['post_author'] = get_current_user_id(); + return wp_update_post( $new_autosave ); + } + + // _wp_put_post_revision() expects unescaped. + $_POST = stripslashes_deep($_POST); + + // Otherwise create the new autosave as a special post revision + return _wp_put_post_revision( $_POST, true ); +} + +/** + * Save draft or manually autosave for showing preview. + * + * @package WordPress + * @since 2.7.0 + * + * @uses wp_write_post() + * @uses edit_post() + * @uses get_post() + * @uses current_user_can() + * @uses wp_create_post_autosave() + * + * @return str URL to redirect to show the preview + */ +function post_preview() { + + $post_ID = (int) $_POST['post_ID']; + $status = get_post_status( $post_ID ); + if ( 'auto-draft' == $status ) + wp_die( __('Preview not available. Please save as a draft first.') ); + + if ( isset($_POST['catslist']) ) + $_POST['post_category'] = explode(",", $_POST['catslist']); + + if ( isset($_POST['tags_input']) ) + $_POST['tags_input'] = explode(",", $_POST['tags_input']); + + if ( $_POST['post_type'] == 'page' || empty($_POST['post_category']) ) + unset($_POST['post_category']); + + $_POST['ID'] = $post_ID; + $post = get_post($post_ID); + + if ( 'page' == $post->post_type ) { + if ( !current_user_can('edit_page', $post_ID) ) + wp_die(__('You are not allowed to edit this page.')); + } else { + if ( !current_user_can('edit_post', $post_ID) ) + wp_die(__('You are not allowed to edit this post.')); + } + + if ( 'draft' == $post->post_status ) { + $id = edit_post(); + } else { // Non drafts are not overwritten. The autosave is stored in a special post revision. + $id = wp_create_post_autosave( $post->ID ); + if ( ! is_wp_error($id) ) + $id = $post->ID; + } + + if ( is_wp_error($id) ) + wp_die( $id->get_error_message() ); + + if ( $_POST['post_status'] == 'draft' ) { + $url = add_query_arg( 'preview', 'true', get_permalink($id) ); + } else { + $nonce = wp_create_nonce('post_preview_' . $id); + $url = add_query_arg( array( 'preview' => 'true', 'preview_id' => $id, 'preview_nonce' => $nonce ), get_permalink($id) ); + } + + return $url; +} + +/** + * Adds the TinyMCE editor used on the Write and Edit screens. + * + * @package WordPress + * @since 2.7.0 + * + * TinyMCE is loaded separately from other Javascript by using wp-tinymce.php. It outputs concatenated + * and optionaly pre-compressed version of the core and all default plugins. Additional plugins are loaded + * directly by TinyMCE using non-blocking method. Custom plugins can be refreshed by adding a query string + * to the URL when queueing them with the mce_external_plugins filter. + * + * @param bool $teeny optional Output a trimmed down version used in Press This. + * @param mixed $settings optional An array that can add to or overwrite the default TinyMCE settings. + */ +function wp_tiny_mce( $teeny = false, $settings = false ) { + global $concatenate_scripts, $compress_scripts, $tinymce_version, $editor_styles; + + if ( ! user_can_richedit() ) + return; + + $baseurl = includes_url('js/tinymce'); + + $mce_locale = ( '' == get_locale() ) ? 'en' : strtolower( substr(get_locale(), 0, 2) ); // only ISO 639-1 + + /* + The following filter allows localization scripts to change the languages displayed in the spellchecker's drop-down menu. + By default it uses Google's spellchecker API, but can be configured to use PSpell/ASpell if installed on the server. + The + sign marks the default language. More information: + http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker + */ + $mce_spellchecker_languages = apply_filters('mce_spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv'); + + if ( $teeny ) { + $plugins = apply_filters( 'teeny_mce_plugins', array('inlinepopups', 'fullscreen', 'wordpress', 'wplink', 'wpdialogs') ); + $ext_plugins = ''; + } else { + $plugins = array( 'inlinepopups', 'spellchecker', 'tabfocus', 'paste', 'media', 'wordpress', 'wpfullscreen', 'wpeditimage', 'wpgallery', 'wplink', 'wpdialogs' ); + + /* + The following filter takes an associative array of external plugins for TinyMCE in the form 'plugin_name' => 'url'. + It adds the plugin's name to TinyMCE's plugins init and the call to PluginManager to load the plugin. + The url should be absolute and should include the js file name to be loaded. Example: + array( 'myplugin' => 'http://my-site.com/wp-content/plugins/myfolder/mce_plugin.js' ) + If the plugin uses a button, it should be added with one of the "$mce_buttons" filters. + */ + $mce_external_plugins = apply_filters('mce_external_plugins', array()); + + $ext_plugins = ''; + if ( ! empty($mce_external_plugins) ) { + + /* + The following filter loads external language files for TinyMCE plugins. + It takes an associative array 'plugin_name' => 'path', where path is the + include path to the file. The language file should follow the same format as + /tinymce/langs/wp-langs.php and should define a variable $strings that + holds all translated strings. + When this filter is not used, the function will try to load {mce_locale}.js. + If that is not found, en.js will be tried next. + */ + $mce_external_languages = apply_filters('mce_external_languages', array()); + + $loaded_langs = array(); + $strings = ''; + + if ( ! empty($mce_external_languages) ) { + foreach ( $mce_external_languages as $name => $path ) { + if ( @is_file($path) && @is_readable($path) ) { + include_once($path); + $ext_plugins .= $strings . "\n"; + $loaded_langs[] = $name; + } + } + } + + foreach ( $mce_external_plugins as $name => $url ) { + + if ( is_ssl() ) $url = str_replace('http://', 'https://', $url); + + $plugins[] = '-' . $name; + + $plugurl = dirname($url); + $strings = $str1 = $str2 = ''; + if ( ! in_array($name, $loaded_langs) ) { + $path = str_replace( WP_PLUGIN_URL, '', $plugurl ); + $path = WP_PLUGIN_DIR . $path . '/langs/'; + + if ( function_exists('realpath') ) + $path = trailingslashit( realpath($path) ); + + if ( @is_file($path . $mce_locale . '.js') ) + $strings .= @file_get_contents($path . $mce_locale . '.js') . "\n"; + + if ( @is_file($path . $mce_locale . '_dlg.js') ) + $strings .= @file_get_contents($path . $mce_locale . '_dlg.js') . "\n"; + + if ( 'en' != $mce_locale && empty($strings) ) { + if ( @is_file($path . 'en.js') ) { + $str1 = @file_get_contents($path . 'en.js'); + $strings .= preg_replace( '/([\'"])en\./', '$1' . $mce_locale . '.', $str1, 1 ) . "\n"; + } + + if ( @is_file($path . 'en_dlg.js') ) { + $str2 = @file_get_contents($path . 'en_dlg.js'); + $strings .= preg_replace( '/([\'"])en\./', '$1' . $mce_locale . '.', $str2, 1 ) . "\n"; + } + } + + if ( ! empty($strings) ) + $ext_plugins .= "\n" . $strings . "\n"; + } + + $ext_plugins .= 'tinyMCEPreInit.load_ext("' . $plugurl . '", "' . $mce_locale . '");' . "\n"; + $ext_plugins .= 'tinymce.PluginManager.load("' . $name . '", "' . $url . '");' . "\n"; + } + } + } + + if ( $teeny ) { + $mce_buttons = apply_filters( 'teeny_mce_buttons', array('bold, italic, underline, blockquote, separator, strikethrough, bullist, numlist,justifyleft, justifycenter, justifyright, undo, redo, link, unlink, fullscreen') ); + $mce_buttons = implode($mce_buttons, ','); + $mce_buttons_2 = $mce_buttons_3 = $mce_buttons_4 = ''; + } else { + $mce_buttons = apply_filters('mce_buttons', array('bold', 'italic', 'strikethrough', '|', 'bullist', 'numlist', 'blockquote', '|', 'justifyleft', 'justifycenter', 'justifyright', '|', 'link', 'unlink', 'wp_more', '|', 'spellchecker', 'fullscreen', 'wp_adv' )); + $mce_buttons = implode($mce_buttons, ','); + + $mce_buttons_2 = array( 'formatselect', 'underline', 'justifyfull', 'forecolor', '|', 'pastetext', 'pasteword', 'removeformat', '|', 'charmap', '|', 'outdent', 'indent', '|', 'undo', 'redo', 'wp_help' ); + $mce_buttons_2 = apply_filters('mce_buttons_2', $mce_buttons_2); + $mce_buttons_2 = implode($mce_buttons_2, ','); + + $mce_buttons_3 = apply_filters('mce_buttons_3', array()); + $mce_buttons_3 = implode($mce_buttons_3, ','); + + $mce_buttons_4 = apply_filters('mce_buttons_4', array()); + $mce_buttons_4 = implode($mce_buttons_4, ','); + } + $no_captions = (bool) apply_filters( 'disable_captions', '' ); + + // TinyMCE init settings + $initArray = array ( + 'mode' => 'specific_textareas', + 'editor_selector' => 'theEditor', + 'width' => '100%', + 'theme' => 'advanced', + 'skin' => 'wp_theme', + 'theme_advanced_buttons1' => $mce_buttons, + 'theme_advanced_buttons2' => $mce_buttons_2, + 'theme_advanced_buttons3' => $mce_buttons_3, + 'theme_advanced_buttons4' => $mce_buttons_4, + 'language' => $mce_locale, + 'spellchecker_languages' => $mce_spellchecker_languages, + 'theme_advanced_toolbar_location' => 'top', + 'theme_advanced_toolbar_align' => 'left', + 'theme_advanced_statusbar_location' => 'bottom', + 'theme_advanced_resizing' => true, + 'theme_advanced_resize_horizontal' => false, + 'dialog_type' => 'modal', + 'formats' => "{ + alignleft : [ + {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}}, + {selector : 'img,table', classes : 'alignleft'} + ], + aligncenter : [ + {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}}, + {selector : 'img,table', classes : 'aligncenter'} + ], + alignright : [ + {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}}, + {selector : 'img,table', classes : 'alignright'} + ], + strikethrough : {inline : 'del'} + }", + 'relative_urls' => false, + 'remove_script_host' => false, + 'convert_urls' => false, + 'apply_source_formatting' => false, + 'remove_linebreaks' => true, + 'gecko_spellcheck' => true, + 'keep_styles' => false, + 'entities' => '38,amp,60,lt,62,gt', + 'accessibility_focus' => true, + 'tabfocus_elements' => 'major-publishing-actions', + 'media_strict' => false, + 'paste_remove_styles' => true, + 'paste_remove_spans' => true, + 'paste_strip_class_attributes' => 'all', + 'paste_text_use_dialog' => true, + 'extended_valid_elements' => 'article[*],aside[*],audio[*],canvas[*],command[*],datalist[*],details[*],embed[*],figcaption[*],figure[*],footer[*],header[*],hgroup[*],keygen[*],mark[*],meter[*],nav[*],output[*],progress[*],section[*],source[*],summary,time[*],video[*],wbr', + 'wpeditimage_disable_captions' => $no_captions, + 'wp_fullscreen_content_css' => "$baseurl/plugins/wpfullscreen/css/wp-fullscreen.css", + 'plugins' => implode( ',', $plugins ), + ); + + if ( ! empty( $editor_styles ) && is_array( $editor_styles ) ) { + $mce_css = array(); + $style_uri = get_stylesheet_directory_uri(); + if ( ! is_child_theme() ) { + foreach ( $editor_styles as $file ) + $mce_css[] = "$style_uri/$file"; + } else { + $style_dir = get_stylesheet_directory(); + $template_uri = get_template_directory_uri(); + $template_dir = get_template_directory(); + foreach ( $editor_styles as $file ) { + if ( file_exists( "$template_dir/$file" ) ) + $mce_css[] = "$template_uri/$file"; + if ( file_exists( "$style_dir/$file" ) ) + $mce_css[] = "$style_uri/$file"; + } + } + $mce_css = implode( ',', $mce_css ); + } else { + $mce_css = ''; + } + + $mce_css = trim( apply_filters( 'mce_css', $mce_css ), ' ,' ); + + if ( ! empty($mce_css) ) + $initArray['content_css'] = $mce_css; + + if ( is_array($settings) ) + $initArray = array_merge($initArray, $settings); + + // For people who really REALLY know what they're doing with TinyMCE + // You can modify initArray to add, remove, change elements of the config before tinyMCE.init + // Setting "valid_elements", "invalid_elements" and "extended_valid_elements" can be done through "tiny_mce_before_init". + // Best is to use the default cleanup by not specifying valid_elements, as TinyMCE contains full set of XHTML 1.0. + if ( $teeny ) { + $initArray = apply_filters('teeny_mce_before_init', $initArray); + } else { + $initArray = apply_filters('tiny_mce_before_init', $initArray); + } + + if ( empty($initArray['theme_advanced_buttons3']) && !empty($initArray['theme_advanced_buttons4']) ) { + $initArray['theme_advanced_buttons3'] = $initArray['theme_advanced_buttons4']; + $initArray['theme_advanced_buttons4'] = ''; + } + + if ( ! isset($concatenate_scripts) ) + script_concat_settings(); + + $language = $initArray['language']; + + $compressed = $compress_scripts && $concatenate_scripts && isset($_SERVER['HTTP_ACCEPT_ENCODING']) + && false !== stripos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'); + + /** + * Deprecated + * + * The tiny_mce_version filter is not needed since external plugins are loaded directly by TinyMCE. + * These plugins can be refreshed by appending query string to the URL passed to mce_external_plugins filter. + * If the plugin has a popup dialog, a query string can be added to the button action that opens it (in the plugin's code). + */ + $version = apply_filters('tiny_mce_version', ''); + $version = 'ver=' . $tinymce_version . $version; + + if ( 'en' != $language ) + include_once(ABSPATH . WPINC . '/js/tinymce/langs/wp-langs.php'); + + $mce_options = ''; + foreach ( $initArray as $k => $v ) { + if ( is_bool($v) ) { + $val = $v ? 'true' : 'false'; + $mce_options .= $k . ':' . $val . ', '; + continue; + } elseif ( !empty($v) && is_string($v) && ( ('{' == $v{0} && '}' == $v{strlen($v) - 1}) || ('[' == $v{0} && ']' == $v{strlen($v) - 1}) || preg_match('/^\(?function ?\(/', $v) ) ) { + $mce_options .= $k . ':' . $v . ', '; + continue; + } + + $mce_options .= $k . ':"' . $v . '", '; + } + + $mce_options = rtrim( trim($mce_options), '\n\r,' ); + + do_action('before_wp_tiny_mce', $initArray); ?> + + + +\n"; + else + echo "\n"; + + if ( 'en' != $language && isset($lang) ) + echo "\n"; + else + echo "\n"; +?> + + +
    'wpdialogs,wplink,wpfullscreen' ) ); + + if ( !user_can_richedit() ) { + wp_enqueue_style( 'tinymce-buttons', includes_url('js/tinymce/themes/advanced/skins/wp_theme/ui.css'), array(), $tinymce_version ); + wp_print_styles('tinymce-buttons'); + } +} + +function wp_print_editor_js() { + wp_print_scripts('editor'); +} + +function wp_fullscreen_html() { + global $content_width, $post; + + $width = isset($content_width) && 800 > $content_width ? $content_width : 800; + $width = $width + 10; // compensate for the padding + $dfw_width = get_user_setting( 'dfw_width', $width ); + $save = isset($post->post_status) && $post->post_status == 'publish' ? __('Update') : __('Save'); +?> +
    +
    +
    +
    +
    + +
    + + +
    + +
    + array( 'title' => __('Bold (Ctrl + B)'), 'onclick' => 'fullscreen.b();', 'both' => false ), + 'italic' => array( 'title' => __('Italic (Ctrl + I)'), 'onclick' => 'fullscreen.i();', 'both' => false ), + '0' => 'separator', + 'bullist' => array( 'title' => __('Unordered list (Alt + Shift + U)'), 'onclick' => 'fullscreen.ul();', 'both' => false ), + 'numlist' => array( 'title' => __('Ordered list (Alt + Shift + O)'), 'onclick' => 'fullscreen.ol();', 'both' => false ), + '1' => 'separator', + 'blockquote' => array( 'title' => __('Blockquote (Alt+Shift+Q)'), 'onclick' => 'fullscreen.blockquote();', 'both' => false ), + 'image' => array( 'title' => __('Insert/edit image (Alt + Shift + M)'), 'onclick' => "jQuery('#add_{$media_link_type}').click();", 'both' => true ), + '2' => 'separator', + 'link' => array( 'title' => __('Insert/edit link (Alt + Shift + A)'), 'onclick' => 'fullscreen.link();', 'both' => true ), + 'unlink' => array( 'title' => __('Unlink (Alt + Shift + S)'), 'onclick' => 'fullscreen.unlink();', 'both' => false ), + '3' => 'separator', + 'help' => array( 'title' => __('Help (Alt + Shift + H)'), 'onclick' => 'fullscreen.help();', 'both' => false ) + ); + + $buttons = apply_filters( 'wp_fullscreen_buttons', $buttons ); + + foreach ( $buttons as $button => $args ) { + if ( 'separator' == $args ) { ?> +
    + + + class="wp-fullscreen-both"> + + + +
    + + +
    + +
    + post_status == 'publish' ) _e('Updated.'); else _e('Saved.'); ?> + + +
    + +
    +
    +
    + +
    + + + +
    + +
    + +
    +
    0' ); ?>
    +
    +
    +
    + + +
    +
    +charset) ) + $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; +if ( ! empty($wpdb->collate) ) + $charset_collate .= " COLLATE $wpdb->collate"; + +/** Create WordPress database tables SQL */ +$wp_queries = "CREATE TABLE $wpdb->terms ( + term_id bigint(20) unsigned NOT NULL auto_increment, + name varchar(200) NOT NULL default '', + slug varchar(200) NOT NULL default '', + term_group bigint(10) NOT NULL default 0, + PRIMARY KEY (term_id), + UNIQUE KEY slug (slug), + KEY name (name) +) $charset_collate; +CREATE TABLE $wpdb->term_taxonomy ( + term_taxonomy_id bigint(20) unsigned NOT NULL auto_increment, + term_id bigint(20) unsigned NOT NULL default 0, + taxonomy varchar(32) NOT NULL default '', + description longtext NOT NULL, + parent bigint(20) unsigned NOT NULL default 0, + count bigint(20) NOT NULL default 0, + PRIMARY KEY (term_taxonomy_id), + UNIQUE KEY term_id_taxonomy (term_id,taxonomy), + KEY taxonomy (taxonomy) +) $charset_collate; +CREATE TABLE $wpdb->term_relationships ( + object_id bigint(20) unsigned NOT NULL default 0, + term_taxonomy_id bigint(20) unsigned NOT NULL default 0, + term_order int(11) NOT NULL default 0, + PRIMARY KEY (object_id,term_taxonomy_id), + KEY term_taxonomy_id (term_taxonomy_id) +) $charset_collate; +CREATE TABLE $wpdb->commentmeta ( + meta_id bigint(20) unsigned NOT NULL auto_increment, + comment_id bigint(20) unsigned NOT NULL default '0', + meta_key varchar(255) default NULL, + meta_value longtext, + PRIMARY KEY (meta_id), + KEY comment_id (comment_id), + KEY meta_key (meta_key) +) $charset_collate; +CREATE TABLE $wpdb->comments ( + comment_ID bigint(20) unsigned NOT NULL auto_increment, + comment_post_ID bigint(20) unsigned NOT NULL default '0', + comment_author tinytext NOT NULL, + comment_author_email varchar(100) NOT NULL default '', + comment_author_url varchar(200) NOT NULL default '', + comment_author_IP varchar(100) NOT NULL default '', + comment_date datetime NOT NULL default '0000-00-00 00:00:00', + comment_date_gmt datetime NOT NULL default '0000-00-00 00:00:00', + comment_content text NOT NULL, + comment_karma int(11) NOT NULL default '0', + comment_approved varchar(20) NOT NULL default '1', + comment_agent varchar(255) NOT NULL default '', + comment_type varchar(20) NOT NULL default '', + comment_parent bigint(20) unsigned NOT NULL default '0', + user_id bigint(20) unsigned NOT NULL default '0', + PRIMARY KEY (comment_ID), + KEY comment_approved (comment_approved), + KEY comment_post_ID (comment_post_ID), + KEY comment_approved_date_gmt (comment_approved,comment_date_gmt), + KEY comment_date_gmt (comment_date_gmt), + KEY comment_parent (comment_parent) +) $charset_collate; +CREATE TABLE $wpdb->links ( + link_id bigint(20) unsigned NOT NULL auto_increment, + link_url varchar(255) NOT NULL default '', + link_name varchar(255) NOT NULL default '', + link_image varchar(255) NOT NULL default '', + link_target varchar(25) NOT NULL default '', + link_description varchar(255) NOT NULL default '', + link_visible varchar(20) NOT NULL default 'Y', + link_owner bigint(20) unsigned NOT NULL default '1', + link_rating int(11) NOT NULL default '0', + link_updated datetime NOT NULL default '0000-00-00 00:00:00', + link_rel varchar(255) NOT NULL default '', + link_notes mediumtext NOT NULL, + link_rss varchar(255) NOT NULL default '', + PRIMARY KEY (link_id), + KEY link_visible (link_visible) +) $charset_collate; +CREATE TABLE $wpdb->options ( + option_id bigint(20) unsigned NOT NULL auto_increment, + blog_id int(11) NOT NULL default '0', + option_name varchar(64) NOT NULL default '', + option_value longtext NOT NULL, + autoload varchar(20) NOT NULL default 'yes', + PRIMARY KEY (option_id), + UNIQUE KEY option_name (option_name) +) $charset_collate; +CREATE TABLE $wpdb->postmeta ( + meta_id bigint(20) unsigned NOT NULL auto_increment, + post_id bigint(20) unsigned NOT NULL default '0', + meta_key varchar(255) default NULL, + meta_value longtext, + PRIMARY KEY (meta_id), + KEY post_id (post_id), + KEY meta_key (meta_key) +) $charset_collate; +CREATE TABLE $wpdb->posts ( + ID bigint(20) unsigned NOT NULL auto_increment, + post_author bigint(20) unsigned NOT NULL default '0', + post_date datetime NOT NULL default '0000-00-00 00:00:00', + post_date_gmt datetime NOT NULL default '0000-00-00 00:00:00', + post_content longtext NOT NULL, + post_title text NOT NULL, + post_excerpt text NOT NULL, + post_status varchar(20) NOT NULL default 'publish', + comment_status varchar(20) NOT NULL default 'open', + ping_status varchar(20) NOT NULL default 'open', + post_password varchar(20) NOT NULL default '', + post_name varchar(200) NOT NULL default '', + to_ping text NOT NULL, + pinged text NOT NULL, + post_modified datetime NOT NULL default '0000-00-00 00:00:00', + post_modified_gmt datetime NOT NULL default '0000-00-00 00:00:00', + post_content_filtered text NOT NULL, + post_parent bigint(20) unsigned NOT NULL default '0', + guid varchar(255) NOT NULL default '', + menu_order int(11) NOT NULL default '0', + post_type varchar(20) NOT NULL default 'post', + post_mime_type varchar(100) NOT NULL default '', + comment_count bigint(20) NOT NULL default '0', + PRIMARY KEY (ID), + KEY post_name (post_name), + KEY type_status_date (post_type,post_status,post_date,ID), + KEY post_parent (post_parent), + KEY post_author (post_author) +) $charset_collate; +CREATE TABLE $wpdb->users ( + ID bigint(20) unsigned NOT NULL auto_increment, + user_login varchar(60) NOT NULL default '', + user_pass varchar(64) NOT NULL default '', + user_nicename varchar(50) NOT NULL default '', + user_email varchar(100) NOT NULL default '', + user_url varchar(100) NOT NULL default '', + user_registered datetime NOT NULL default '0000-00-00 00:00:00', + user_activation_key varchar(60) NOT NULL default '', + user_status int(11) NOT NULL default '0', + display_name varchar(250) NOT NULL default '', + PRIMARY KEY (ID), + KEY user_login_key (user_login), + KEY user_nicename (user_nicename) +) $charset_collate; +CREATE TABLE $wpdb->usermeta ( + umeta_id bigint(20) unsigned NOT NULL auto_increment, + user_id bigint(20) unsigned NOT NULL default '0', + meta_key varchar(255) default NULL, + meta_value longtext, + PRIMARY KEY (umeta_id), + KEY user_id (user_id), + KEY meta_key (meta_key) +) $charset_collate;"; + +/** + * Create WordPress options and set the default values. + * + * @since 1.5.0 + * @uses $wpdb + * @uses $wp_db_version + */ +function populate_options() { + global $wpdb, $wp_db_version, $current_site; + + $guessurl = wp_guess_url(); + + do_action('populate_options'); + + if ( ini_get('safe_mode') ) { + // Safe mode can break mkdir() so use a flat structure by default. + $uploads_use_yearmonth_folders = 0; + } else { + $uploads_use_yearmonth_folders = 1; + } + + $options = array( + 'siteurl' => $guessurl, + 'blogname' => __('My Site'), + /* translators: blog tagline */ + 'blogdescription' => __('Just another WordPress site'), + 'users_can_register' => 0, + 'admin_email' => 'you@example.com', + 'start_of_week' => 1, + 'use_balanceTags' => 0, + 'use_smilies' => 1, + 'require_name_email' => 1, + 'comments_notify' => 1, + 'posts_per_rss' => 10, + 'rss_use_excerpt' => 0, + 'mailserver_url' => 'mail.example.com', + 'mailserver_login' => 'login@example.com', + 'mailserver_pass' => 'password', + 'mailserver_port' => 110, + 'default_category' => 1, + 'default_comment_status' => 'open', + 'default_ping_status' => 'open', + 'default_pingback_flag' => 1, + 'default_post_edit_rows' => 20, + 'posts_per_page' => 10, + /* translators: default date format, see http://php.net/date */ + 'date_format' => __('F j, Y'), + /* translators: default time format, see http://php.net/date */ + 'time_format' => __('g:i a'), + /* translators: links last updated date format, see http://php.net/date */ + 'links_updated_date_format' => __('F j, Y g:i a'), + 'links_recently_updated_prepend' => '', + 'links_recently_updated_append' => '', + 'links_recently_updated_time' => 120, + 'comment_moderation' => 0, + 'moderation_notify' => 1, + 'permalink_structure' => '', + 'gzipcompression' => 0, + 'hack_file' => 0, + 'blog_charset' => 'UTF-8', + 'moderation_keys' => '', + 'active_plugins' => array(), + 'home' => $guessurl, + 'category_base' => '', + 'ping_sites' => 'http://rpc.pingomatic.com/', + 'advanced_edit' => 0, + 'comment_max_links' => 2, + 'gmt_offset' => date('Z') / 3600, + + // 1.5 + 'default_email_category' => 1, + 'recently_edited' => '', + 'template' => WP_DEFAULT_THEME, + 'stylesheet' => WP_DEFAULT_THEME, + 'comment_whitelist' => 1, + 'blacklist_keys' => '', + 'comment_registration' => 0, + 'rss_language' => 'en', + 'html_type' => 'text/html', + + // 1.5.1 + 'use_trackback' => 0, + + // 2.0 + 'default_role' => 'subscriber', + 'db_version' => $wp_db_version, + + // 2.0.1 + 'uploads_use_yearmonth_folders' => $uploads_use_yearmonth_folders, + 'upload_path' => '', + + // 2.1 + 'blog_public' => '1', + 'default_link_category' => 2, + 'show_on_front' => 'posts', + + // 2.2 + 'tag_base' => '', + + // 2.5 + 'show_avatars' => '1', + 'avatar_rating' => 'G', + 'upload_url_path' => '', + 'thumbnail_size_w' => 150, + 'thumbnail_size_h' => 150, + 'thumbnail_crop' => 1, + 'medium_size_w' => 300, + 'medium_size_h' => 300, + + // 2.6 + 'avatar_default' => 'mystery', + 'enable_app' => 0, + 'enable_xmlrpc' => 0, + + // 2.7 + 'large_size_w' => 1024, + 'large_size_h' => 1024, + 'image_default_link_type' => 'file', + 'image_default_size' => '', + 'image_default_align' => '', + 'close_comments_for_old_posts' => 0, + 'close_comments_days_old' => 14, + 'thread_comments' => 1, + 'thread_comments_depth' => 5, + 'page_comments' => 0, + 'comments_per_page' => 50, + 'default_comments_page' => 'newest', + 'comment_order' => 'asc', + 'sticky_posts' => array(), + 'widget_categories' => array(), + 'widget_text' => array(), + 'widget_rss' => array(), + + // 2.8 + 'timezone_string' => '', + + // 2.9 + 'embed_autourls' => 1, + 'embed_size_w' => '', + 'embed_size_h' => 600, + + // 3.0 + 'page_for_posts' => 0, + 'page_on_front' => 0, + + // 3.1 + 'default_post_format' => 0, + ); + + // 3.0 multisite + if ( is_multisite() ) { + /* translators: blog tagline */ + $options[ 'blogdescription' ] = sprintf(__('Just another %s site'), $current_site->site_name ); + $options[ 'permalink_structure' ] = '/%year%/%monthnum%/%day%/%postname%/'; + } + + // Set autoload to no for these options + $fat_options = array( 'moderation_keys', 'recently_edited', 'blacklist_keys' ); + + $existing_options = $wpdb->get_col("SELECT option_name FROM $wpdb->options"); + + $insert = ''; + foreach ( $options as $option => $value ) { + if ( in_array($option, $existing_options) ) + continue; + if ( in_array($option, $fat_options) ) + $autoload = 'no'; + else + $autoload = 'yes'; + + $option = $wpdb->escape($option); + if ( is_array($value) ) + $value = serialize($value); + $value = $wpdb->escape($value); + if ( !empty($insert) ) + $insert .= ', '; + $insert .= "('$option', '$value', '$autoload')"; + } + + if ( !empty($insert) ) + $wpdb->query("INSERT INTO $wpdb->options (option_name, option_value, autoload) VALUES " . $insert); + + // in case it is set, but blank, update "home" + if ( !__get_option('home') ) update_option('home', $guessurl); + + // Delete unused options + $unusedoptions = array ('blodotgsping_url', 'bodyterminator', 'emailtestonly', 'phoneemail_separator', 'smilies_directory', 'subjectprefix', 'use_bbcode', 'use_blodotgsping', 'use_phoneemail', 'use_quicktags', 'use_weblogsping', 'weblogs_cache_file', 'use_preview', 'use_htmltrans', 'smilies_directory', 'fileupload_allowedusers', 'use_phoneemail', 'default_post_status', 'default_post_category', 'archive_mode', 'time_difference', 'links_minadminlevel', 'links_use_adminlevels', 'links_rating_type', 'links_rating_char', 'links_rating_ignore_zero', 'links_rating_single_image', 'links_rating_image0', 'links_rating_image1', 'links_rating_image2', 'links_rating_image3', 'links_rating_image4', 'links_rating_image5', 'links_rating_image6', 'links_rating_image7', 'links_rating_image8', 'links_rating_image9', 'weblogs_cacheminutes', 'comment_allowed_tags', 'search_engine_friendly_urls', 'default_geourl_lat', 'default_geourl_lon', 'use_default_geourl', 'weblogs_xml_url', 'new_users_can_blog', '_wpnonce', '_wp_http_referer', 'Update', 'action', 'rich_editing', 'autosave_interval', 'deactivated_plugins', 'can_compress_scripts', 'page_uris', 'update_core', 'update_plugins', 'update_themes', 'doing_cron', 'random_seed', 'rss_excerpt_length', 'secret', 'use_linksupdate', 'default_comment_status_page', 'wporg_popular_tags', 'what_to_show'); + foreach ( $unusedoptions as $option ) + delete_option($option); + + // delete obsolete magpie stuff + $wpdb->query("DELETE FROM $wpdb->options WHERE option_name REGEXP '^rss_[0-9a-f]{32}(_ts)?$'"); +} + +/** + * Execute WordPress role creation for the various WordPress versions. + * + * @since 2.0.0 + */ +function populate_roles() { + populate_roles_160(); + populate_roles_210(); + populate_roles_230(); + populate_roles_250(); + populate_roles_260(); + populate_roles_270(); + populate_roles_280(); + populate_roles_300(); +} + +/** + * Create the roles for WordPress 2.0 + * + * @since 2.0.0 + */ +function populate_roles_160() { + // Add roles + + // Dummy gettext calls to get strings in the catalog. + /* translators: user role */ + _x('Administrator', 'User role'); + /* translators: user role */ + _x('Editor', 'User role'); + /* translators: user role */ + _x('Author', 'User role'); + /* translators: user role */ + _x('Contributor', 'User role'); + /* translators: user role */ + _x('Subscriber', 'User role'); + + add_role('administrator', 'Administrator'); + add_role('editor', 'Editor'); + add_role('author', 'Author'); + add_role('contributor', 'Contributor'); + add_role('subscriber', 'Subscriber'); + + // Add caps for Administrator role + $role =& get_role('administrator'); + $role->add_cap('switch_themes'); + $role->add_cap('edit_themes'); + $role->add_cap('activate_plugins'); + $role->add_cap('edit_plugins'); + $role->add_cap('edit_users'); + $role->add_cap('edit_files'); + $role->add_cap('manage_options'); + $role->add_cap('moderate_comments'); + $role->add_cap('manage_categories'); + $role->add_cap('manage_links'); + $role->add_cap('upload_files'); + $role->add_cap('import'); + $role->add_cap('unfiltered_html'); + $role->add_cap('edit_posts'); + $role->add_cap('edit_others_posts'); + $role->add_cap('edit_published_posts'); + $role->add_cap('publish_posts'); + $role->add_cap('edit_pages'); + $role->add_cap('read'); + $role->add_cap('level_10'); + $role->add_cap('level_9'); + $role->add_cap('level_8'); + $role->add_cap('level_7'); + $role->add_cap('level_6'); + $role->add_cap('level_5'); + $role->add_cap('level_4'); + $role->add_cap('level_3'); + $role->add_cap('level_2'); + $role->add_cap('level_1'); + $role->add_cap('level_0'); + + // Add caps for Editor role + $role =& get_role('editor'); + $role->add_cap('moderate_comments'); + $role->add_cap('manage_categories'); + $role->add_cap('manage_links'); + $role->add_cap('upload_files'); + $role->add_cap('unfiltered_html'); + $role->add_cap('edit_posts'); + $role->add_cap('edit_others_posts'); + $role->add_cap('edit_published_posts'); + $role->add_cap('publish_posts'); + $role->add_cap('edit_pages'); + $role->add_cap('read'); + $role->add_cap('level_7'); + $role->add_cap('level_6'); + $role->add_cap('level_5'); + $role->add_cap('level_4'); + $role->add_cap('level_3'); + $role->add_cap('level_2'); + $role->add_cap('level_1'); + $role->add_cap('level_0'); + + // Add caps for Author role + $role =& get_role('author'); + $role->add_cap('upload_files'); + $role->add_cap('edit_posts'); + $role->add_cap('edit_published_posts'); + $role->add_cap('publish_posts'); + $role->add_cap('read'); + $role->add_cap('level_2'); + $role->add_cap('level_1'); + $role->add_cap('level_0'); + + // Add caps for Contributor role + $role =& get_role('contributor'); + $role->add_cap('edit_posts'); + $role->add_cap('read'); + $role->add_cap('level_1'); + $role->add_cap('level_0'); + + // Add caps for Subscriber role + $role =& get_role('subscriber'); + $role->add_cap('read'); + $role->add_cap('level_0'); +} + +/** + * Create and modify WordPress roles for WordPress 2.1. + * + * @since 2.1.0 + */ +function populate_roles_210() { + $roles = array('administrator', 'editor'); + foreach ($roles as $role) { + $role =& get_role($role); + if ( empty($role) ) + continue; + + $role->add_cap('edit_others_pages'); + $role->add_cap('edit_published_pages'); + $role->add_cap('publish_pages'); + $role->add_cap('delete_pages'); + $role->add_cap('delete_others_pages'); + $role->add_cap('delete_published_pages'); + $role->add_cap('delete_posts'); + $role->add_cap('delete_others_posts'); + $role->add_cap('delete_published_posts'); + $role->add_cap('delete_private_posts'); + $role->add_cap('edit_private_posts'); + $role->add_cap('read_private_posts'); + $role->add_cap('delete_private_pages'); + $role->add_cap('edit_private_pages'); + $role->add_cap('read_private_pages'); + } + + $role =& get_role('administrator'); + if ( ! empty($role) ) { + $role->add_cap('delete_users'); + $role->add_cap('create_users'); + } + + $role =& get_role('author'); + if ( ! empty($role) ) { + $role->add_cap('delete_posts'); + $role->add_cap('delete_published_posts'); + } + + $role =& get_role('contributor'); + if ( ! empty($role) ) { + $role->add_cap('delete_posts'); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.3. + * + * @since 2.3.0 + */ +function populate_roles_230() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'unfiltered_upload' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.5. + * + * @since 2.5.0 + */ +function populate_roles_250() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'edit_dashboard' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.6. + * + * @since 2.6.0 + */ +function populate_roles_260() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'update_plugins' ); + $role->add_cap( 'delete_plugins' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.7. + * + * @since 2.7.0 + */ +function populate_roles_270() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'install_plugins' ); + $role->add_cap( 'update_themes' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 2.8. + * + * @since 2.8.0 + */ +function populate_roles_280() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'install_themes' ); + } +} + +/** + * Create and modify WordPress roles for WordPress 3.0. + * + * @since 3.0.0 + */ +function populate_roles_300() { + $role =& get_role( 'administrator' ); + + if ( !empty( $role ) ) { + $role->add_cap( 'update_core' ); + $role->add_cap( 'list_users' ); + $role->add_cap( 'remove_users' ); + $role->add_cap( 'add_users' ); + $role->add_cap( 'promote_users' ); + $role->add_cap( 'edit_theme_options' ); + $role->add_cap( 'delete_themes' ); + $role->add_cap( 'export' ); + } +} + +/** + * populate network settings + * + * @since 3.0.0 + * + * @param int $network_id id of network to populate + * @return bool|WP_Error True on success, or WP_Error on warning (with the install otherwise successful, + * so the error code must be checked) or failure. + */ +function populate_network( $network_id = 1, $domain = '', $email = '', $site_name = '', $path = '/', $subdomain_install = false ) { + global $wpdb, $current_site, $wp_db_version, $wp_rewrite; + + $errors = new WP_Error(); + if ( '' == $domain ) + $errors->add( 'empty_domain', __( 'You must provide a domain name.' ) ); + if ( '' == $site_name ) + $errors->add( 'empty_sitename', __( 'You must provide a name for your network of sites.' ) ); + + // check for network collision + if ( $network_id == $wpdb->get_var( $wpdb->prepare( "SELECT id FROM $wpdb->site WHERE id = %d", $network_id ) ) ) + $errors->add( 'siteid_exists', __( 'The network already exists.' ) ); + + $site_user = get_user_by_email( $email ); + if ( ! is_email( $email ) ) + $errors->add( 'invalid_email', __( 'You must provide a valid e-mail address.' ) ); + + if ( $errors->get_error_code() ) + return $errors; + + // set up site tables + $template = get_option( 'template' ); + $stylesheet = get_option( 'stylesheet' ); + $allowed_themes = array( $stylesheet => true ); + if ( $template != $stylesheet ) + $allowed_themes[ $template ] = true; + if ( WP_DEFAULT_THEME != $stylesheet && WP_DEFAULT_THEME != $template ) + $allowed_themes[ WP_DEFAULT_THEME ] = true; + + if ( 1 == $network_id ) { + $wpdb->insert( $wpdb->site, array( 'domain' => $domain, 'path' => $path ) ); + $network_id = $wpdb->insert_id; + } else { + $wpdb->insert( $wpdb->site, array( 'domain' => $domain, 'path' => $path, 'id' => $network_id ) ); + } + + if ( !is_multisite() ) { + $site_admins = array( $site_user->user_login ); + $users = get_users( array( 'fields' => array( 'ID', 'user_login' ) ) ); + if ( $users ) { + foreach ( $users as $user ) { + if ( is_super_admin( $user->ID ) && !in_array( $user->user_login, $site_admins ) ) + $site_admins[] = $user->user_login; + } + } + } else { + $site_admins = get_site_option( 'site_admins' ); + } + + $welcome_email = __( 'Dear User, + +Your new SITE_NAME site has been successfully set up at: +BLOG_URL + +You can log in to the administrator account with the following information: +Username: USERNAME +Password: PASSWORD +Log in Here: BLOG_URLwp-login.php + +We hope you enjoy your new site. +Thanks! + +--The Team @ SITE_NAME' ); + + $sitemeta = array( + 'site_name' => $site_name, + 'admin_email' => $site_user->user_email, + 'admin_user_id' => $site_user->ID, + 'registration' => 'none', + 'upload_filetypes' => 'jpg jpeg png gif mp3 mov avi wmv midi mid pdf', + 'blog_upload_space' => 10, + 'fileupload_maxk' => 1500, + 'site_admins' => $site_admins, + 'allowedthemes' => $allowed_themes, + 'illegal_names' => array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator', 'files' ), + 'wpmu_upgrade_site' => $wp_db_version, + 'welcome_email' => $welcome_email, + 'first_post' => __( 'Welcome to SITE_NAME. This is your first post. Edit or delete it, then start blogging!' ), + // @todo - network admins should have a method of editing the network siteurl (used for cookie hash) + 'siteurl' => get_option( 'siteurl' ) . '/', + 'add_new_users' => '0', + 'upload_space_check_disabled' => '0', + 'subdomain_install' => intval( $subdomain_install ), + 'global_terms_enabled' => global_terms_enabled() ? '1' : '0' + ); + if ( ! $subdomain_install ) + $sitemeta['illegal_names'][] = 'blog'; + + $insert = ''; + foreach ( $sitemeta as $meta_key => $meta_value ) { + $meta_key = $wpdb->escape( $meta_key ); + if ( is_array( $meta_value ) ) + $meta_value = serialize( $meta_value ); + $meta_value = $wpdb->escape( $meta_value ); + if ( !empty( $insert ) ) + $insert .= ', '; + $insert .= "( $network_id, '$meta_key', '$meta_value')"; + } + $wpdb->query( "INSERT INTO $wpdb->sitemeta ( site_id, meta_key, meta_value ) VALUES " . $insert ); + + $current_site->domain = $domain; + $current_site->path = $path; + $current_site->site_name = ucfirst( $domain ); + + if ( !is_multisite() ) { + $wpdb->insert( $wpdb->blogs, array( 'site_id' => $network_id, 'domain' => $domain, 'path' => $path, 'registered' => current_time( 'mysql' ) ) ); + $blog_id = $wpdb->insert_id; + update_user_meta( $site_user->ID, 'source_domain', $domain ); + update_user_meta( $site_user->ID, 'primary_blog', $blog_id ); + if ( !$upload_path = get_option( 'upload_path' ) ) { + $upload_path = substr( WP_CONTENT_DIR, strlen( ABSPATH ) ) . '/uploads'; + update_option( 'upload_path', $upload_path ); + } + update_option( 'fileupload_url', get_option( 'siteurl' ) . '/' . $upload_path ); + } + + if ( $subdomain_install ) + update_option( 'permalink_structure', '/%year%/%monthnum%/%day%/%postname%/'); + else + update_option( 'permalink_structure', '/blog/%year%/%monthnum%/%day%/%postname%/'); + + $wp_rewrite->flush_rules(); + + if ( $subdomain_install ) { + $vhost_ok = false; + $errstr = ''; + $hostname = substr( md5( time() ), 0, 6 ) . '.' . $domain; // Very random hostname! + $page = wp_remote_get( 'http://' . $hostname, array( 'timeout' => 5, 'httpversion' => '1.1' ) ); + if ( is_wp_error( $page ) ) + $errstr = $page->get_error_message(); + elseif ( 200 == wp_remote_retrieve_response_code( $page ) ) + $vhost_ok = true; + + if ( ! $vhost_ok ) { + $msg = '

    ' . __( 'Warning! Wildcard DNS may not be configured correctly!' ) . '

    '; + $msg .= '

    ' . sprintf( __( 'The installer attempted to contact a random hostname (%1$s) on your domain.' ), $hostname ); + if ( ! empty ( $errstr ) ) + $msg .= ' ' . sprintf( __( 'This resulted in an error message: %s' ), '' . $errstr . '' ); + $msg .= '

    '; + $msg .= '

    ' . __( 'To use a subdomain configuration, you must have a wildcard entry in your DNS. This usually means adding a * hostname record pointing at your web server in your DNS configuration tool.' ) . '

    '; + $msg .= '

    ' . __( 'You can still use your site but any subdomain you create may not be accessible. If you know your DNS is correct, ignore this message.' ) . '

    '; + return new WP_Error( 'no_wildcard_dns', $msg ); + } + } + + return true; +} + +?> diff --git a/src/wp-admin/includes/taxonomy.php b/src/wp-admin/includes/taxonomy.php new file mode 100644 index 0000000..12e231a --- /dev/null +++ b/src/wp-admin/includes/taxonomy.php @@ -0,0 +1,252 @@ + $cat_name, 'category_parent' => $parent) ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.0.0 + * + * @param unknown_type $categories + * @param unknown_type $post_id + * @return unknown + */ +function wp_create_categories($categories, $post_id = '') { + $cat_ids = array (); + foreach ($categories as $category) { + if ($id = category_exists($category)) + $cat_ids[] = $id; + else + if ($id = wp_create_category($category)) + $cat_ids[] = $id; + } + + if ( $post_id ) + wp_set_post_categories($post_id, $cat_ids); + + return $cat_ids; +} + +/** + * Updates an existing Category or creates a new Category. + * + * @since 2.0.0 + * + * @param mixed $catarr See defaults below. Set 'cat_ID' to a non-zero value to update an existing category. The 'taxonomy' key was added in 3.0.0. + * @param bool $wp_error Optional, since 2.5.0. Set this to true if the caller handles WP_Error return values. + * @return int|object The ID number of the new or updated Category on success. Zero or a WP_Error on failure, depending on param $wp_error. + */ +function wp_insert_category($catarr, $wp_error = false) { + $cat_defaults = array('cat_ID' => 0, 'taxonomy' => 'category', 'cat_name' => '', 'category_description' => '', 'category_nicename' => '', 'category_parent' => ''); + $catarr = wp_parse_args($catarr, $cat_defaults); + extract($catarr, EXTR_SKIP); + + if ( trim( $cat_name ) == '' ) { + if ( ! $wp_error ) + return 0; + else + return new WP_Error( 'cat_name', __('You did not enter a category name.') ); + } + + $cat_ID = (int) $cat_ID; + + // Are we updating or creating? + if ( !empty ($cat_ID) ) + $update = true; + else + $update = false; + + $name = $cat_name; + $description = $category_description; + $slug = $category_nicename; + $parent = $category_parent; + + $parent = (int) $parent; + if ( $parent < 0 ) + $parent = 0; + + if ( empty($parent) || !category_exists( $parent ) || ($cat_ID && cat_is_ancestor_of($cat_ID, $parent) ) ) + $parent = 0; + + $args = compact('name', 'slug', 'parent', 'description'); + + if ( $update ) + $cat_ID = wp_update_term($cat_ID, $taxonomy, $args); + else + $cat_ID = wp_insert_term($cat_name, $taxonomy, $args); + + if ( is_wp_error($cat_ID) ) { + if ( $wp_error ) + return $cat_ID; + else + return 0; + } + + return $cat_ID['term_id']; +} + +/** + * Aliases wp_insert_category() with minimal args. + * + * If you want to update only some fields of an existing category, call this + * function with only the new values set inside $catarr. + * + * @since 2.0.0 + * + * @param array $catarr The 'cat_ID' value is required. All other keys are optional. + * @return int|bool The ID number of the new or updated Category on success. Zero or FALSE on failure. + */ +function wp_update_category($catarr) { + $cat_ID = (int) $catarr['cat_ID']; + + if ( isset($catarr['category_parent']) && ($cat_ID == $catarr['category_parent']) ) + return false; + + // First, get all of the original fields + $category = get_category($cat_ID, ARRAY_A); + + // Escape data pulled from DB. + $category = add_magic_quotes($category); + + // Merge old and new fields with new fields overwriting old ones. + $catarr = array_merge($category, $catarr); + + return wp_insert_category($catarr); +} + +// +// Tags +// + +/** + * {@internal Missing Short Description}} + * + * @since 2.3.0 + * + * @param unknown_type $tag_name + * @return unknown + */ +function tag_exists($tag_name) { + return term_exists($tag_name, 'post_tag'); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.3.0 + * + * @param unknown_type $tag_name + * @return unknown + */ +function wp_create_tag($tag_name) { + return wp_create_term( $tag_name, 'post_tag'); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.3.0 + * + * @param unknown_type $post_id + * @return unknown + */ +function get_tags_to_edit( $post_id, $taxonomy = 'post_tag' ) { + return get_terms_to_edit( $post_id, $taxonomy); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.8.0 + * + * @param unknown_type $post_id + * @return unknown + */ +function get_terms_to_edit( $post_id, $taxonomy = 'post_tag' ) { + $post_id = (int) $post_id; + if ( !$post_id ) + return false; + + $tags = wp_get_post_terms($post_id, $taxonomy, array()); + + if ( !$tags ) + return false; + + if ( is_wp_error($tags) ) + return $tags; + + foreach ( $tags as $tag ) + $tag_names[] = $tag->name; + $tags_to_edit = join( ',', $tag_names ); + $tags_to_edit = esc_attr( $tags_to_edit ); + $tags_to_edit = apply_filters( 'terms_to_edit', $tags_to_edit, $taxonomy ); + + return $tags_to_edit; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.8.0 + * + * @param unknown_type $tag_name + * @return unknown + */ +function wp_create_term($tag_name, $taxonomy = 'post_tag') { + if ( $id = term_exists($tag_name, $taxonomy) ) + return $id; + + return wp_insert_term($tag_name, $taxonomy); +} diff --git a/src/wp-admin/includes/template.php b/src/wp-admin/includes/template.php new file mode 100644 index 0000000..a488baf --- /dev/null +++ b/src/wp-admin/includes/template.php @@ -0,0 +1,2228 @@ + 'parent', 'id' => 'term_id'); //TODO: decouple this + + function start_lvl(&$output, $depth, $args) { + $indent = str_repeat("\t", $depth); + $output .= "$indent
      \n"; + } + + function end_lvl(&$output, $depth, $args) { + $indent = str_repeat("\t", $depth); + $output .= "$indent
    \n"; + } + + function start_el(&$output, $category, $depth, $args) { + extract($args); + if ( empty($taxonomy) ) + $taxonomy = 'category'; + + if ( $taxonomy == 'category' ) + $name = 'post_category'; + else + $name = 'tax_input['.$taxonomy.']'; + + $class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : ''; + $output .= "\n
  • " . ''; + } + + function end_el(&$output, $category, $depth, $args) { + $output .= "
  • \n"; + } +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.1 + * + * @param unknown_type $post_id + * @param unknown_type $descendants_and_self + * @param unknown_type $selected_cats + * @param unknown_type $popular_cats + */ +function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $selected_cats = false, $popular_cats = false, $walker = null, $checked_ontop = true ) { + wp_terms_checklist($post_id, + array( + 'taxonomy' => 'category', + 'descendants_and_self' => $descendants_and_self, + 'selected_cats' => $selected_cats, + 'popular_cats' => $popular_cats, + 'walker' => $walker, + 'checked_ontop' => $checked_ontop + )); +} + +/** + * Taxonomy independent version of wp_category_checklist + * + * @since 3.0.0 + * + * @param int $post_id + * @param array $args + */ +function wp_terms_checklist($post_id = 0, $args = array()) { + $defaults = array( + 'descendants_and_self' => 0, + 'selected_cats' => false, + 'popular_cats' => false, + 'walker' => null, + 'taxonomy' => 'category', + 'checked_ontop' => true + ); + extract( wp_parse_args($args, $defaults), EXTR_SKIP ); + + if ( empty($walker) || !is_a($walker, 'Walker') ) + $walker = new Walker_Category_Checklist; + + $descendants_and_self = (int) $descendants_and_self; + + $args = array('taxonomy' => $taxonomy); + + $tax = get_taxonomy($taxonomy); + $args['disabled'] = !current_user_can($tax->cap->assign_terms); + + if ( is_array( $selected_cats ) ) + $args['selected_cats'] = $selected_cats; + elseif ( $post_id ) + $args['selected_cats'] = wp_get_object_terms($post_id, $taxonomy, array_merge($args, array('fields' => 'ids'))); + else + $args['selected_cats'] = array(); + + if ( is_array( $popular_cats ) ) + $args['popular_cats'] = $popular_cats; + else + $args['popular_cats'] = get_terms( $taxonomy, array( 'fields' => 'ids', 'orderby' => 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) ); + + if ( $descendants_and_self ) { + $categories = (array) get_terms($taxonomy, array( 'child_of' => $descendants_and_self, 'hierarchical' => 0, 'hide_empty' => 0 ) ); + $self = get_term( $descendants_and_self, $taxonomy ); + array_unshift( $categories, $self ); + } else { + $categories = (array) get_terms($taxonomy, array('get' => 'all')); + } + + if ( $checked_ontop ) { + // Post process $categories rather than adding an exclude to the get_terms() query to keep the query the same across all posts (for any query cache) + $checked_categories = array(); + $keys = array_keys( $categories ); + + foreach( $keys as $k ) { + if ( in_array( $categories[$k]->term_id, $args['selected_cats'] ) ) { + $checked_categories[] = $categories[$k]; + unset( $categories[$k] ); + } + } + + // Put checked cats on top + echo call_user_func_array(array(&$walker, 'walk'), array($checked_categories, 0, $args)); + } + // Then the rest of them + echo call_user_func_array(array(&$walker, 'walk'), array($categories, 0, $args)); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param unknown_type $taxonomy + * @param unknown_type $default + * @param unknown_type $number + * @param unknown_type $echo + * @return unknown + */ +function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $echo = true ) { + global $post_ID; + + if ( $post_ID ) + $checked_terms = wp_get_object_terms($post_ID, $taxonomy, array('fields'=>'ids')); + else + $checked_terms = array(); + + $terms = get_terms( $taxonomy, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => $number, 'hierarchical' => false ) ); + + $tax = get_taxonomy($taxonomy); + if ( ! current_user_can($tax->cap->assign_terms) ) + $disabled = 'disabled="disabled"'; + else + $disabled = ''; + + $popular_ids = array(); + foreach ( (array) $terms as $term ) { + $popular_ids[] = $term->term_id; + if ( !$echo ) // hack for AJAX use + continue; + $id = "popular-$taxonomy-$term->term_id"; + $checked = in_array( $term->term_id, $checked_terms ) ? 'checked="checked"' : ''; + ?> + + + + 'name', 'hide_empty' => 0 ) ); + + if ( empty( $categories ) ) + return; + + foreach ( $categories as $category ) { + $cat_id = $category->term_id; + $name = esc_html( apply_filters( 'the_category', $category->name ) ); + $checked = in_array( $cat_id, $checked_categories ) ? ' checked="checked"' : ''; + echo '"; + } +} + +/** + * Get the column headers for a screen + * + * @since 2.7.0 + * + * @param string|object $screen The screen you want the headers for + * @return array Containing the headers in the format id => UI String + */ +function get_column_headers( $screen ) { + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + global $_wp_column_headers; + + if ( !isset( $_wp_column_headers[ $screen->id ] ) ) { + $_wp_column_headers[ $screen->id ] = apply_filters( 'manage_' . $screen->id . '_columns', array() ); + } + + return $_wp_column_headers[ $screen->id ]; +} + +/** + * Get a list of hidden columns. + * + * @since 2.7.0 + * + * @param string|object $screen The screen you want the hidden columns for + * @return array + */ +function get_hidden_columns( $screen ) { + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + return (array) get_user_option( 'manage' . $screen->id . 'columnshidden' ); +} + +// adds hidden fields with the data for use in the inline editor for posts and pages +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $post + */ +function get_inline_data($post) { + $post_type_object = get_post_type_object($post->post_type); + if ( ! current_user_can($post_type_object->cap->edit_post, $post->ID) ) + return; + + $title = esc_textarea( trim( $post->post_title ) ); + + echo ' +'; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $position + * @param unknown_type $checkbox + * @param unknown_type $mode + */ +function wp_comment_reply($position = '1', $checkbox = false, $mode = 'single', $table_row = true) { + // allow plugin to replace the popup content + $content = apply_filters( 'wp_comment_reply', '', array('position' => $position, 'checkbox' => $checkbox, 'mode' => $mode) ); + + if ( ! empty($content) ) { + echo $content; + return; + } + + if ( $mode == 'single' ) { + $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); + } else { + $wp_list_table = _get_list_table('WP_Comments_List_Table'); + } + +?> +
    + +
    + + + +
    + + + + + + + ' . _x( 'Name', 'meta name' ) . ' + ' . __( 'Value' ) . ' + + + + + +'; //TBODY needed for list-manipulation JS + return; + } + $count = 0; +?> + + + + + + + + + + +
    + + $entry['meta_id'] = (int) $entry['meta_id']; + + $delete_nonce = wp_create_nonce( 'delete-meta_' . $entry['meta_id'] ); + + $r .= "\n\t"; + $r .= "\n\t\t"; + + $r .= "\n\t\t
    "; + $r .= get_submit_button( __( 'Delete' ), "delete:the-list:meta-{$entry['meta_id']}::_ajax_nonce=$delete_nonce deletemeta", "deletemeta[{$entry['meta_id']}]", false, array( 'tabindex' => '6' ) ); + $r .= "\n\t\t"; + $r .= get_submit_button( __( 'Update' ), "add:the-list:meta-{$entry['meta_id']}::_ajax_nonce-add-meta=$update_nonce updatemeta" , 'updatemeta', false, array( 'tabindex' => '6' ) ); + $r .= "
    "; + $r .= wp_nonce_field( 'change-meta', '_ajax_nonce', false, false ); + $r .= ""; + + $r .= "\n\t\t\n\t"; + return $r; +} + +/** + * {@internal Missing Short Description}} + * + * @since 1.2.0 + */ +function meta_form() { + global $wpdb; + $limit = (int) apply_filters( 'postmeta_form_limit', 30 ); + $keys = $wpdb->get_col( " + SELECT meta_key + FROM $wpdb->postmeta + GROUP BY meta_key + HAVING meta_key NOT LIKE '\_%' + ORDER BY meta_key + LIMIT $limit" ); + if ( $keys ) + natcasesort($keys); +?> +

    + + + + + + + + + + + + + + + + +
    + + + + + + + + + +
    + 'addmetasub', 'tabindex' => '9' ) ); ?> + +
    +post_status, array('draft', 'pending') ) && (!$post->post_date_gmt || '0000-00-00 00:00:00' == $post->post_date_gmt ) ); + + $tab_index_attribute = ''; + if ( (int) $tab_index > 0 ) + $tab_index_attribute = " tabindex=\"$tab_index\""; + + // echo '
    '; + + $time_adj = current_time('timestamp'); + $post_date = ($for_post) ? $post->post_date : $comment->comment_date; + $jj = ($edit) ? mysql2date( 'd', $post_date, false ) : gmdate( 'd', $time_adj ); + $mm = ($edit) ? mysql2date( 'm', $post_date, false ) : gmdate( 'm', $time_adj ); + $aa = ($edit) ? mysql2date( 'Y', $post_date, false ) : gmdate( 'Y', $time_adj ); + $hh = ($edit) ? mysql2date( 'H', $post_date, false ) : gmdate( 'H', $time_adj ); + $mn = ($edit) ? mysql2date( 'i', $post_date, false ) : gmdate( 'i', $time_adj ); + $ss = ($edit) ? mysql2date( 's', $post_date, false ) : gmdate( 's', $time_adj ); + + $cur_jj = gmdate( 'd', $time_adj ); + $cur_mm = gmdate( 'm', $time_adj ); + $cur_aa = gmdate( 'Y', $time_adj ); + $cur_hh = gmdate( 'H', $time_adj ); + $cur_mn = gmdate( 'i', $time_adj ); + + $month = "'; + + $day = ''; + $year = ''; + $hour = ''; + $minute = ''; + + echo '
    '; + /* translators: 1: month input, 2: day input, 3: year input, 4: hour input, 5: minute input */ + printf(__('%1$s%2$s, %3$s @ %4$s : %5$s'), $month, $day, $year, $hour, $minute); + + echo '
    '; + + if ( $multi ) return; + + echo "\n\n"; + foreach ( array('mm', 'jj', 'aa', 'hh', 'mn') as $timeunit ) { + echo '' . "\n"; + $cur_timeunit = 'cur_' . $timeunit; + echo '' . "\n"; + } +?> + +

    + + +

    +$template"; + endforeach; +} + +/** + * {@internal Missing Short Description}} + * + * @since 1.5.0 + * + * @param unknown_type $default + * @param unknown_type $parent + * @param unknown_type $level + * @return unknown + */ +function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) { + global $wpdb, $post_ID; + $items = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' ORDER BY menu_order", $parent) ); + + if ( $items ) { + foreach ( $items as $item ) { + // A page cannot be its own parent. + if (!empty ( $post_ID ) ) { + if ( $item->ID == $post_ID ) { + continue; + } + } + $pad = str_repeat( ' ', $level * 3 ); + if ( $item->ID == $default) + $current = ' selected="selected"'; + else + $current = ''; + + echo "\n\t"; + parent_dropdown( $default, $item->ID, $level +1 ); + } + } else { + return false; + } +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.0.0 + * + * @param unknown_type $id + * @return unknown + */ +function the_attachment_links( $id = false ) { + $id = (int) $id; + $post = & get_post( $id ); + + if ( $post->post_type != 'attachment' ) + return false; + + $icon = wp_get_attachment_image( $post->ID, 'thumbnail', true ); + $attachment_data = wp_get_attachment_metadata( $id ); + $thumb = isset( $attachment_data['thumb'] ); +?> + + html elements for role selectors + * + * @since 2.1.0 + * + * @param string $selected slug for the role that should be already selected + */ +function wp_dropdown_roles( $selected = false ) { + $p = ''; + $r = ''; + + $editable_roles = get_editable_roles(); + + foreach ( $editable_roles as $role => $details ) { + $name = translate_user_role($details['name'] ); + if ( $selected == $role ) // preselect specified role + $p = "\n\t"; + else + $r .= "\n\t"; + } + echo $p . $r; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.3.0 + * + * @param unknown_type $size + * @return unknown + */ +function wp_convert_hr_to_bytes( $size ) { + $size = strtolower($size); + $bytes = (int) $size; + if ( strpos($size, 'k') !== false ) + $bytes = intval($size) * 1024; + elseif ( strpos($size, 'm') !== false ) + $bytes = intval($size) * 1024 * 1024; + elseif ( strpos($size, 'g') !== false ) + $bytes = intval($size) * 1024 * 1024 * 1024; + return $bytes; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.3.0 + * + * @param unknown_type $bytes + * @return unknown + */ +function wp_convert_bytes_to_hr( $bytes ) { + $units = array( 0 => 'B', 1 => 'kB', 2 => 'MB', 3 => 'GB' ); + $log = log( $bytes, 1024 ); + $power = (int) $log; + $size = pow(1024, $log - $power); + return $size . $units[$power]; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @return unknown + */ +function wp_max_upload_size() { + $u_bytes = wp_convert_hr_to_bytes( ini_get( 'upload_max_filesize' ) ); + $p_bytes = wp_convert_hr_to_bytes( ini_get( 'post_max_size' ) ); + $bytes = apply_filters( 'upload_size_limit', min($u_bytes, $p_bytes), $u_bytes, $p_bytes ); + return $bytes; +} + +/** + * Outputs the form used by the importers to accept the data to be imported + * + * @since 2.0.0 + * + * @param string $action The action attribute for the form. + */ +function wp_import_upload_form( $action ) { + $bytes = apply_filters( 'import_upload_size_limit', wp_max_upload_size() ); + $size = wp_convert_bytes_to_hr( $bytes ); + $upload_dir = wp_upload_dir(); + if ( ! empty( $upload_dir['error'] ) ) : + ?>

    +

    +
    +

    + () + + + +

    + +
    + $id, 'title' => $title, 'callback' => $callback, 'args' => $callback_args); +} + +/** + * Meta-Box template function + * + * @since 2.5.0 + * + * @param string $page page identifier, also known as screen identifier + * @param string $context box context + * @param mixed $object gets passed to the box callback function as first parameter + * @return int number of meta_boxes + */ +function do_meta_boxes($page, $context, $object) { + global $wp_meta_boxes; + static $already_sorted = false; + + $hidden = get_hidden_meta_boxes($page); + + printf('
    ', htmlspecialchars($context)); + + $i = 0; + do { + // Grab the ones the user has manually sorted. Pull them out of their previous context/priority and into the one the user chose + if ( !$already_sorted && $sorted = get_user_option( "meta-box-order_$page" ) ) { + foreach ( $sorted as $box_context => $ids ) { + foreach ( explode(',', $ids ) as $id ) { + if ( $id && 'dashboard_browser_nag' !== $id ) + add_meta_box( $id, null, null, $page, $box_context, 'sorted' ); + } + } + } + $already_sorted = true; + + if ( !isset($wp_meta_boxes) || !isset($wp_meta_boxes[$page]) || !isset($wp_meta_boxes[$page][$context]) ) + break; + + foreach ( array('high', 'sorted', 'core', 'default', 'low') as $priority ) { + if ( isset($wp_meta_boxes[$page][$context][$priority]) ) { + foreach ( (array) $wp_meta_boxes[$page][$context][$priority] as $box ) { + if ( false == $box || ! $box['title'] ) + continue; + $i++; + $style = ''; + $hidden_class = in_array($box['id'], $hidden) ? ' hide-if-js' : ''; + echo '
    ' . "\n"; + if ( 'dashboard_browser_nag' != $box['id'] ) + echo '

    '; + echo "

    {$box['title']}

    \n"; + echo '
    ' . "\n"; + call_user_func($box['callback'], $object, $box); + echo "
    \n"; + echo "
    \n"; + } + } + } + } while(0); + + echo "
    "; + + return $i; + +} + +/** + * Remove a meta box from an edit form. + * + * @since 2.6.0 + * + * @param string $id String for use in the 'id' attribute of tags. + * @param string $page The type of edit page on which to show the box (post, page, link). + * @param string $context The context within the page where the boxes should show ('normal', 'advanced'). + */ +function remove_meta_box($id, $page, $context) { + global $wp_meta_boxes; + + if ( !isset($wp_meta_boxes) ) + $wp_meta_boxes = array(); + if ( !isset($wp_meta_boxes[$page]) ) + $wp_meta_boxes[$page] = array(); + if ( !isset($wp_meta_boxes[$page][$context]) ) + $wp_meta_boxes[$page][$context] = array(); + + foreach ( array('high', 'core', 'default', 'low') as $priority ) + $wp_meta_boxes[$page][$context][$priority][$id] = false; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $screen + */ +function meta_box_prefs($screen) { + global $wp_meta_boxes; + + if ( is_string($screen) ) + $screen = convert_to_screen($screen); + + if ( empty($wp_meta_boxes[$screen->id]) ) + return; + + $hidden = get_hidden_meta_boxes($screen); + + foreach ( array_keys($wp_meta_boxes[$screen->id]) as $context ) { + foreach ( array_keys($wp_meta_boxes[$screen->id][$context]) as $priority ) { + foreach ( $wp_meta_boxes[$screen->id][$context][$priority] as $box ) { + if ( false == $box || ! $box['title'] ) + continue; + // Submit box cannot be hidden + if ( 'submitdiv' == $box['id'] || 'linksubmitdiv' == $box['id'] ) + continue; + $box_id = $box['id']; + echo '\n"; + } + } + } +} + +/** + * Get Hidden Meta Boxes + * + * @since 2.7.0 + * + * @param string|object $screen Screen identifier + * @return array Hidden Meta Boxes + */ +function get_hidden_meta_boxes( $screen ) { + if ( is_string( $screen ) ) + $screen = convert_to_screen( $screen ); + + $hidden = get_user_option( "metaboxhidden_{$screen->id}" ); + + // Hide slug boxes by default + if ( !is_array( $hidden ) ) { + if ( 'post' == $screen->base || 'page' == $screen->base ) + $hidden = array('slugdiv', 'trackbacksdiv', 'postcustom', 'postexcerpt', 'commentstatusdiv', 'commentsdiv', 'authordiv', 'revisionsdiv'); + else + $hidden = array( 'slugdiv' ); + $hidden = apply_filters('default_hidden_meta_boxes', $hidden, $screen); + } + + return $hidden; +} + +/** + * Add a new section to a settings page. + * + * Part of the Settings API. Use this to define new settings sections for an admin page. + * Show settings sections in your admin page callback function with do_settings_sections(). + * Add settings fields to your section with add_settings_field() + * + * The $callback argument should be the name of a function that echoes out any + * content you want to show at the top of the settings section before the actual + * fields. It can output nothing if you want. + * + * @since 2.7.0 + * + * @global $wp_settings_sections Storage array of all settings sections added to admin pages + * + * @param string $id Slug-name to identify the section. Used in the 'id' attribute of tags. + * @param string $title Formatted title of the section. Shown as the heading for the section. + * @param string $callback Function that echos out any content at the top of the section (between heading and fields). + * @param string $page The slug-name of the settings page on which to show the section. Built-in pages include 'general', 'reading', 'writing', 'discussion', 'media', etc. Create your own using add_options_page(); + */ +function add_settings_section($id, $title, $callback, $page) { + global $wp_settings_sections; + + if ( 'misc' == $page ) { + _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) ); + $page = 'general'; + } + + if ( !isset($wp_settings_sections) ) + $wp_settings_sections = array(); + if ( !isset($wp_settings_sections[$page]) ) + $wp_settings_sections[$page] = array(); + if ( !isset($wp_settings_sections[$page][$id]) ) + $wp_settings_sections[$page][$id] = array(); + + $wp_settings_sections[$page][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback); +} + +/** + * Add a new field to a section of a settings page + * + * Part of the Settings API. Use this to define a settings field that will show + * as part of a settings section inside a settings page. The fields are shown using + * do_settings_fields() in do_settings-sections() + * + * The $callback argument should be the name of a function that echoes out the + * html input tags for this setting field. Use get_option() to retrive existing + * values to show. + * + * @since 2.7.0 + * + * @global $wp_settings_fields Storage array of settings fields and info about their pages/sections + * + * @param string $id Slug-name to identify the field. Used in the 'id' attribute of tags. + * @param string $title Formatted title of the field. Shown as the label for the field during output. + * @param string $callback Function that fills the field with the desired form inputs. The function should echo its output. + * @param string $page The slug-name of the settings page on which to show the section (general, reading, writing, ...). + * @param string $section The slug-name of the section of the settingss page in which to show the box (default, ...). + * @param array $args Additional arguments + */ +function add_settings_field($id, $title, $callback, $page, $section = 'default', $args = array()) { + global $wp_settings_fields; + + if ( 'misc' == $page ) { + _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) ); + $page = 'general'; + } + + if ( !isset($wp_settings_fields) ) + $wp_settings_fields = array(); + if ( !isset($wp_settings_fields[$page]) ) + $wp_settings_fields[$page] = array(); + if ( !isset($wp_settings_fields[$page][$section]) ) + $wp_settings_fields[$page][$section] = array(); + + $wp_settings_fields[$page][$section][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $args); +} + +/** + * Prints out all settings sections added to a particular settings page + * + * Part of the Settings API. Use this in a settings page callback function + * to output all the sections and fields that were added to that $page with + * add_settings_section() and add_settings_field() + * + * @global $wp_settings_sections Storage array of all settings sections added to admin pages + * @global $wp_settings_fields Storage array of settings fields and info about their pages/sections + * @since 2.7.0 + * + * @param string $page The slug name of the page whos settings sections you want to output + */ +function do_settings_sections($page) { + global $wp_settings_sections, $wp_settings_fields; + + if ( !isset($wp_settings_sections) || !isset($wp_settings_sections[$page]) ) + return; + + foreach ( (array) $wp_settings_sections[$page] as $section ) { + echo "

    {$section['title']}

    \n"; + call_user_func($section['callback'], $section); + if ( !isset($wp_settings_fields) || !isset($wp_settings_fields[$page]) || !isset($wp_settings_fields[$page][$section['id']]) ) + continue; + echo ''; + do_settings_fields($page, $section['id']); + echo '
    '; + } +} + +/** + * Print out the settings fields for a particular settings section + * + * Part of the Settings API. Use this in a settings page to output + * a specific section. Should normally be called by do_settings_sections() + * rather than directly. + * + * @global $wp_settings_fields Storage array of settings fields and their pages/sections + * + * @since 2.7.0 + * + * @param string $page Slug title of the admin page who's settings fields you want to show. + * @param section $section Slug title of the settings section who's fields you want to show. + */ +function do_settings_fields($page, $section) { + global $wp_settings_fields; + + if ( !isset($wp_settings_fields) || !isset($wp_settings_fields[$page]) || !isset($wp_settings_fields[$page][$section]) ) + return; + + foreach ( (array) $wp_settings_fields[$page][$section] as $field ) { + echo ''; + if ( !empty($field['args']['label_for']) ) + echo ''; + else + echo '' . $field['title'] . ''; + echo ''; + call_user_func($field['callback'], $field['args']); + echo ''; + echo ''; + } +} + +/** + * Register a settings error to be displayed to the user + * + * Part of the Settings API. Use this to show messages to users about settings validation + * problems, missing settings or anything else. + * + * Settings errors should be added inside the $sanitize_callback function defined in + * register_setting() for a given setting to give feedback about the submission. + * + * By default messages will show immediately after the submission that generated the error. + * Additional calls to settings_errors() can be used to show errors even when the settings + * page is first accessed. + * + * @since 3.0.0 + * + * @global array $wp_settings_errors Storage array of errors registered during this pageload + * + * @param string $setting Slug title of the setting to which this error applies + * @param string $code Slug-name to identify the error. Used as part of 'id' attribute in HTML output. + * @param string $message The formatted message text to display to the user (will be shown inside styled
    and

    ) + * @param string $type The type of message it is, controls HTML class. Use 'error' or 'updated'. + */ +function add_settings_error( $setting, $code, $message, $type = 'error' ) { + global $wp_settings_errors; + + if ( !isset($wp_settings_errors) ) + $wp_settings_errors = array(); + + $new_error = array( + 'setting' => $setting, + 'code' => $code, + 'message' => $message, + 'type' => $type + ); + $wp_settings_errors[] = $new_error; +} + +/** + * Fetch settings errors registered by add_settings_error() + * + * Checks the $wp_settings_errors array for any errors declared during the current + * pageload and returns them. + * + * If changes were just submitted ($_GET['settings-updated']) and settings errors were saved + * to the 'settings_errors' transient then those errors will be returned instead. This + * is used to pass errors back across pageloads. + * + * Use the $sanitize argument to manually re-sanitize the option before returning errors. + * This is useful if you have errors or notices you want to show even when the user + * hasn't submitted data (i.e. when they first load an options page, or in admin_notices action hook) + * + * @since 3.0.0 + * + * @global array $wp_settings_errors Storage array of errors registered during this pageload + * + * @param string $setting Optional slug title of a specific setting who's errors you want. + * @param boolean $sanitize Whether to re-sanitize the setting value before returning errors. + * @return array Array of settings errors + */ +function get_settings_errors( $setting = '', $sanitize = FALSE ) { + global $wp_settings_errors; + + // If $sanitize is true, manually re-run the sanitizisation for this option + // This allows the $sanitize_callback from register_setting() to run, adding + // any settings errors you want to show by default. + if ( $sanitize ) + sanitize_option( $setting, get_option($setting)); + + // If settings were passed back from options.php then use them + // Ignore transients if $sanitize is true, we dont' want the old values anyway + if ( isset($_GET['settings-updated']) && $_GET['settings-updated'] && get_transient('settings_errors') ) { + $settings_errors = get_transient('settings_errors'); + delete_transient('settings_errors'); + // Otherwise check global in case validation has been run on this pageload + } elseif ( count( $wp_settings_errors ) ) { + $settings_errors = $wp_settings_errors; + } else { + return; + } + + // Filter the results to those of a specific setting if one was set + if ( $setting ) { + foreach ( (array) $settings_errors as $key => $details ) + if ( $setting != $details['setting'] ) + unset( $settings_errors[$key] ); + } + return $settings_errors; +} + +/** + * Display settings errors registered by add_settings_error() + * + * Part of the Settings API. Outputs a

    for each error retrieved by get_settings_errors(). + * + * This is called automatically after a settings page based on the Settings API is submitted. + * Errors should be added during the validation callback function for a setting defined in register_setting() + * + * The $sanitize option is passed into get_settings_errors() and will re-run the setting sanitization + * on its current value. + * + * The $hide_on_update option will cause errors to only show when the settings page is first loaded. + * if the user has already saved new values it will be hidden to avoid repeating messages already + * shown in the default error reporting after submission. This is useful to show general errors like missing + * settings when the user arrives at the settings page. + * + * @since 3.0.0 + * + * @param string $setting Optional slug title of a specific setting who's errors you want. + * @param boolean $sanitize Whether to re-sanitize the setting value before returning errors. + * @param boolean $hide_on_update If set to true errors will not be shown if the settings page has already been submitted. + */ +function settings_errors( $setting = '', $sanitize = FALSE, $hide_on_update = FALSE ) { + + if ($hide_on_update AND $_GET['settings-updated']) return; + + $settings_errors = get_settings_errors( $setting, $sanitize ); + + if ( !is_array($settings_errors) ) return; + + $output = ''; + foreach ( $settings_errors as $key => $details ) { + $css_id = 'setting-error-' . $details['code']; + $css_class = $details['type'] . ' settings-error'; + $output .= "
    \n"; + $output .= "

    {$details['message']}

    "; + $output .= "
    \n"; + } + echo $output; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + * + * @param unknown_type $found_action + */ +function find_posts_div($found_action = '') { +?> + +post_password ) ) echo esc_attr( $post->post_password ); +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.7.0 + */ +function favorite_actions( $screen = null ) { + $default_action = false; + + if ( is_string($screen) ) + $screen = convert_to_screen($screen); + + if ( $screen->is_user ) + return; + + if ( isset($screen->post_type) ) { + $post_type_object = get_post_type_object($screen->post_type); + if ( 'add' != $screen->action ) + $default_action = array('post-new.php?post_type=' . $post_type_object->name => array($post_type_object->labels->new_item, $post_type_object->cap->edit_posts)); + else + $default_action = array('edit.php?post_type=' . $post_type_object->name => array($post_type_object->labels->name, $post_type_object->cap->edit_posts)); + } + + if ( !$default_action ) { + if ( $screen->is_network ) { + $default_action = array('sites.php' => array( __('Sites'), 'manage_sites')); + } else { + switch ( $screen->id ) { + case 'upload': + $default_action = array('media-new.php' => array(__('New Media'), 'upload_files')); + break; + case 'media': + $default_action = array('upload.php' => array(__('Edit Media'), 'upload_files')); + break; + case 'link-manager': + case 'link': + if ( 'add' != $screen->action ) + $default_action = array('link-add.php' => array(__('New Link'), 'manage_links')); + else + $default_action = array('link-manager.php' => array(__('Edit Links'), 'manage_links')); + break; + case 'users': + $default_action = array('user-new.php' => array(__('New User'), 'create_users')); + break; + case 'user': + $default_action = array('users.php' => array(__('Edit Users'), 'edit_users')); + break; + case 'plugins': + $default_action = array('plugin-install.php' => array(__('Install Plugins'), 'install_plugins')); + break; + case 'plugin-install': + $default_action = array('plugins.php' => array(__('Manage Plugins'), 'activate_plugins')); + break; + case 'themes': + $default_action = array('theme-install.php' => array(__('Install Themes'), 'install_themes')); + break; + case 'theme-install': + $default_action = array('themes.php' => array(__('Manage Themes'), 'switch_themes')); + break; + default: + $default_action = array('post-new.php' => array(__('New Post'), 'edit_posts')); + break; + } + } + } + + if ( !$screen->is_network ) { + $actions = array( + 'post-new.php' => array(__('New Post'), 'edit_posts'), + 'edit.php?post_status=draft' => array(__('Drafts'), 'edit_posts'), + 'post-new.php?post_type=page' => array(__('New Page'), 'edit_pages'), + 'media-new.php' => array(__('Upload'), 'upload_files'), + 'edit-comments.php' => array(__('Comments'), 'moderate_comments') + ); + } else { + $actions = array( + 'sites.php' => array( __('Sites'), 'manage_sites'), + 'users.php' => array( __('Users'), 'manage_network_users') + ); + } + + $default_key = array_keys($default_action); + $default_key = $default_key[0]; + if ( isset($actions[$default_key]) ) + unset($actions[$default_key]); + $actions = array_merge($default_action, $actions); + $actions = apply_filters( 'favorite_actions', $actions, $screen ); + + $allowed_actions = array(); + foreach ( $actions as $action => $data ) { + if ( current_user_can($data[1]) ) + $allowed_actions[$action] = $data[0]; + } + + if ( empty($allowed_actions) ) + return; + + $first = array_keys($allowed_actions); + $first = $first[0]; + echo '
    '; + echo '

    '; + echo '
    '; + + array_shift($allowed_actions); + + foreach ( $allowed_actions as $action => $label) { + echo "\n"; + } + echo "
    \n"; +} + +/** + * Get the post title. + * + * The post title is fetched and if it is blank then a default string is + * returned. + * + * @since 2.7.0 + * @param int $post_id The post id. If not supplied the global $post is used. + * @return string The post title if set + */ +function _draft_or_post_title( $post_id = 0 ) { + $title = get_the_title($post_id); + if ( empty($title) ) + $title = __('(no title)'); + return $title; +} + +/** + * Display the search query. + * + * A simple wrapper to display the "s" parameter in a GET URI. This function + * should only be used when {@link the_search_query()} cannot. + * + * @uses attr + * @since 2.7.0 + * + */ +function _admin_search_query() { + echo isset($_REQUEST['s']) ? esc_attr( stripslashes( $_REQUEST['s'] ) ) : ''; +} + +/** + * Generic Iframe header for use with Thickbox + * + * @since 2.7.0 + * @param string $title Title of the Iframe page. + * @param bool $limit_styles Limit styles to colour-related styles only (unless others are enqueued). + * + */ +function iframe_header( $title = '', $limit_styles = false ) { + show_admin_bar( false ); + global $hook_suffix, $current_screen, $current_user, $admin_body_class, $wp_locale; + $admin_body_class = preg_replace('/[^a-z0-9_-]+/i', '-', $hook_suffix); + $admin_body_class .= ' iframe'; + +?> + > + + +<?php bloginfo('name') ?> › <?php echo $title ?> — <?php _e('WordPress'); ?> + + + + + class="no-js "> + + + + + + +post_password) ) + $post_states['protected'] = __('Password protected'); + if ( 'private' == $post->post_status && 'private' != $post_status ) + $post_states['private'] = __('Private'); + if ( 'draft' == $post->post_status && 'draft' != $post_status ) + $post_states['draft'] = __('Draft'); + if ( 'pending' == $post->post_status && 'pending' != $post_status ) + /* translators: post state */ + $post_states['pending'] = _x('Pending', 'post state'); + if ( is_sticky($post->ID) ) + $post_states['sticky'] = __('Sticky'); + + $post_states = apply_filters( 'display_post_states', $post_states ); + + if ( ! empty($post_states) ) { + $state_count = count($post_states); + $i = 0; + echo ' - '; + foreach ( $post_states as $state ) { + ++$i; + ( $i == $state_count ) ? $sep = '' : $sep = ', '; + echo "$state$sep"; + } + } + + if ( get_post_format( $post->ID ) ) + echo ' - ' . get_post_format_string( get_post_format( $post->ID ) ) . ''; +} + +function _media_states( $post ) { + $media_states = array(); + $stylesheet = get_option('stylesheet'); + + if ( current_theme_supports( 'custom-header') ) { + $meta_header = get_post_meta($post->ID, '_wp_attachment_is_custom_header', true ); + if ( ! empty( $meta_header ) && $meta_header == $stylesheet ) + $media_states[] = __( 'Header Image' ); + } + + if ( current_theme_supports( 'custom-background') ) { + $meta_background = get_post_meta($post->ID, '_wp_attachment_is_custom_background', true ); + if ( ! empty( $meta_background ) && $meta_background == $stylesheet ) + $media_states[] = __( 'Background Image' ); + } + + $media_states = apply_filters( 'display_media_states', $media_states ); + + if ( ! empty( $media_states ) ) { + $state_count = count( $media_states ); + $i = 0; + echo ' - '; + foreach ( $media_states as $state ) { + ++$i; + ( $i == $state_count ) ? $sep = '' : $sep = ', '; + echo "$state$sep"; + } + } +} + +/** + * Convert a screen string to a screen object + * + * @since 3.0.0 + * + * @param string $screen The name of the screen + * @return object An object containing the safe screen name and id + */ +function convert_to_screen( $screen ) { + $screen = str_replace( array('.php', '-new', '-add', '-network', '-user' ), '', $screen); + + if ( is_network_admin() ) + $screen .= '-network'; + elseif ( is_user_admin() ) + $screen .= '-user'; + + $screen = (string) apply_filters( 'screen_meta_screen', $screen ); + $screen = (object) array('id' => $screen, 'base' => $screen); + return $screen; +} + +function screen_meta($screen) { + global $wp_meta_boxes, $_wp_contextual_help, $wp_list_table, $wp_current_screen_options; + + if ( is_string($screen) ) + $screen = convert_to_screen($screen); + + $columns = get_column_headers( $screen ); + $hidden = get_hidden_columns( $screen ); + + $meta_screens = array('index' => 'dashboard'); + + if ( isset($meta_screens[$screen->id]) ) { + $screen->id = $meta_screens[$screen->id]; + $screen->base = $screen->id; + } + + $show_screen = false; + if ( !empty($wp_meta_boxes[$screen->id]) || !empty($columns) ) + $show_screen = true; + + $screen_options = screen_options($screen); + if ( $screen_options ) + $show_screen = true; + + if ( !isset($_wp_contextual_help) ) + $_wp_contextual_help = array(); + + $settings = apply_filters('screen_settings', '', $screen); + + switch ( $screen->id ) { + case 'widgets': + $settings = '

    ' . __('Enable accessibility mode') . '' . __('Disable accessibility mode') . "

    \n"; + $show_screen = true; + break; + } + if ( ! empty( $settings ) ) + $show_screen = true; + + if ( !empty($wp_current_screen_options) ) + $show_screen = true; + + $show_screen = apply_filters('screen_options_show_screen', $show_screen, $screen); + +?> +
    + + + + + + + +
    +id] = $help; +} + +function screen_layout($screen) { + global $screen_layout_columns, $wp_current_screen_options; + + if ( is_string($screen) ) + $screen = convert_to_screen($screen); + + // Back compat for plugins using the filter instead of add_screen_option() + $columns = apply_filters('screen_layout_columns', array(), $screen->id, $screen); + if ( !empty($columns) && isset($columns[$screen->id]) ) + add_screen_option('layout_columns', array('max' => $columns[$screen->id]) ); + + if ( !isset($wp_current_screen_options['layout_columns']) ) { + $screen_layout_columns = 0; + return ''; + } + + $screen_layout_columns = get_user_option("screen_layout_$screen->id"); + $num = $wp_current_screen_options['layout_columns']['max']; + + if ( ! $screen_layout_columns ) { + if ( isset($wp_current_screen_options['layout_columns']['default']) ) + $screen_layout_columns = $wp_current_screen_options['layout_columns']['default']; + else + $screen_layout_columns = 2; + } + + $i = 1; + $return = '
    ' . __('Screen Layout') . "
    \n
    " . __('Number of Columns:') . "\n"; + while ( $i <= $num ) { + $return .= "\n"; + ++$i; + } + $return .= "
    \n"; + return $return; +} + +/** + * Register and configure an admin screen option + * + * @since 3.1.0 + * + * @param string $option An option name. + * @param mixed $args Option dependent arguments + * @return void + */ +function add_screen_option( $option, $args = array() ) { + global $wp_current_screen_options; + + if ( !isset($wp_current_screen_options) ) + $wp_current_screen_options = array(); + + $wp_current_screen_options[$option] = $args; +} + +function screen_options($screen) { + global $wp_current_screen_options; + + if ( is_string($screen) ) + $screen = convert_to_screen($screen); + + if ( !isset($wp_current_screen_options['per_page']) ) + return ''; + + $per_page_label = $wp_current_screen_options['per_page']['label']; + + if ( empty($wp_current_screen_options['per_page']['option']) ) { + $option = str_replace( '-', '_', "{$screen->id}_per_page" ); + } else { + $option = $wp_current_screen_options['per_page']['option']; + } + + $per_page = (int) get_user_option( $option ); + if ( empty( $per_page ) || $per_page < 1 ) { + if ( isset($wp_current_screen_options['per_page']['default']) ) + $per_page = $wp_current_screen_options['per_page']['default']; + else + $per_page = 20; + } + + if ( 'edit_comments_per_page' == $option ) + $per_page = apply_filters( 'comments_per_page', $per_page, isset($_REQUEST['comment_status']) ? $_REQUEST['comment_status'] : 'all' ); + elseif ( 'categories_per_page' == $option ) + $per_page = apply_filters( 'edit_categories_per_page', $per_page ); + else + $per_page = apply_filters( $option, $per_page ); + + // Back compat + if ( isset( $screen->post_type ) ) + $per_page = apply_filters( 'edit_posts_per_page', $per_page, $screen->post_type ); + + $return = "
    \n"; + if ( !empty($per_page_label) ) + $return .= " \n"; + $return .= get_submit_button( __( 'Apply' ), 'button', 'screen-options-apply', false ); + $return .= ""; + $return .= "
    \n"; + return $return; +} + +function screen_icon( $screen = '' ) { + echo get_screen_icon( $screen ); +} + +function get_screen_icon( $screen = '' ) { + global $current_screen, $typenow; + + if ( empty($screen) ) + $screen = $current_screen; + elseif ( is_string($screen) ) + $name = $screen; + + $class = 'icon32'; + + if ( empty($name) ) { + if ( !empty($screen->parent_base) ) + $name = $screen->parent_base; + else + $name = $screen->base; + + if ( 'edit' == $name && isset($screen->post_type) && 'page' == $screen->post_type ) + $name = 'edit-pages'; + + $post_type = ''; + if ( isset( $screen->post_type ) ) + $post_type = $screen->post_type; + elseif ( $current_screen == $screen ) + $post_type = $typenow; + if ( $post_type ) + $class .= ' ' . sanitize_html_class( 'icon32-posts-' . $post_type ); + } + + return '

    '; +} + +/** + * Test support for compressing JavaScript from PHP + * + * Outputs JavaScript that tests if compression from PHP works as expected + * and sets an option with the result. Has no effect when the current user + * is not an administrator. To run the test again the option 'can_compress_scripts' + * has to be deleted. + * + * @since 2.8.0 + */ +function compression_test() { +?> + + $current_screen, 'base' => $current_screen); + } else { + $id = sanitize_key($id); + if ( false !== strpos($id, '-') ) { + list( $id, $typenow ) = explode('-', $id, 2); + if ( taxonomy_exists( $typenow ) ) { + $id = 'edit-tags'; + $taxnow = $typenow; + $typenow = ''; + } + } + $current_screen = array('id' => $id, 'base' => $id); + } + + $current_screen = (object) $current_screen; + + $current_screen->action = $action; + + // Map index to dashboard + if ( 'index' == $current_screen->base ) + $current_screen->base = 'dashboard'; + if ( 'index' == $current_screen->id ) + $current_screen->id = 'dashboard'; + + if ( 'edit' == $current_screen->id ) { + if ( empty($typenow) ) + $typenow = 'post'; + $current_screen->id .= '-' . $typenow; + $current_screen->post_type = $typenow; + } elseif ( 'post' == $current_screen->id ) { + if ( empty($typenow) ) + $typenow = 'post'; + $current_screen->id = $typenow; + $current_screen->post_type = $typenow; + } elseif ( 'edit-tags' == $current_screen->id ) { + if ( empty($taxnow) ) + $taxnow = 'post_tag'; + $current_screen->id = 'edit-' . $taxnow; + $current_screen->taxonomy = $taxnow; + } + + $current_screen->is_network = is_network_admin(); + $current_screen->is_user = is_user_admin(); + + if ( $current_screen->is_network ) { + $current_screen->base .= '-network'; + $current_screen->id .= '-network'; + } elseif ( $current_screen->is_user ) { + $current_screen->base .= '-user'; + $current_screen->id .= '-user'; + } + + $current_screen = apply_filters('current_screen', $current_screen); +} + +/** + * Echos a submit button, with provided text and appropriate class + * + * @since 3.1.0 + * + * @param string $text The text of the button (defaults to 'Save Changes') + * @param string $type The type of button. One of: primary, secondary, delete + * @param string $name The HTML name of the submit button. Defaults to "submit". If no id attribute + * is given in $other_attributes below, $name will be used as the button's id. + * @param bool $wrap True if the output button should be wrapped in a paragraph tag, + * false otherwise. Defaults to true + * @param array|string $other_attributes Other attributes that should be output with the button, + * mapping attributes to their values, such as array( 'tabindex' => '1' ). + * These attributes will be ouput as attribute="value", such as tabindex="1". + * Defaults to no other attributes. Other attributes can also be provided as a + * string such as 'tabindex="1"', though the array format is typically cleaner. + */ +function submit_button( $text = NULL, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = NULL ) { + echo get_submit_button( $text, $type, $name, $wrap, $other_attributes ); +} + +/** + * Returns a submit button, with provided text and appropriate class + * + * @since 3.1.0 + * + * @param string $text The text of the button (defaults to 'Save Changes') + * @param string $type The type of button. One of: primary, secondary, delete + * @param string $name The HTML name of the submit button. Defaults to "submit". If no id attribute + * is given in $other_attributes below, $name will be used as the button's id. + * @param bool $wrap True if the output button should be wrapped in a paragraph tag, + * false otherwise. Defaults to true + * @param array|string $other_attributes Other attributes that should be output with the button, + * mapping attributes to their values, such as array( 'tabindex' => '1' ). + * These attributes will be ouput as attribute="value", such as tabindex="1". + * Defaults to no other attributes. Other attributes can also be provided as a + * string such as 'tabindex="1"', though the array format is typically cleaner. + */ +function get_submit_button( $text = NULL, $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = NULL ) { + switch ( $type ) : + case 'primary' : + case 'secondary' : + $class = 'button-' . $type; + break; + case 'delete' : + $class = 'button-secondary delete'; + break; + default : + $class = $type; // Custom cases can just pass in the classes they want to be used + endswitch; + $text = ( NULL == $text ) ? __( 'Save Changes' ) : $text; + + // Default the id attribute to $name unless an id was specifically provided in $other_attributes + $id = $name; + if ( is_array( $other_attributes ) && isset( $other_attributes['id'] ) ) { + $id = $other_attributes['id']; + unset( $other_attributes['id'] ); + } + + $attributes = ''; + if ( is_array( $other_attributes ) ) { + foreach ( $other_attributes as $attribute => $value ) { + $attributes .= $attribute . '="' . esc_attr( $value ) . '" '; // Trailing space is important + } + } else if ( !empty( $other_attributes ) ) { // Attributes provided as a string + $attributes = $other_attributes; + } + + $button = ''; + + if ( $wrap ) { + $button = '

    ' . $button . '

    '; + } + + return $button; +} diff --git a/src/wp-admin/includes/theme-install.php b/src/wp-admin/includes/theme-install.php new file mode 100644 index 0000000..1f24e40 --- /dev/null +++ b/src/wp-admin/includes/theme-install.php @@ -0,0 +1,323 @@ + array('href' => array(), 'title' => array(), 'target' => array()), + 'abbr' => array('title' => array()), 'acronym' => array('title' => array()), + 'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(), + 'div' => array(), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(), + 'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(), + 'img' => array('src' => array(), 'class' => array(), 'alt' => array()) +); + +$theme_field_defaults = array( 'description' => true, 'sections' => false, 'tested' => true, 'requires' => true, + 'rating' => true, 'downloaded' => true, 'downloadlink' => true, 'last_updated' => true, 'homepage' => true, + 'tags' => true, 'num_ratings' => true +); + +/** + * Retrieve list of WordPress theme features (aka theme tags) + * + * @since 2.8.0 + * + * @deprecated since 3.1.0 Use get_theme_feature_list() instead. + * + * @return array + */ +function install_themes_feature_list( ) { + if ( !$cache = get_transient( 'wporg_theme_feature_list' ) ) + set_transient( 'wporg_theme_feature_list', array( ), 10800); + + if ( $cache ) + return $cache; + + $feature_list = themes_api( 'feature_list', array( ) ); + if ( is_wp_error( $feature_list ) ) + return $features; + + set_transient( 'wporg_theme_feature_list', $feature_list, 10800 ); + + return $feature_list; +} + +/** + * Display search form for searching themes. + * + * @since 2.8.0 + */ +function install_theme_search_form() { + $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : ''; + $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : ''; + ?> +

    + +
    + + + + +
    + +

    +
    +

    + '; + + foreach ( (array) $feature_list as $feature_name => $features ) { + $feature_name = esc_html( $feature_name ); + echo '
    ' . $feature_name . '
    '; + + echo '
      '; + foreach ( $features as $feature => $feature_name ) { + $feature_name = esc_html( $feature_name ); + $feature = esc_attr($feature); +?> + +
    1. + + +
    2. + + +
    +
    + + +
    +
    + + + +

    +

    +
    + + + +
    + name, $themes_allowedtags); + $desc = wp_kses($theme->description, $themes_allowedtags); + //if ( strlen($desc) > 30 ) + // $desc = substr($desc, 0, 15) . '...' . substr($desc, -15) . ''; + + $preview_link = $theme->preview_url . '?TB_iframe=true&width=600&height=400'; + if ( !is_array($actions) ) { + $actions = array(); + $actions[] = '' . __('Install') . ''; + if ( !is_network_admin() ) + $actions[] = '' . __('Preview') . ''; + $actions = apply_filters('theme_install_action_links', $actions, $theme); + } + + $actions = implode ( ' | ', $actions ); + ?> +'> + + +

    + +

    + + +
    +

    version, $themes_allowedtags) ?>

    +

    author, $themes_allowedtags) ?>

    +last_updated) ) : ?> +

    last_updated)) ) ?>

    +requires) ) : ?> +

    requires) ?>

    +tested) ) : ?> +

    tested ?>

    +downloaded) ) : ?> +

    downloaded), number_format_i18n($theme->downloaded)) ?>

    + +
    +
    +
    <?php _e('5 stars') ?>
    +
    <?php _e('4 stars') ?>
    +
    <?php _e('3 stars') ?>
    +
    <?php _e('2 stars') ?>
    +
    <?php _e('1 star') ?>
    +
    +
    + string 'Magazine Basic' (length=14) + public 'slug' => string 'magazine-basic' (length=14) + public 'version' => string '1.1' (length=3) + public 'author' => string 'tinkerpriest' (length=12) + public 'preview_url' => string 'http://wp-themes.com/?magazine-basic' (length=36) + public 'screenshot_url' => string 'http://wp-themes.com/wp-content/themes/magazine-basic/screenshot.png' (length=68) + public 'rating' => float 80 + public 'num_ratings' => int 1 + public 'homepage' => string 'http://wordpress.org/extend/themes/magazine-basic' (length=49) + public 'description' => string 'A basic magazine style layout with a fully customizable layout through a backend interface. Designed by c.bavota of Tinker Priest Media.' (length=214) + public 'download_link' => string 'http://wordpress.org/extend/themes/download/magazine-basic.1.1.zip' (length=66) + */ +} + +/** + * Display theme content based on theme list. + * + * @since 2.8.0 + */ +function display_themes() { + global $wp_list_table; + + $wp_list_table->display(); +} +add_action('install_themes_search', 'display_themes'); +add_action('install_themes_featured', 'display_themes'); +add_action('install_themes_new', 'display_themes'); +add_action('install_themes_updated', 'display_themes'); + +/** + * Display theme information in dialog box form. + * + * @since 2.8.0 + */ +function install_theme_information() { + //TODO: This function needs a LOT of UI work :) + global $tab, $themes_allowedtags; + + $api = themes_api('theme_information', array('slug' => stripslashes( $_REQUEST['theme'] ) )); + + if ( is_wp_error($api) ) + wp_die($api); + + // Sanitize HTML + foreach ( (array)$api->sections as $section_name => $content ) + $api->sections[$section_name] = wp_kses($content, $themes_allowedtags); + + foreach ( array('version', 'author', 'requires', 'tested', 'homepage', 'downloaded', 'slug') as $key ) { + if ( isset($api->$key) ) + $api->$key = wp_kses($api->$key, $themes_allowedtags); + } + + iframe_header( __('Theme Install') ); + + if ( empty($api->download_link) ) { + echo '

    ' . __('Error: This theme is currently not available. Please try again later.') . '

    '; + iframe_footer(); + exit; + } + + if ( !empty($api->tested) && version_compare($GLOBALS['wp_version'], $api->tested, '>') ) + echo '

    ' . __('Warning: This theme has not been tested with your current version of WordPress.') . '

    '; + else if ( !empty($api->requires) && version_compare($GLOBALS['wp_version'], $api->requires, '<') ) + echo '

    ' . __('Warning: This theme has not been marked as compatible with your version of WordPress.') . '

    '; + + // Default to a "new" theme + $type = 'install'; + // Check to see if this theme is known to be installed, and has an update awaiting it. + $update_themes = get_site_transient('update_themes'); + if ( is_object($update_themes) && isset($update_themes->response) ) { + foreach ( (array)$update_themes->response as $theme_slug => $theme_info ) { + if ( $theme_slug === $api->slug ) { + $type = 'update_available'; + $update_file = $theme_slug; + break; + } + } + } + + $themes = get_themes(); + foreach ( $themes as $this_theme ) { + if ( is_array($this_theme) && $this_theme['Stylesheet'] == $api->slug ) { + if ( $this_theme['Version'] == $api->version ) { + $type = 'latest_installed'; + } elseif ( $this_theme['Version'] > $api->version ) { + $type = 'newer_installed'; + $newer_version = $this_theme['Version']; + } + break; + } + } +?> + +
    + +

    name; ?>

    +

    author); ?>

    +

    version); ?>

    + +' . __('Cancel') . ' '; + +switch ( $type ) { +default: +case 'install': + if ( current_user_can('install_themes') ) : + $buttons .= '' . __('Install Now') . ''; + endif; + break; +case 'update_available': + if ( current_user_can('update_themes') ) : + $buttons .= '' . __('Install Update Now') . ''; + endif; + break; +case 'newer_installed': + if ( current_user_can('install_themes') || current_user_can('update_themes') ) : + ?>

    +
    +
    + +

    + +
    +

    + +name = $current_theme; + $ct->title = $themes[$current_theme]['Title']; + $ct->version = $themes[$current_theme]['Version']; + $ct->parent_theme = $themes[$current_theme]['Parent Theme']; + $ct->template_dir = $themes[$current_theme]['Template Dir']; + $ct->stylesheet_dir = $themes[$current_theme]['Stylesheet Dir']; + $ct->template = $themes[$current_theme]['Template']; + $ct->stylesheet = $themes[$current_theme]['Stylesheet']; + $ct->screenshot = $themes[$current_theme]['Screenshot']; + $ct->description = $themes[$current_theme]['Description']; + $ct->author = $themes[$current_theme]['Author']; + $ct->tags = $themes[$current_theme]['Tags']; + $ct->theme_root = $themes[$current_theme]['Theme Root']; + $ct->theme_root_uri = $themes[$current_theme]['Theme Root URI']; + return $ct; +} + +/** + * Remove a theme + * + * @since 2.8.0 + * + * @param string $template Template directory of the theme to delete + * @param string $redirect Redirect to page when complete. + * @return mixed + */ +function delete_theme($template, $redirect = '') { + global $wp_filesystem; + + if ( empty($template) ) + return false; + + ob_start(); + if ( empty( $redirect ) ) + $redirect = wp_nonce_url('themes.php?action=delete&template=' . $template, 'delete-theme_' . $template); + if ( false === ($credentials = request_filesystem_credentials($redirect)) ) { + $data = ob_get_contents(); + ob_end_clean(); + if ( ! empty($data) ){ + include_once( ABSPATH . 'wp-admin/admin-header.php'); + echo $data; + include( ABSPATH . 'wp-admin/admin-footer.php'); + exit; + } + return; + } + + if ( ! WP_Filesystem($credentials) ) { + request_filesystem_credentials($url, '', true); // Failed to connect, Error and request again + $data = ob_get_contents(); + ob_end_clean(); + if ( ! empty($data) ) { + include_once( ABSPATH . 'wp-admin/admin-header.php'); + echo $data; + include( ABSPATH . 'wp-admin/admin-footer.php'); + exit; + } + return; + } + + + if ( ! is_object($wp_filesystem) ) + return new WP_Error('fs_unavailable', __('Could not access filesystem.')); + + if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) + return new WP_Error('fs_error', __('Filesystem error.'), $wp_filesystem->errors); + + //Get the base plugin folder + $themes_dir = $wp_filesystem->wp_themes_dir(); + if ( empty($themes_dir) ) + return new WP_Error('fs_no_themes_dir', __('Unable to locate WordPress theme directory.')); + + $themes_dir = trailingslashit( $themes_dir ); + $theme_dir = trailingslashit($themes_dir . $template); + $deleted = $wp_filesystem->delete($theme_dir, true); + + if ( ! $deleted ) + return new WP_Error('could_not_remove_theme', sprintf(__('Could not fully remove the theme %s.'), $template) ); + + // Force refresh of theme update information + delete_site_transient('update_themes'); + + return true; +} + +/** + * {@internal Missing Short Description}} + * + * @since 1.5.0 + * + * @return unknown + */ +function get_broken_themes() { + global $wp_broken_themes; + + get_themes(); + return $wp_broken_themes; +} + +/** + * Get the allowed themes for the current blog. + * + * @since 3.0.0 + * + * @uses get_themes() + * @uses current_theme_info() + * @uses get_site_allowed_themes() + * @uses wpmu_get_blog_allowedthemes + * + * @return array $themes Array of allowed themes. + */ +function get_allowed_themes() { + if ( !is_multisite() ) + return get_themes(); + + $themes = get_themes(); + $ct = current_theme_info(); + $allowed_themes = apply_filters("allowed_themes", get_site_allowed_themes() ); + if ( $allowed_themes == false ) + $allowed_themes = array(); + + $blog_allowed_themes = wpmu_get_blog_allowedthemes(); + if ( is_array( $blog_allowed_themes ) ) + $allowed_themes = array_merge( $allowed_themes, $blog_allowed_themes ); + + if ( isset( $allowed_themes[ esc_html( $ct->stylesheet ) ] ) == false ) + $allowed_themes[ esc_html( $ct->stylesheet ) ] = true; + + reset( $themes ); + foreach ( $themes as $key => $theme ) { + if ( isset( $allowed_themes[ esc_html( $theme[ 'Stylesheet' ] ) ] ) == false ) + unset( $themes[ $key ] ); + } + reset( $themes ); + + return $themes; +} + +/** + * Get the Page Templates available in this theme + * + * @since 1.5.0 + * + * @return array Key is the template name, value is the filename of the template + */ +function get_page_templates() { + $themes = get_themes(); + $theme = get_current_theme(); + $templates = $themes[$theme]['Template Files']; + $page_templates = array(); + + if ( is_array( $templates ) ) { + $base = array( trailingslashit(get_template_directory()), trailingslashit(get_stylesheet_directory()) ); + + foreach ( $templates as $template ) { + $basename = str_replace($base, '', $template); + + // don't allow template files in subdirectories + if ( false !== strpos($basename, '/') ) + continue; + + if ( 'functions.php' == $basename ) + continue; + + $template_data = implode( '', file( $template )); + + $name = ''; + if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name ) ) + $name = _cleanup_header_comment($name[1]); + + if ( !empty( $name ) ) { + $page_templates[trim( $name )] = $basename; + } + } + } + + return $page_templates; +} + +/** + * Tidies a filename for url display by the theme editor. + * + * @since 2.9.0 + * @access private + * + * @param string $fullpath Full path to the theme file + * @param string $containingfolder Path of the theme parent folder + * @return string + */ +function _get_template_edit_filename($fullpath, $containingfolder) { + return str_replace(dirname(dirname( $containingfolder )) , '', $fullpath); +} + +/** + * Check if there is an update for a theme available. + * + * Will display link, if there is an update available. + * + * @since 2.7.0 + * + * @param object $theme Theme data object. + * @return bool False if no valid info was passed. + */ +function theme_update_available( $theme ) { + static $themes_update; + + if ( !current_user_can('update_themes' ) ) + return; + + if ( !isset($themes_update) ) + $themes_update = get_site_transient('update_themes'); + + if ( is_object($theme) && isset($theme->stylesheet) ) + $stylesheet = $theme->stylesheet; + elseif ( is_array($theme) && isset($theme['Stylesheet']) ) + $stylesheet = $theme['Stylesheet']; + else + return false; //No valid info passed. + + if ( isset($themes_update->response[ $stylesheet ]) ) { + $update = $themes_update->response[ $stylesheet ]; + $theme_name = is_object($theme) ? $theme->name : (is_array($theme) ? $theme['Name'] : ''); + $details_url = add_query_arg(array('TB_iframe' => 'true', 'width' => 1024, 'height' => 800), $update['url']); //Theme browser inside WP? replace this, Also, theme preview JS will override this on the available list. + $update_url = wp_nonce_url('update.php?action=upgrade-theme&theme=' . urlencode($stylesheet), 'upgrade-theme_' . $stylesheet); + $update_onclick = 'onclick="if ( confirm(\'' . esc_js( __("Updating this theme will lose any customizations you have made. 'Cancel' to stop, 'OK' to update.") ) . '\') ) {return true;}return false;"'; + + if ( !is_multisite() ) { + if ( ! current_user_can('update_themes') ) + printf( '

    ' . __('There is a new version of %1$s available. View version %3$s details.') . '

    ', $theme_name, $details_url, $update['new_version']); + else if ( empty($update['package']) ) + printf( '

    ' . __('There is a new version of %1$s available. View version %3$s details. Automatic update is unavailable for this theme.') . '

    ', $theme_name, $details_url, $update['new_version']); + else + printf( '

    ' . __('There is a new version of %1$s available. View version %3$s details or update automatically.') . '

    ', $theme_name, $details_url, $update['new_version'], $update_url, $update_onclick ); + } + } +} + +/** + * Retrieve list of WordPress theme features (aka theme tags) + * + * @since 3.1.0 + * + * @return array Array of features keyed by category with translations keyed by slug. + */ +function get_theme_feature_list() { + // Hard-coded list is used if api not accessible. + $features = array( + __('Colors') => array( + 'black' => __( 'Black' ), + 'blue' => __( 'Blue' ), + 'brown' => __( 'Brown' ), + 'gray' => __( 'Gray' ), + 'green' => __( 'Green' ), + 'orange' => __( 'Orange' ), + 'pink' => __( 'Pink' ), + 'purple' => __( 'Purple' ), + 'red' => __( 'Red' ), + 'silver' => __( 'Silver' ), + 'tan' => __( 'Tan' ), + 'white' => __( 'White' ), + 'yellow' => __( 'Yellow' ), + 'dark' => __( 'Dark' ), + 'light' => __( 'Light ') + ), + + __('Columns') => array( + 'one-column' => __( 'One Column' ), + 'two-columns' => __( 'Two Columns' ), + 'three-columns' => __( 'Three Columns' ), + 'four-columns' => __( 'Four Columns' ), + 'left-sidebar' => __( 'Left Sidebar' ), + 'right-sidebar' => __( 'Right Sidebar' ) + ), + + __('Width') => array( + 'fixed-width' => __( 'Fixed Width' ), + 'flexible-width' => __( 'Flexible Width' ) + ), + + __( 'Features' ) => array( + 'blavatar' => __( 'Blavatar' ), + 'buddypress' => __( 'BuddyPress' ), + 'custom-background' => __( 'Custom Background' ), + 'custom-colors' => __( 'Custom Colors' ), + 'custom-header' => __( 'Custom Header' ), + 'custom-menu' => __( 'Custom Menu' ), + 'editor-style' => __( 'Editor Style' ), + 'featured-image-header' => __( 'Featured Image Header' ), + 'featured-images' => __( 'Featured Images' ), + 'front-page-post-form' => __( 'Front Page Posting' ), + 'full-width-template' => __( 'Full Width Template' ), + 'microformats' => __( 'Microformats' ), + 'post-formats' => __( 'Post Formats' ), + 'rtl-language-support' => __( 'RTL Language Support' ), + 'sticky-post' => __( 'Sticky Post' ), + 'theme-options' => __( 'Theme Options' ), + 'threaded-comments' => __( 'Threaded Comments' ), + 'translation-ready' => __( 'Translation Ready' ) + ), + + __( 'Subject' ) => array( + 'holiday' => __( 'Holiday' ), + 'photoblogging' => __( 'Photoblogging' ), + 'seasonal' => __( 'Seasonal' ) + ) + ); + + if ( !current_user_can('install_themes') ) + return $features; + + if ( !$feature_list = get_site_transient( 'wporg_theme_feature_list' ) ) + set_site_transient( 'wporg_theme_feature_list', array( ), 10800); + + if ( !$feature_list ) { + $feature_list = themes_api( 'feature_list', array( ) ); + if ( is_wp_error( $feature_list ) ) + return $features; + } + + if ( !$feature_list ) + return $features; + + set_site_transient( 'wporg_theme_feature_list', $feature_list, 10800 ); + + $category_translations = array( 'Colors' => __('Colors'), 'Columns' => __('Columns'), 'Width' => __('Width'), + 'Features' => __('Features'), 'Subject' => __('Subject') ); + + // Loop over the wporg canonical list and apply translations + $wporg_features = array(); + foreach ( (array) $feature_list as $feature_category => $feature_items ) { + if ( isset($category_translations[$feature_category]) ) + $feature_category = $category_translations[$feature_category]; + $wporg_features[$feature_category] = array(); + + foreach ( $feature_items as $feature ) { + if ( isset($features[$feature_category][$feature]) ) + $wporg_features[$feature_category][$feature] = $features[$feature_category][$feature]; + else + $wporg_features[$feature_category][$feature] = $feature; + } + } + + return $wporg_features; +} + +/** + * Retrieve theme installer pages from WordPress Themes API. + * + * It is possible for a theme to override the Themes API result with three + * filters. Assume this is for themes, which can extend on the Theme Info to + * offer more choices. This is very powerful and must be used with care, when + * overridding the filters. + * + * The first filter, 'themes_api_args', is for the args and gives the action as + * the second parameter. The hook for 'themes_api_args' must ensure that an + * object is returned. + * + * The second filter, 'themes_api', is the result that would be returned. + * + * @since 2.8.0 + * + * @param string $action + * @param array|object $args Optional. Arguments to serialize for the Theme Info API. + * @return mixed + */ +function themes_api($action, $args = null) { + + if ( is_array($args) ) + $args = (object)$args; + + if ( !isset($args->per_page) ) + $args->per_page = 24; + + $args = apply_filters('themes_api_args', $args, $action); //NOTE: Ensure that an object is returned via this filter. + $res = apply_filters('themes_api', false, $action, $args); //NOTE: Allows a theme to completely override the builtin WordPress.org API. + + if ( ! $res ) { + $request = wp_remote_post('http://api.wordpress.org/themes/info/1.0/', array( 'body' => array('action' => $action, 'request' => serialize($args))) ); + if ( is_wp_error($request) ) { + $res = new WP_Error('themes_api_failed', __('An Unexpected HTTP Error occurred during the API request.'), $request->get_error_message() ); + } else { + $res = unserialize( wp_remote_retrieve_body( $request ) ); + if ( ! $res ) + $res = new WP_Error('themes_api_failed', __('An unknown error occurred.'), wp_remote_retrieve_body( $request ) ); + } + } + //var_dump(array($args, $res)); + return apply_filters('themes_api_result', $res, $action, $args); +} + +?> diff --git a/src/wp-admin/includes/update-core.php b/src/wp-admin/includes/update-core.php new file mode 100644 index 0000000..d44ffb2 --- /dev/null +++ b/src/wp-admin/includes/update-core.php @@ -0,0 +1,522 @@ + Introduced version + * Directories should be noted by suffixing it with a trailing slash (/) + * + * @since 3.2.0 + * @global array $_new_bundled_files + * @var array + * @name $_new_bundled_files + */ +global $_new_bundled_files; + +$_new_bundled_files = array( +'plugins/akismet/' => '2.0', +'themes/twentyten/' => '3.0', +'themes/twentyeleven/' => '3.2' +); + +/** + * Upgrade the core of WordPress. + * + * This will create a .maintenance file at the base of the WordPress directory + * to ensure that people can not access the web site, when the files are being + * copied to their locations. + * + * The files in the {@link $_old_files} list will be removed and the new files + * copied from the zip file after the database is upgraded. + * + * The files in the {@link $_new_bundled_files} list will be added to the installation + * if the version is greater than or equal to the old version being upgraded. + * + * The steps for the upgrader for after the new release is downloaded and + * unzipped is: + * 1. Test unzipped location for select files to ensure that unzipped worked. + * 2. Create the .maintenance file in current WordPress base. + * 3. Copy new WordPress directory over old WordPress files. + * 4. Upgrade WordPress to new version. + * 4.1. Copy all files/folders other than wp-content + * 4.2. Copy any language files to WP_LANG_DIR (which may differ from WP_CONTENT_DIR + * 4.3. Copy any new bundled themes/plugins to their respective locations + * 5. Delete new WordPress directory path. + * 6. Delete .maintenance file. + * 7. Remove old files. + * 8. Delete 'update_core' option. + * + * There are several areas of failure. For instance if PHP times out before step + * 6, then you will not be able to access any portion of your site. Also, since + * the upgrade will not continue where it left off, you will not be able to + * automatically remove old files and remove the 'update_core' option. This + * isn't that bad. + * + * If the copy of the new WordPress over the old fails, then the worse is that + * the new WordPress directory will remain. + * + * If it is assumed that every file will be copied over, including plugins and + * themes, then if you edit the default theme, you should rename it, so that + * your changes remain. + * + * @since 2.7.0 + * + * @param string $from New release unzipped path. + * @param string $to Path to old WordPress installation. + * @return WP_Error|null WP_Error on failure, null on success. + */ +function update_core($from, $to) { + global $wp_filesystem, $_old_files, $_new_bundled_files, $wpdb; + + @set_time_limit( 300 ); + + $php_version = phpversion(); + $mysql_version = $wpdb->db_version(); + $required_php_version = '5.2.4'; + $required_mysql_version = '5.0'; + $wp_version = '3.2.1'; + $php_compat = version_compare( $php_version, $required_php_version, '>=' ); + $mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' ); + + if ( !$mysql_compat || !$php_compat ) + $wp_filesystem->delete($from, true); + + if ( !$mysql_compat && !$php_compat ) + return new WP_Error( 'php_mysql_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version ) ); + elseif ( !$php_compat ) + return new WP_Error( 'php_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s.'), $wp_version, $required_php_version, $php_version ) ); + elseif ( !$mysql_compat ) + return new WP_Error( 'mysql_not_compatible', sprintf( __('The update cannot be installed because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.'), $wp_version, $required_mysql_version, $mysql_version ) ); + + // Sanity check the unzipped distribution + apply_filters('update_feedback', __('Verifying the unpacked files…')); + $distro = ''; + $roots = array( '/wordpress/', '/wordpress-mu/' ); + foreach( $roots as $root ) { + if ( $wp_filesystem->exists($from . $root . 'readme.html') && $wp_filesystem->exists($from . $root . 'wp-includes/version.php') ) { + $distro = $root; + break; + } + } + if ( !$distro ) { + $wp_filesystem->delete($from, true); + return new WP_Error('insane_distro', __('The update could not be unpacked') ); + } + + apply_filters('update_feedback', __('Installing the latest version…')); + + // Create maintenance file to signal that we are upgrading + $maintenance_string = ''; + $maintenance_file = $to . '.maintenance'; + $wp_filesystem->delete($maintenance_file); + $wp_filesystem->put_contents($maintenance_file, $maintenance_string, FS_CHMOD_FILE); + + // Copy new versions of WP files into place. + $result = _copy_dir($from . $distro, $to, array('wp-content') ); + + // Custom Content Directory needs updating now. + // Copy Languages + if ( !is_wp_error($result) && $wp_filesystem->is_dir($from . $distro . 'wp-content/languages') ) { + if ( WP_LANG_DIR != ABSPATH . WPINC . '/languages' || @is_dir(WP_LANG_DIR) ) + $lang_dir = WP_LANG_DIR; + else + $lang_dir = WP_CONTENT_DIR . '/languages'; + + if ( !@is_dir($lang_dir) && 0 === strpos($lang_dir, ABSPATH) ) { // Check the language directory exists first + $wp_filesystem->mkdir($to . str_replace($lang_dir, ABSPATH, ''), FS_CHMOD_DIR); // If it's within the ABSPATH we can handle it here, otherwise they're out of luck. + clearstatcache(); // for FTP, Need to clear the stat cache + } + + if ( @is_dir($lang_dir) ) { + $wp_lang_dir = $wp_filesystem->find_folder($lang_dir); + if ( $wp_lang_dir ) + $result = copy_dir($from . $distro . 'wp-content/languages/', $wp_lang_dir); + } + } + + // Copy New bundled plugins & themes + // This gives us the ability to install new plugins & themes bundled with future versions of WordPress whilst avoiding the re-install upon upgrade issue. + if ( !is_wp_error($result) && ( ! defined('CORE_UPGRADE_SKIP_NEW_BUNDLED') || ! CORE_UPGRADE_SKIP_NEW_BUNDLED ) ) { + $old_version = $GLOBALS['wp_version']; // $wp_version in local scope == new version + foreach ( (array) $_new_bundled_files as $file => $introduced_version ) { + // If $introduced version is greater than what the site was previously running + if ( version_compare($introduced_version, $old_version, '>') ) { + $directory = ('/' == $file[ strlen($file)-1 ]); + list($type, $filename) = explode('/', $file, 2); + + if ( 'plugins' == $type ) + $dest = $wp_filesystem->wp_plugins_dir(); + elseif ( 'themes' == $type ) + $dest = trailingslashit($wp_filesystem->wp_themes_dir()); // Back-compat, ::wp_themes_dir() did not return trailingslash'd pre-3.2 + else + continue; + + if ( ! $directory ) { + if ( $wp_filesystem->exists($dest . $filename) ) + continue; + + if ( ! $wp_filesystem->copy($from . $distro . 'wp-content/' . $file, $dest . $filename, FS_CHMOD_FILE) ) + $result = new WP_Error('copy_failed', __('Could not copy file.'), $dest . $filename); + } else { + if ( $wp_filesystem->is_dir($dest . $filename) ) + continue; + + $wp_filesystem->mkdir($dest . $filename, FS_CHMOD_DIR); + $_result = copy_dir( $from . $distro . 'wp-content/' . $file, $dest . $filename); + if ( is_wp_error($_result) ) //If a error occurs partway through this final step, keep the error flowing through, but keep process going. + $result = $_result; + } + } + } //end foreach + } + + // Handle $result error from the above blocks + if ( is_wp_error($result) ) { + $wp_filesystem->delete($maintenance_file); + $wp_filesystem->delete($from, true); + return $result; + } + + // Remove old files + foreach ( $_old_files as $old_file ) { + $old_file = $to . $old_file; + if ( !$wp_filesystem->exists($old_file) ) + continue; + $wp_filesystem->delete($old_file, true); + } + + // Upgrade DB with separate request + apply_filters('update_feedback', __('Upgrading database…')); + $db_upgrade_url = admin_url('upgrade.php?step=upgrade_db'); + wp_remote_post($db_upgrade_url, array('timeout' => 60)); + + // Remove working directory + $wp_filesystem->delete($from, true); + + // Force refresh of update information + if ( function_exists('delete_site_transient') ) + delete_site_transient('update_core'); + else + delete_option('update_core'); + + // Remove maintenance file, we're done. + $wp_filesystem->delete($maintenance_file); +} + +/** + * Copies a directory from one location to another via the WordPress Filesystem Abstraction. + * Assumes that WP_Filesystem() has already been called and setup. + * + * This is a temporary function for the 3.1 -> 3.2 upgrade only and will be removed in 3.3 + * + * @ignore + * @since 3.2.0 + * @see copy_dir() + * + * @param string $from source directory + * @param string $to destination directory + * @param array $skip_list a list of files/folders to skip copying + * @return mixed WP_Error on failure, True on success. + */ +function _copy_dir($from, $to, $skip_list = array() ) { + global $wp_filesystem; + + $dirlist = $wp_filesystem->dirlist($from); + + $from = trailingslashit($from); + $to = trailingslashit($to); + + $skip_regex = ''; + foreach ( (array)$skip_list as $key => $skip_file ) + $skip_regex .= preg_quote($skip_file, '!') . '|'; + + if ( !empty($skip_regex) ) + $skip_regex = '!(' . rtrim($skip_regex, '|') . ')$!i'; + + foreach ( (array) $dirlist as $filename => $fileinfo ) { + if ( !empty($skip_regex) ) + if ( preg_match($skip_regex, $from . $filename) ) + continue; + + if ( 'f' == $fileinfo['type'] ) { + if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) { + // If copy failed, chmod file to 0644 and try again. + $wp_filesystem->chmod($to . $filename, 0644); + if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) + return new WP_Error('copy_failed', __('Could not copy file.'), $to . $filename); + } + } elseif ( 'd' == $fileinfo['type'] ) { + if ( !$wp_filesystem->is_dir($to . $filename) ) { + if ( !$wp_filesystem->mkdir($to . $filename, FS_CHMOD_DIR) ) + return new WP_Error('mkdir_failed', __('Could not create directory.'), $to . $filename); + } + $result = _copy_dir($from . $filename, $to . $filename, $skip_list); + if ( is_wp_error($result) ) + return $result; + } + } + return true; +} + +?> diff --git a/src/wp-admin/includes/update.php b/src/wp-admin/includes/update.php new file mode 100644 index 0000000..202f7c4 --- /dev/null +++ b/src/wp-admin/includes/update.php @@ -0,0 +1,313 @@ + 'latest'); + return $updates[0]; +} + +/** + * Get available core updates + * + * @param array $options Set $options['dismissed'] to true to show dismissed upgrades too, + * set $options['available'] to false to skip not-dimissed updates. + * @return array Array of the update objects + */ +function get_core_updates( $options = array() ) { + $options = array_merge( array('available' => true, 'dismissed' => false ), $options ); + $dismissed = get_site_option( 'dismissed_update_core' ); + if ( !is_array( $dismissed ) ) $dismissed = array(); + $from_api = get_site_transient( 'update_core' ); + if ( empty($from_api) ) + return false; + if ( !isset( $from_api->updates ) || !is_array( $from_api->updates ) ) return false; + $updates = $from_api->updates; + if ( !is_array( $updates ) ) return false; + $result = array(); + foreach($updates as $update) { + if ( array_key_exists( $update->current.'|'.$update->locale, $dismissed ) ) { + if ( $options['dismissed'] ) { + $update->dismissed = true; + $result[]= $update; + } + } else { + if ( $options['available'] ) { + $update->dismissed = false; + $result[]= $update; + } + } + } + return $result; +} + +function dismiss_core_update( $update ) { + $dismissed = get_site_option( 'dismissed_update_core' ); + $dismissed[ $update->current.'|'.$update->locale ] = true; + return update_site_option( 'dismissed_update_core', $dismissed ); +} + +function undismiss_core_update( $version, $locale ) { + $dismissed = get_site_option( 'dismissed_update_core' ); + $key = $version.'|'.$locale; + if ( !isset( $dismissed[$key] ) ) return false; + unset( $dismissed[$key] ); + return update_site_option( 'dismissed_update_core', $dismissed ); +} + +function find_core_update( $version, $locale ) { + $from_api = get_site_transient( 'update_core' ); + if ( !is_array( $from_api->updates ) ) return false; + $updates = $from_api->updates; + foreach($updates as $update) { + if ( $update->current == $version && $update->locale == $locale ) + return $update; + } + return false; +} + +function core_update_footer( $msg = '' ) { + if ( is_multisite() && !current_user_can('update_core') ) + return false; + + if ( !current_user_can('update_core') ) + return sprintf( __( 'Version %s' ), $GLOBALS['wp_version'] ); + + $cur = get_preferred_from_update_core(); + if ( ! isset( $cur->current ) ) + $cur->current = ''; + + if ( ! isset( $cur->url ) ) + $cur->url = ''; + + if ( ! isset( $cur->response ) ) + $cur->response = ''; + + switch ( $cur->response ) { + case 'development' : + return sprintf( __( 'You are using a development version (%1$s). Cool! Please stay updated.' ), $GLOBALS['wp_version'], network_admin_url( 'update-core.php' ) ); + break; + + case 'upgrade' : + return sprintf( ''.__( 'Get Version %2$s' ).'', network_admin_url( 'update-core.php' ), $cur->current); + break; + + case 'latest' : + default : + return sprintf( __( 'Version %s' ), $GLOBALS['wp_version'] ); + break; + } +} +add_filter( 'update_footer', 'core_update_footer' ); + +function update_nag() { + if ( is_multisite() && !current_user_can('update_core') ) + return false; + + global $pagenow; + + if ( 'update-core.php' == $pagenow ) + return; + + $cur = get_preferred_from_update_core(); + + if ( ! isset( $cur->response ) || $cur->response != 'upgrade' ) + return false; + + if ( current_user_can('update_core') ) { + $msg = sprintf( __('WordPress %1$s is available! Please update now.'), $cur->current, network_admin_url( 'update-core.php' ) ); + } else { + $msg = sprintf( __('WordPress %1$s is available! Please notify the site administrator.'), $cur->current ); + } + echo "
    $msg
    "; +} +add_action( 'admin_notices', 'update_nag', 3 ); + +// Called directly from dashboard +function update_right_now_message() { + if ( is_multisite() && !current_user_can('update_core') ) + return false; + + $cur = get_preferred_from_update_core(); + + $msg = sprintf( __('You are using WordPress %s.'), $GLOBALS['wp_version'] ); + + if ( isset( $cur->response ) && $cur->response == 'upgrade' && current_user_can('update_core') ) { + $msg .= " " . sprintf( __('Update to %s'), $cur->current ? $cur->current : __( 'Latest' ) ) . ''; + } + + echo "$msg"; +} + +function get_plugin_updates() { + $all_plugins = get_plugins(); + $upgrade_plugins = array(); + $current = get_site_transient( 'update_plugins' ); + foreach ( (array)$all_plugins as $plugin_file => $plugin_data) { + if ( isset( $current->response[ $plugin_file ] ) ) { + $upgrade_plugins[ $plugin_file ] = (object) $plugin_data; + $upgrade_plugins[ $plugin_file ]->update = $current->response[ $plugin_file ]; + } + } + + return $upgrade_plugins; +} + +function wp_plugin_update_rows() { + if ( !current_user_can('update_plugins' ) ) + return; + + $plugins = get_site_transient( 'update_plugins' ); + if ( isset($plugins->response) && is_array($plugins->response) ) { + $plugins = array_keys( $plugins->response ); + foreach( $plugins as $plugin_file ) { + add_action( "after_plugin_row_$plugin_file", 'wp_plugin_update_row', 10, 2 ); + } + } +} +add_action( 'admin_init', 'wp_plugin_update_rows' ); + +function wp_plugin_update_row( $file, $plugin_data ) { + $current = get_site_transient( 'update_plugins' ); + if ( !isset( $current->response[ $file ] ) ) + return false; + + $r = $current->response[ $file ]; + + $plugins_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array()); + $plugin_name = wp_kses( $plugin_data['Name'], $plugins_allowedtags ); + + $details_url = self_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $r->slug . '&TB_iframe=true&width=600&height=800'); + + $wp_list_table = _get_list_table('WP_Plugins_List_Table'); + + if ( is_network_admin() || !is_multisite() ) { + echo '
    '; + + if ( ! current_user_can('update_plugins') ) + printf( __('There is a new version of %1$s available. View version %4$s details.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version ); + else if ( empty($r->package) ) + printf( __('There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this plugin.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version ); + else + printf( __('There is a new version of %1$s available. View version %4$s details or update automatically.'), $plugin_name, esc_url($details_url), esc_attr($plugin_name), $r->new_version, wp_nonce_url( self_admin_url('update.php?action=upgrade-plugin&plugin=') . $file, 'upgrade-plugin_' . $file) ); + + do_action( "in_plugin_update_message-$file", $plugin_data, $r ); + + echo '
    '; + } +} + +function wp_update_plugin($plugin, $feedback = '') { + if ( !empty($feedback) ) + add_filter('update_feedback', $feedback); + + include ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + $upgrader = new Plugin_Upgrader(); + return $upgrader->upgrade($plugin); +} + +function get_theme_updates() { + $themes = get_themes(); + $current = get_site_transient('update_themes'); + $update_themes = array(); + + foreach ( $themes as $theme ) { + $theme = (object) $theme; + if ( isset($current->response[ $theme->Stylesheet ]) ) { + $update_themes[$theme->Stylesheet] = $theme; + $update_themes[$theme->Stylesheet]->update = $current->response[ $theme->Stylesheet ]; + } + } + + return $update_themes; +} + +function wp_update_theme($theme, $feedback = '') { + if ( !empty($feedback) ) + add_filter('update_feedback', $feedback); + + include ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + $upgrader = new Theme_Upgrader(); + return $upgrader->upgrade($theme); +} + +function wp_theme_update_rows() { + if ( !current_user_can('update_themes' ) ) + return; + + $themes = get_site_transient( 'update_themes' ); + if ( isset($themes->response) && is_array($themes->response) ) { + $themes = array_keys( $themes->response ); + + foreach( $themes as $theme ) { + add_action( "after_theme_row_$theme", 'wp_theme_update_row', 10, 2 ); + } + } +} +add_action( 'admin_init', 'wp_theme_update_rows' ); + +function wp_theme_update_row( $theme_key, $theme ) { + $current = get_site_transient( 'update_themes' ); + if ( !isset( $current->response[ $theme_key ] ) ) + return false; + $r = $current->response[ $theme_key ]; + $themes_allowedtags = array('a' => array('href' => array(),'title' => array()),'abbr' => array('title' => array()),'acronym' => array('title' => array()),'code' => array(),'em' => array(),'strong' => array()); + $theme_name = wp_kses( $theme['Name'], $themes_allowedtags ); + + $details_url = self_admin_url("theme-install.php?tab=theme-information&theme=$theme_key&TB_iframe=true&width=600&height=400"); + + $wp_list_table = _get_list_table('WP_MS_Themes_List_Table'); + + echo '
    '; + if ( ! current_user_can('update_themes') ) + printf( __('There is a new version of %1$s available. View version %4$s details.'), $theme['Name'], esc_url($details_url), esc_attr($theme['Name']), $r->new_version ); + else if ( empty( $r['package'] ) ) + printf( __('There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this plugin.'), $theme['Name'], esc_url($details_url), esc_attr($theme['Name']), $r['new_version'] ); + else + printf( __('There is a new version of %1$s available. View version %4$s details or update automatically.'), $theme['Name'], esc_url($details_url), esc_attr($theme['Name']), $r['new_version'], wp_nonce_url( self_admin_url('update.php?action=upgrade-theme&theme=') . $theme_key, 'upgrade-theme_' . $theme_key) ); + + do_action( "in_theme_update_message-$theme_key", $theme, $r ); + + echo '
    '; +} + +function wp_update_core($current, $feedback = '') { + if ( !empty($feedback) ) + add_filter('update_feedback', $feedback); + + include ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; + $upgrader = new Core_Upgrader(); + return $upgrader->upgrade($current); + +} + +function maintenance_nag() { + global $upgrading; + if ( ! isset( $upgrading ) ) + return false; + + if ( current_user_can('update_core') ) + $msg = sprintf( __('An automated WordPress update has failed to complete - please attempt the update again now.'), 'update-core.php' ); + else + $msg = __('An automated WordPress update has failed to complete! Please notify the site administrator.'); + + echo "
    $msg
    "; +} +add_action( 'admin_notices', 'maintenance_nag' ); + +?> diff --git a/src/wp-admin/includes/upgrade.php b/src/wp-admin/includes/upgrade.php new file mode 100644 index 0000000..f29f594 --- /dev/null +++ b/src/wp-admin/includes/upgrade.php @@ -0,0 +1,2001 @@ +Note that password carefully! It is a random password that was generated just for you.'); + $user_id = wp_create_user($user_name, $user_password, $user_email); + update_user_option($user_id, 'default_password_nag', true, true); + $email_password = true; + } else if ( !$user_id ) { + // Password has been provided + $message = ''.__('Your chosen password.').''; + $user_id = wp_create_user($user_name, $user_password, $user_email); + } else { + $message = __('User already exists. Password inherited.'); + } + + $user = new WP_User($user_id); + $user->set_role('administrator'); + + wp_install_defaults($user_id); + + $wp_rewrite->flush_rules(); + + wp_new_blog_notification($blog_title, $guessurl, $user_id, ($email_password ? $user_password : __('The password you chose during the install.') ) ); + + wp_cache_flush(); + + return array('url' => $guessurl, 'user_id' => $user_id, 'password' => $user_password, 'password_message' => $message); +} +endif; + +if ( !function_exists('wp_install_defaults') ) : +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * + * @param int $user_id User ID. + */ +function wp_install_defaults($user_id) { + global $wpdb, $wp_rewrite, $current_site, $table_prefix; + + // Default category + $cat_name = __('Uncategorized'); + /* translators: Default category slug */ + $cat_slug = sanitize_title(_x('Uncategorized', 'Default category slug')); + + if ( global_terms_enabled() ) { + $cat_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM {$wpdb->sitecategories} WHERE category_nicename = %s", $cat_slug ) ); + if ( $cat_id == null ) { + $wpdb->insert( $wpdb->sitecategories, array('cat_ID' => 0, 'cat_name' => $cat_name, 'category_nicename' => $cat_slug, 'last_updated' => current_time('mysql', true)) ); + $cat_id = $wpdb->insert_id; + } + update_option('default_category', $cat_id); + } else { + $cat_id = 1; + } + + $wpdb->insert( $wpdb->terms, array('term_id' => $cat_id, 'name' => $cat_name, 'slug' => $cat_slug, 'term_group' => 0) ); + $wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $cat_id, 'taxonomy' => 'category', 'description' => '', 'parent' => 0, 'count' => 1)); + $cat_tt_id = $wpdb->insert_id; + + // Default link category + $cat_name = __('Blogroll'); + /* translators: Default link category slug */ + $cat_slug = sanitize_title(_x('Blogroll', 'Default link category slug')); + + if ( global_terms_enabled() ) { + $blogroll_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM {$wpdb->sitecategories} WHERE category_nicename = %s", $cat_slug ) ); + if ( $blogroll_id == null ) { + $wpdb->insert( $wpdb->sitecategories, array('cat_ID' => 0, 'cat_name' => $cat_name, 'category_nicename' => $cat_slug, 'last_updated' => current_time('mysql', true)) ); + $blogroll_id = $wpdb->insert_id; + } + update_option('default_link_category', $blogroll_id); + } else { + $blogroll_id = 2; + } + + $wpdb->insert( $wpdb->terms, array('term_id' => $blogroll_id, 'name' => $cat_name, 'slug' => $cat_slug, 'term_group' => 0) ); + $wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $blogroll_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 7)); + $blogroll_tt_id = $wpdb->insert_id; + + // Now drop in some default links + $default_links = array(); + $default_links[] = array( 'link_url' => 'http://codex.wordpress.org/', + 'link_name' => 'Documentation', + 'link_rss' => '', + 'link_notes' => ''); + + $default_links[] = array( 'link_url' => 'http://wordpress.org/news/', + 'link_name' => 'WordPress Blog', + 'link_rss' => 'http://wordpress.org/news/feed/', + 'link_notes' => ''); + + $default_links[] = array( 'link_url' => 'http://wordpress.org/extend/ideas/', + 'link_name' => 'Suggest Ideas', + 'link_rss' => '', + 'link_notes' =>''); + + $default_links[] = array( 'link_url' => 'http://wordpress.org/support/', + 'link_name' => 'Support Forum', + 'link_rss' => '', + 'link_notes' =>''); + + $default_links[] = array( 'link_url' => 'http://wordpress.org/extend/plugins/', + 'link_name' => 'Plugins', + 'link_rss' => '', + 'link_notes' =>''); + + $default_links[] = array( 'link_url' => 'http://wordpress.org/extend/themes/', + 'link_name' => 'Themes', + 'link_rss' => '', + 'link_notes' =>''); + + $default_links[] = array( 'link_url' => 'http://planet.wordpress.org/', + 'link_name' => 'WordPress Planet', + 'link_rss' => '', + 'link_notes' =>''); + + foreach ( $default_links as $link ) { + $wpdb->insert( $wpdb->links, $link); + $wpdb->insert( $wpdb->term_relationships, array('term_taxonomy_id' => $blogroll_tt_id, 'object_id' => $wpdb->insert_id) ); + } + + // First post + $now = date('Y-m-d H:i:s'); + $now_gmt = gmdate('Y-m-d H:i:s'); + $first_post_guid = get_option('home') . '/?p=1'; + + if ( is_multisite() ) { + $first_post = get_site_option( 'first_post' ); + + if ( empty($first_post) ) + $first_post = stripslashes( __( 'Welcome to SITE_NAME. This is your first post. Edit or delete it, then start blogging!' ) ); + + $first_post = str_replace( "SITE_URL", esc_url( network_home_url() ), $first_post ); + $first_post = str_replace( "SITE_NAME", $current_site->site_name, $first_post ); + } else { + $first_post = __('Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!'); + } + + $wpdb->insert( $wpdb->posts, array( + 'post_author' => $user_id, + 'post_date' => $now, + 'post_date_gmt' => $now_gmt, + 'post_content' => $first_post, + 'post_excerpt' => '', + 'post_title' => __('Hello world!'), + /* translators: Default post slug */ + 'post_name' => sanitize_title( _x('hello-world', 'Default post slug') ), + 'post_modified' => $now, + 'post_modified_gmt' => $now_gmt, + 'guid' => $first_post_guid, + 'comment_count' => 1, + 'to_ping' => '', + 'pinged' => '', + 'post_content_filtered' => '' + )); + $wpdb->insert( $wpdb->term_relationships, array('term_taxonomy_id' => $cat_tt_id, 'object_id' => 1) ); + + // Default comment + $first_comment_author = __('Mr WordPress'); + $first_comment_url = 'http://wordpress.org/'; + $first_comment = __('Hi, this is a comment.
    To delete a comment, just log in and view the post's comments. There you will have the option to edit or delete them.'); + if ( is_multisite() ) { + $first_comment_author = get_site_option( 'first_comment_author', $first_comment_author ); + $first_comment_url = get_site_option( 'first_comment_url', network_home_url() ); + $first_comment = get_site_option( 'first_comment', $first_comment ); + } + $wpdb->insert( $wpdb->comments, array( + 'comment_post_ID' => 1, + 'comment_author' => $first_comment_author, + 'comment_author_email' => '', + 'comment_author_url' => $first_comment_url, + 'comment_date' => $now, + 'comment_date_gmt' => $now_gmt, + 'comment_content' => $first_comment + )); + + // First Page + $first_page = sprintf( __( "This is an example page. It's different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this: + +
    Hi there! I'm a bike messenger by day, aspiring actor by night, and this is my blog. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin' caught in the rain.)
    + +...or something like this: + +
    The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickies to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.
    + +As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!" ), admin_url() ); + if ( is_multisite() ) + $first_page = get_site_option( 'first_page', $first_page ); + $first_post_guid = get_option('home') . '/?page_id=2'; + $wpdb->insert( $wpdb->posts, array( + 'post_author' => $user_id, + 'post_date' => $now, + 'post_date_gmt' => $now_gmt, + 'post_content' => $first_page, + 'post_excerpt' => '', + 'post_title' => __( 'Sample Page' ), + /* translators: Default page slug */ + 'post_name' => __( 'sample-page' ), + 'post_modified' => $now, + 'post_modified_gmt' => $now_gmt, + 'guid' => $first_post_guid, + 'post_type' => 'page', + 'to_ping' => '', + 'pinged' => '', + 'post_content_filtered' => '' + )); + $wpdb->insert( $wpdb->postmeta, array( 'post_id' => 2, 'meta_key' => '_wp_page_template', 'meta_value' => 'default' ) ); + + // Set up default widgets for default theme. + update_option( 'widget_search', array ( 2 => array ( 'title' => '' ), '_multiwidget' => 1 ) ); + update_option( 'widget_recent-posts', array ( 2 => array ( 'title' => '', 'number' => 5 ), '_multiwidget' => 1 ) ); + update_option( 'widget_recent-comments', array ( 2 => array ( 'title' => '', 'number' => 5 ), '_multiwidget' => 1 ) ); + update_option( 'widget_archives', array ( 2 => array ( 'title' => '', 'count' => 0, 'dropdown' => 0 ), '_multiwidget' => 1 ) ); + update_option( 'widget_categories', array ( 2 => array ( 'title' => '', 'count' => 0, 'hierarchical' => 0, 'dropdown' => 0 ), '_multiwidget' => 1 ) ); + update_option( 'widget_meta', array ( 2 => array ( 'title' => '' ), '_multiwidget' => 1 ) ); + update_option( 'sidebars_widgets', array ( 'wp_inactive_widgets' => array ( ), 'primary-widget-area' => array ( 0 => 'search-2', 1 => 'recent-posts-2', 2 => 'recent-comments-2', 3 => 'archives-2', 4 => 'categories-2', 5 => 'meta-2', ), 'secondary-widget-area' => array ( ), 'first-footer-widget-area' => array ( ), 'second-footer-widget-area' => array ( ), 'third-footer-widget-area' => array ( ), 'fourth-footer-widget-area' => array ( ), 'array_version' => 3 ) ); + + if ( is_multisite() ) { + // Flush rules to pick up the new page. + $wp_rewrite->init(); + $wp_rewrite->flush_rules(); + + $user = new WP_User($user_id); + $wpdb->update( $wpdb->options, array('option_value' => $user->user_email), array('option_name' => 'admin_email') ); + + // Remove all perms except for the login user. + $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id != %d AND meta_key = %s", $user_id, $table_prefix.'user_level') ); + $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id != %d AND meta_key = %s", $user_id, $table_prefix.'capabilities') ); + + // Delete any caps that snuck into the previously active blog. (Hardcoded to blog 1 for now.) TODO: Get previous_blog_id. + if ( !is_super_admin( $user_id ) && $user_id != 1 ) + $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d AND meta_key = %s", $user_id, $wpdb->base_prefix.'1_capabilities') ); + } +} +endif; + +if ( !function_exists('wp_new_blog_notification') ) : +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * + * @param string $blog_title Blog title. + * @param string $blog_url Blog url. + * @param int $user_id User ID. + * @param string $password User's Password. + */ +function wp_new_blog_notification($blog_title, $blog_url, $user_id, $password) { + $user = new WP_User($user_id); + $email = $user->user_email; + $name = $user->user_login; + $message = sprintf(__("Your new WordPress site has been successfully set up at: + +%1\$s + +You can log in to the administrator account with the following information: + +Username: %2\$s +Password: %3\$s + +We hope you enjoy your new site. Thanks! + +--The WordPress Team +http://wordpress.org/ +"), $blog_url, $name, $password); + + @wp_mail($email, __('New WordPress Site'), $message); +} +endif; + +if ( !function_exists('wp_upgrade') ) : +/** + * Run WordPress Upgrade functions. + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + * + * @return null + */ +function wp_upgrade() { + global $wp_current_db_version, $wp_db_version, $wpdb; + + $wp_current_db_version = __get_option('db_version'); + + // We are up-to-date. Nothing to do. + if ( $wp_db_version == $wp_current_db_version ) + return; + + if ( ! is_blog_installed() ) + return; + + wp_check_mysql_version(); + wp_cache_flush(); + pre_schema_upgrade(); + make_db_current_silent(); + upgrade_all(); + if ( is_multisite() && is_main_site() ) + upgrade_network(); + wp_cache_flush(); + + if ( is_multisite() ) { + if ( $wpdb->get_row( "SELECT blog_id FROM {$wpdb->blog_versions} WHERE blog_id = '{$wpdb->blogid}'" ) ) + $wpdb->query( "UPDATE {$wpdb->blog_versions} SET db_version = '{$wp_db_version}' WHERE blog_id = '{$wpdb->blogid}'" ); + else + $wpdb->query( "INSERT INTO {$wpdb->blog_versions} ( `blog_id` , `db_version` , `last_updated` ) VALUES ( '{$wpdb->blogid}', '{$wp_db_version}', NOW());" ); + } +} +endif; + +/** + * Functions to be called in install and upgrade scripts. + * + * {@internal Missing Long Description}} + * + * @since 1.0.1 + */ +function upgrade_all() { + global $wp_current_db_version, $wp_db_version, $wp_rewrite; + $wp_current_db_version = __get_option('db_version'); + + // We are up-to-date. Nothing to do. + if ( $wp_db_version == $wp_current_db_version ) + return; + + // If the version is not set in the DB, try to guess the version. + if ( empty($wp_current_db_version) ) { + $wp_current_db_version = 0; + + // If the template option exists, we have 1.5. + $template = __get_option('template'); + if ( !empty($template) ) + $wp_current_db_version = 2541; + } + + if ( $wp_current_db_version < 6039 ) + upgrade_230_options_table(); + + populate_options(); + + if ( $wp_current_db_version < 2541 ) { + upgrade_100(); + upgrade_101(); + upgrade_110(); + upgrade_130(); + } + + if ( $wp_current_db_version < 3308 ) + upgrade_160(); + + if ( $wp_current_db_version < 4772 ) + upgrade_210(); + + if ( $wp_current_db_version < 4351 ) + upgrade_old_slugs(); + + if ( $wp_current_db_version < 5539 ) + upgrade_230(); + + if ( $wp_current_db_version < 6124 ) + upgrade_230_old_tables(); + + if ( $wp_current_db_version < 7499 ) + upgrade_250(); + + if ( $wp_current_db_version < 7935 ) + upgrade_252(); + + if ( $wp_current_db_version < 8201 ) + upgrade_260(); + + if ( $wp_current_db_version < 8989 ) + upgrade_270(); + + if ( $wp_current_db_version < 10360 ) + upgrade_280(); + + if ( $wp_current_db_version < 11958 ) + upgrade_290(); + + if ( $wp_current_db_version < 15260 ) + upgrade_300(); + + maybe_disable_automattic_widgets(); + + update_option( 'db_version', $wp_db_version ); + update_option( 'db_upgraded', true ); +} + +/** + * Execute changes made in WordPress 1.0. + * + * @since 1.0.0 + */ +function upgrade_100() { + global $wpdb; + + // Get the title and ID of every post, post_name to check if it already has a value + $posts = $wpdb->get_results("SELECT ID, post_title, post_name FROM $wpdb->posts WHERE post_name = ''"); + if ($posts) { + foreach($posts as $post) { + if ('' == $post->post_name) { + $newtitle = sanitize_title($post->post_title); + $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_name = %s WHERE ID = %d", $newtitle, $post->ID) ); + } + } + } + + $categories = $wpdb->get_results("SELECT cat_ID, cat_name, category_nicename FROM $wpdb->categories"); + foreach ($categories as $category) { + if ('' == $category->category_nicename) { + $newtitle = sanitize_title($category->cat_name); + $wpdb>update( $wpdb->categories, array('category_nicename' => $newtitle), array('cat_ID' => $category->cat_ID) ); + } + } + + $wpdb->query("UPDATE $wpdb->options SET option_value = REPLACE(option_value, 'wp-links/links-images/', 'wp-images/links/') + WHERE option_name LIKE 'links_rating_image%' + AND option_value LIKE 'wp-links/links-images/%'"); + + $done_ids = $wpdb->get_results("SELECT DISTINCT post_id FROM $wpdb->post2cat"); + if ($done_ids) : + foreach ($done_ids as $done_id) : + $done_posts[] = $done_id->post_id; + endforeach; + $catwhere = ' AND ID NOT IN (' . implode(',', $done_posts) . ')'; + else: + $catwhere = ''; + endif; + + $allposts = $wpdb->get_results("SELECT ID, post_category FROM $wpdb->posts WHERE post_category != '0' $catwhere"); + if ($allposts) : + foreach ($allposts as $post) { + // Check to see if it's already been imported + $cat = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->post2cat WHERE post_id = %d AND category_id = %d", $post->ID, $post->post_category) ); + if (!$cat && 0 != $post->post_category) { // If there's no result + $wpdb->insert( $wpdb->post2cat, array('post_id' => $post->ID, 'category_id' => $post->post_category) ); + } + } + endif; +} + +/** + * Execute changes made in WordPress 1.0.1. + * + * @since 1.0.1 + */ +function upgrade_101() { + global $wpdb; + + // Clean up indices, add a few + add_clean_index($wpdb->posts, 'post_name'); + add_clean_index($wpdb->posts, 'post_status'); + add_clean_index($wpdb->categories, 'category_nicename'); + add_clean_index($wpdb->comments, 'comment_approved'); + add_clean_index($wpdb->comments, 'comment_post_ID'); + add_clean_index($wpdb->links , 'link_category'); + add_clean_index($wpdb->links , 'link_visible'); +} + +/** + * Execute changes made in WordPress 1.2. + * + * @since 1.2.0 + */ +function upgrade_110() { + global $wpdb; + + // Set user_nicename. + $users = $wpdb->get_results("SELECT ID, user_nickname, user_nicename FROM $wpdb->users"); + foreach ($users as $user) { + if ('' == $user->user_nicename) { + $newname = sanitize_title($user->user_nickname); + $wpdb->update( $wpdb->users, array('user_nicename' => $newname), array('ID' => $user->ID) ); + } + } + + $users = $wpdb->get_results("SELECT ID, user_pass from $wpdb->users"); + foreach ($users as $row) { + if (!preg_match('/^[A-Fa-f0-9]{32}$/', $row->user_pass)) { + $wpdb->update( $wpdb->users, array('user_pass' => md5($row->user_pass)), array('ID' => $row->ID) ); + } + } + + // Get the GMT offset, we'll use that later on + $all_options = get_alloptions_110(); + + $time_difference = $all_options->time_difference; + + $server_time = time()+date('Z'); + $weblogger_time = $server_time + $time_difference*3600; + $gmt_time = time(); + + $diff_gmt_server = ($gmt_time - $server_time) / 3600; + $diff_weblogger_server = ($weblogger_time - $server_time) / 3600; + $diff_gmt_weblogger = $diff_gmt_server - $diff_weblogger_server; + $gmt_offset = -$diff_gmt_weblogger; + + // Add a gmt_offset option, with value $gmt_offset + add_option('gmt_offset', $gmt_offset); + + // Check if we already set the GMT fields (if we did, then + // MAX(post_date_gmt) can't be '0000-00-00 00:00:00' + // I just slapped myself silly for not thinking about it earlier + $got_gmt_fields = ! ($wpdb->get_var("SELECT MAX(post_date_gmt) FROM $wpdb->posts") == '0000-00-00 00:00:00'); + + if (!$got_gmt_fields) { + + // Add or substract time to all dates, to get GMT dates + $add_hours = intval($diff_gmt_weblogger); + $add_minutes = intval(60 * ($diff_gmt_weblogger - $add_hours)); + $wpdb->query("UPDATE $wpdb->posts SET post_date_gmt = DATE_ADD(post_date, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE)"); + $wpdb->query("UPDATE $wpdb->posts SET post_modified = post_date"); + $wpdb->query("UPDATE $wpdb->posts SET post_modified_gmt = DATE_ADD(post_modified, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE) WHERE post_modified != '0000-00-00 00:00:00'"); + $wpdb->query("UPDATE $wpdb->comments SET comment_date_gmt = DATE_ADD(comment_date, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE)"); + $wpdb->query("UPDATE $wpdb->users SET user_registered = DATE_ADD(user_registered, INTERVAL '$add_hours:$add_minutes' HOUR_MINUTE)"); + } + +} + +/** + * Execute changes made in WordPress 1.5. + * + * @since 1.5.0 + */ +function upgrade_130() { + global $wpdb; + + // Remove extraneous backslashes. + $posts = $wpdb->get_results("SELECT ID, post_title, post_content, post_excerpt, guid, post_date, post_name, post_status, post_author FROM $wpdb->posts"); + if ($posts) { + foreach($posts as $post) { + $post_content = addslashes(deslash($post->post_content)); + $post_title = addslashes(deslash($post->post_title)); + $post_excerpt = addslashes(deslash($post->post_excerpt)); + if ( empty($post->guid) ) + $guid = get_permalink($post->ID); + else + $guid = $post->guid; + + $wpdb->update( $wpdb->posts, compact('post_title', 'post_content', 'post_excerpt', 'guid'), array('ID' => $post->ID) ); + + } + } + + // Remove extraneous backslashes. + $comments = $wpdb->get_results("SELECT comment_ID, comment_author, comment_content FROM $wpdb->comments"); + if ($comments) { + foreach($comments as $comment) { + $comment_content = deslash($comment->comment_content); + $comment_author = deslash($comment->comment_author); + + $wpdb->update($wpdb->comments, compact('comment_content', 'comment_author'), array('comment_ID' => $comment->comment_ID) ); + } + } + + // Remove extraneous backslashes. + $links = $wpdb->get_results("SELECT link_id, link_name, link_description FROM $wpdb->links"); + if ($links) { + foreach($links as $link) { + $link_name = deslash($link->link_name); + $link_description = deslash($link->link_description); + + $wpdb->update( $wpdb->links, compact('link_name', 'link_description'), array('link_id' => $link->link_id) ); + } + } + + $active_plugins = __get_option('active_plugins'); + + // If plugins are not stored in an array, they're stored in the old + // newline separated format. Convert to new format. + if ( !is_array( $active_plugins ) ) { + $active_plugins = explode("\n", trim($active_plugins)); + update_option('active_plugins', $active_plugins); + } + + // Obsolete tables + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optionvalues'); + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optiontypes'); + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optiongroups'); + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'optiongroup_options'); + + // Update comments table to use comment_type + $wpdb->query("UPDATE $wpdb->comments SET comment_type='trackback', comment_content = REPLACE(comment_content, '', '') WHERE comment_content LIKE '%'"); + $wpdb->query("UPDATE $wpdb->comments SET comment_type='pingback', comment_content = REPLACE(comment_content, '', '') WHERE comment_content LIKE '%'"); + + // Some versions have multiple duplicate option_name rows with the same values + $options = $wpdb->get_results("SELECT option_name, COUNT(option_name) AS dupes FROM `$wpdb->options` GROUP BY option_name"); + foreach ( $options as $option ) { + if ( 1 != $option->dupes ) { // Could this be done in the query? + $limit = $option->dupes - 1; + $dupe_ids = $wpdb->get_col( $wpdb->prepare("SELECT option_id FROM $wpdb->options WHERE option_name = %s LIMIT %d", $option->option_name, $limit) ); + if ( $dupe_ids ) { + $dupe_ids = join($dupe_ids, ','); + $wpdb->query("DELETE FROM $wpdb->options WHERE option_id IN ($dupe_ids)"); + } + } + } + + make_site_theme(); +} + +/** + * Execute changes made in WordPress 2.0. + * + * @since 2.0.0 + */ +function upgrade_160() { + global $wpdb, $wp_current_db_version; + + populate_roles_160(); + + $users = $wpdb->get_results("SELECT * FROM $wpdb->users"); + foreach ( $users as $user ) : + if ( !empty( $user->user_firstname ) ) + update_user_meta( $user->ID, 'first_name', $wpdb->escape($user->user_firstname) ); + if ( !empty( $user->user_lastname ) ) + update_user_meta( $user->ID, 'last_name', $wpdb->escape($user->user_lastname) ); + if ( !empty( $user->user_nickname ) ) + update_user_meta( $user->ID, 'nickname', $wpdb->escape($user->user_nickname) ); + if ( !empty( $user->user_level ) ) + update_user_meta( $user->ID, $wpdb->prefix . 'user_level', $user->user_level ); + if ( !empty( $user->user_icq ) ) + update_user_meta( $user->ID, 'icq', $wpdb->escape($user->user_icq) ); + if ( !empty( $user->user_aim ) ) + update_user_meta( $user->ID, 'aim', $wpdb->escape($user->user_aim) ); + if ( !empty( $user->user_msn ) ) + update_user_meta( $user->ID, 'msn', $wpdb->escape($user->user_msn) ); + if ( !empty( $user->user_yim ) ) + update_user_meta( $user->ID, 'yim', $wpdb->escape($user->user_icq) ); + if ( !empty( $user->user_description ) ) + update_user_meta( $user->ID, 'description', $wpdb->escape($user->user_description) ); + + if ( isset( $user->user_idmode ) ): + $idmode = $user->user_idmode; + if ($idmode == 'nickname') $id = $user->user_nickname; + if ($idmode == 'login') $id = $user->user_login; + if ($idmode == 'firstname') $id = $user->user_firstname; + if ($idmode == 'lastname') $id = $user->user_lastname; + if ($idmode == 'namefl') $id = $user->user_firstname.' '.$user->user_lastname; + if ($idmode == 'namelf') $id = $user->user_lastname.' '.$user->user_firstname; + if (!$idmode) $id = $user->user_nickname; + $wpdb->update( $wpdb->users, array('display_name' => $id), array('ID' => $user->ID) ); + endif; + + // FIXME: RESET_CAPS is temporary code to reset roles and caps if flag is set. + $caps = get_user_meta( $user->ID, $wpdb->prefix . 'capabilities'); + if ( empty($caps) || defined('RESET_CAPS') ) { + $level = get_user_meta($user->ID, $wpdb->prefix . 'user_level', true); + $role = translate_level_to_role($level); + update_user_meta( $user->ID, $wpdb->prefix . 'capabilities', array($role => true) ); + } + + endforeach; + $old_user_fields = array( 'user_firstname', 'user_lastname', 'user_icq', 'user_aim', 'user_msn', 'user_yim', 'user_idmode', 'user_ip', 'user_domain', 'user_browser', 'user_description', 'user_nickname', 'user_level' ); + $wpdb->hide_errors(); + foreach ( $old_user_fields as $old ) + $wpdb->query("ALTER TABLE $wpdb->users DROP $old"); + $wpdb->show_errors(); + + // populate comment_count field of posts table + $comments = $wpdb->get_results( "SELECT comment_post_ID, COUNT(*) as c FROM $wpdb->comments WHERE comment_approved = '1' GROUP BY comment_post_ID" ); + if ( is_array( $comments ) ) + foreach ($comments as $comment) + $wpdb->update( $wpdb->posts, array('comment_count' => $comment->c), array('ID' => $comment->comment_post_ID) ); + + // Some alpha versions used a post status of object instead of attachment and put + // the mime type in post_type instead of post_mime_type. + if ( $wp_current_db_version > 2541 && $wp_current_db_version <= 3091 ) { + $objects = $wpdb->get_results("SELECT ID, post_type FROM $wpdb->posts WHERE post_status = 'object'"); + foreach ($objects as $object) { + $wpdb->update( $wpdb->posts, array( 'post_status' => 'attachment', + 'post_mime_type' => $object->post_type, + 'post_type' => ''), + array( 'ID' => $object->ID ) ); + + $meta = get_post_meta($object->ID, 'imagedata', true); + if ( ! empty($meta['file']) ) + update_attached_file( $object->ID, $meta['file'] ); + } + } +} + +/** + * Execute changes made in WordPress 2.1. + * + * @since 2.1.0 + */ +function upgrade_210() { + global $wpdb, $wp_current_db_version; + + if ( $wp_current_db_version < 3506 ) { + // Update status and type. + $posts = $wpdb->get_results("SELECT ID, post_status FROM $wpdb->posts"); + + if ( ! empty($posts) ) foreach ($posts as $post) { + $status = $post->post_status; + $type = 'post'; + + if ( 'static' == $status ) { + $status = 'publish'; + $type = 'page'; + } else if ( 'attachment' == $status ) { + $status = 'inherit'; + $type = 'attachment'; + } + + $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_status = %s, post_type = %s WHERE ID = %d", $status, $type, $post->ID) ); + } + } + + if ( $wp_current_db_version < 3845 ) { + populate_roles_210(); + } + + if ( $wp_current_db_version < 3531 ) { + // Give future posts a post_status of future. + $now = gmdate('Y-m-d H:i:59'); + $wpdb->query ("UPDATE $wpdb->posts SET post_status = 'future' WHERE post_status = 'publish' AND post_date_gmt > '$now'"); + + $posts = $wpdb->get_results("SELECT ID, post_date FROM $wpdb->posts WHERE post_status ='future'"); + if ( !empty($posts) ) + foreach ( $posts as $post ) + wp_schedule_single_event(mysql2date('U', $post->post_date, false), 'publish_future_post', array($post->ID)); + } +} + +/** + * Execute changes made in WordPress 2.3. + * + * @since 2.3.0 + */ +function upgrade_230() { + global $wp_current_db_version, $wpdb; + + if ( $wp_current_db_version < 5200 ) { + populate_roles_230(); + } + + // Convert categories to terms. + $tt_ids = array(); + $have_tags = false; + $categories = $wpdb->get_results("SELECT * FROM $wpdb->categories ORDER BY cat_ID"); + foreach ($categories as $category) { + $term_id = (int) $category->cat_ID; + $name = $category->cat_name; + $description = $category->category_description; + $slug = $category->category_nicename; + $parent = $category->category_parent; + $term_group = 0; + + // Associate terms with the same slug in a term group and make slugs unique. + if ( $exists = $wpdb->get_results( $wpdb->prepare("SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $slug) ) ) { + $term_group = $exists[0]->term_group; + $id = $exists[0]->term_id; + $num = 2; + do { + $alt_slug = $slug . "-$num"; + $num++; + $slug_check = $wpdb->get_var( $wpdb->prepare("SELECT slug FROM $wpdb->terms WHERE slug = %s", $alt_slug) ); + } while ( $slug_check ); + + $slug = $alt_slug; + + if ( empty( $term_group ) ) { + $term_group = $wpdb->get_var("SELECT MAX(term_group) FROM $wpdb->terms GROUP BY term_group") + 1; + $wpdb->query( $wpdb->prepare("UPDATE $wpdb->terms SET term_group = %d WHERE term_id = %d", $term_group, $id) ); + } + } + + $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->terms (term_id, name, slug, term_group) VALUES + (%d, %s, %s, %d)", $term_id, $name, $slug, $term_group) ); + + $count = 0; + if ( !empty($category->category_count) ) { + $count = (int) $category->category_count; + $taxonomy = 'category'; + $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->term_taxonomy (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count) ); + $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id; + } + + if ( !empty($category->link_count) ) { + $count = (int) $category->link_count; + $taxonomy = 'link_category'; + $wpdb->query( $wpdb->prepare("INSERT INTO $wpdb->term_taxonomy (term_id, taxonomy, description, parent, count) VALUES ( %d, %s, %s, %d, %d)", $term_id, $taxonomy, $description, $parent, $count) ); + $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id; + } + + if ( !empty($category->tag_count) ) { + $have_tags = true; + $count = (int) $category->tag_count; + $taxonomy = 'post_tag'; + $wpdb->insert( $wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count') ); + $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id; + } + + if ( empty($count) ) { + $count = 0; + $taxonomy = 'category'; + $wpdb->insert( $wpdb->term_taxonomy, compact('term_id', 'taxonomy', 'description', 'parent', 'count') ); + $tt_ids[$term_id][$taxonomy] = (int) $wpdb->insert_id; + } + } + + $select = 'post_id, category_id'; + if ( $have_tags ) + $select .= ', rel_type'; + + $posts = $wpdb->get_results("SELECT $select FROM $wpdb->post2cat GROUP BY post_id, category_id"); + foreach ( $posts as $post ) { + $post_id = (int) $post->post_id; + $term_id = (int) $post->category_id; + $taxonomy = 'category'; + if ( !empty($post->rel_type) && 'tag' == $post->rel_type) + $taxonomy = 'tag'; + $tt_id = $tt_ids[$term_id][$taxonomy]; + if ( empty($tt_id) ) + continue; + + $wpdb->insert( $wpdb->term_relationships, array('object_id' => $post_id, 'term_taxonomy_id' => $tt_id) ); + } + + // < 3570 we used linkcategories. >= 3570 we used categories and link2cat. + if ( $wp_current_db_version < 3570 ) { + // Create link_category terms for link categories. Create a map of link cat IDs + // to link_category terms. + $link_cat_id_map = array(); + $default_link_cat = 0; + $tt_ids = array(); + $link_cats = $wpdb->get_results("SELECT cat_id, cat_name FROM " . $wpdb->prefix . 'linkcategories'); + foreach ( $link_cats as $category) { + $cat_id = (int) $category->cat_id; + $term_id = 0; + $name = $wpdb->escape($category->cat_name); + $slug = sanitize_title($name); + $term_group = 0; + + // Associate terms with the same slug in a term group and make slugs unique. + if ( $exists = $wpdb->get_results( $wpdb->prepare("SELECT term_id, term_group FROM $wpdb->terms WHERE slug = %s", $slug) ) ) { + $term_group = $exists[0]->term_group; + $term_id = $exists[0]->term_id; + } + + if ( empty($term_id) ) { + $wpdb->insert( $wpdb->terms, compact('name', 'slug', 'term_group') ); + $term_id = (int) $wpdb->insert_id; + } + + $link_cat_id_map[$cat_id] = $term_id; + $default_link_cat = $term_id; + + $wpdb->insert( $wpdb->term_taxonomy, array('term_id' => $term_id, 'taxonomy' => 'link_category', 'description' => '', 'parent' => 0, 'count' => 0) ); + $tt_ids[$term_id] = (int) $wpdb->insert_id; + } + + // Associate links to cats. + $links = $wpdb->get_results("SELECT link_id, link_category FROM $wpdb->links"); + if ( !empty($links) ) foreach ( $links as $link ) { + if ( 0 == $link->link_category ) + continue; + if ( ! isset($link_cat_id_map[$link->link_category]) ) + continue; + $term_id = $link_cat_id_map[$link->link_category]; + $tt_id = $tt_ids[$term_id]; + if ( empty($tt_id) ) + continue; + + $wpdb->insert( $wpdb->term_relationships, array('object_id' => $link->link_id, 'term_taxonomy_id' => $tt_id) ); + } + + // Set default to the last category we grabbed during the upgrade loop. + update_option('default_link_category', $default_link_cat); + } else { + $links = $wpdb->get_results("SELECT link_id, category_id FROM $wpdb->link2cat GROUP BY link_id, category_id"); + foreach ( $links as $link ) { + $link_id = (int) $link->link_id; + $term_id = (int) $link->category_id; + $taxonomy = 'link_category'; + $tt_id = $tt_ids[$term_id][$taxonomy]; + if ( empty($tt_id) ) + continue; + $wpdb->insert( $wpdb->term_relationships, array('object_id' => $link_id, 'term_taxonomy_id' => $tt_id) ); + } + } + + if ( $wp_current_db_version < 4772 ) { + // Obsolete linkcategories table + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'linkcategories'); + } + + // Recalculate all counts + $terms = $wpdb->get_results("SELECT term_taxonomy_id, taxonomy FROM $wpdb->term_taxonomy"); + foreach ( (array) $terms as $term ) { + if ( ('post_tag' == $term->taxonomy) || ('category' == $term->taxonomy) ) + $count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships, $wpdb->posts WHERE $wpdb->posts.ID = $wpdb->term_relationships.object_id AND post_status = 'publish' AND post_type = 'post' AND term_taxonomy_id = %d", $term->term_taxonomy_id) ); + else + $count = $wpdb->get_var( $wpdb->prepare("SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $term->term_taxonomy_id) ); + $wpdb->update( $wpdb->term_taxonomy, array('count' => $count), array('term_taxonomy_id' => $term->term_taxonomy_id) ); + } +} + +/** + * Remove old options from the database. + * + * @since 2.3.0 + */ +function upgrade_230_options_table() { + global $wpdb; + $old_options_fields = array( 'option_can_override', 'option_type', 'option_width', 'option_height', 'option_description', 'option_admin_level' ); + $wpdb->hide_errors(); + foreach ( $old_options_fields as $old ) + $wpdb->query("ALTER TABLE $wpdb->options DROP $old"); + $wpdb->show_errors(); +} + +/** + * Remove old categories, link2cat, and post2cat database tables. + * + * @since 2.3.0 + */ +function upgrade_230_old_tables() { + global $wpdb; + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'categories'); + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'link2cat'); + $wpdb->query('DROP TABLE IF EXISTS ' . $wpdb->prefix . 'post2cat'); +} + +/** + * Upgrade old slugs made in version 2.2. + * + * @since 2.2.0 + */ +function upgrade_old_slugs() { + // upgrade people who were using the Redirect Old Slugs plugin + global $wpdb; + $wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_wp_old_slug' WHERE meta_key = 'old_slug'"); +} + +/** + * Execute changes made in WordPress 2.5.0. + * + * @since 2.5.0 + */ +function upgrade_250() { + global $wp_current_db_version; + + if ( $wp_current_db_version < 6689 ) { + populate_roles_250(); + } + +} + +/** + * Execute changes made in WordPress 2.5.2. + * + * @since 2.5.2 + */ +function upgrade_252() { + global $wpdb; + + $wpdb->query("UPDATE $wpdb->users SET user_activation_key = ''"); +} + +/** + * Execute changes made in WordPress 2.6. + * + * @since 2.6.0 + */ +function upgrade_260() { + global $wp_current_db_version; + + if ( $wp_current_db_version < 8000 ) + populate_roles_260(); + + if ( $wp_current_db_version < 8201 ) { + update_option('enable_app', 1); + update_option('enable_xmlrpc', 1); + } +} + +/** + * Execute changes made in WordPress 2.7. + * + * @since 2.7.0 + */ +function upgrade_270() { + global $wpdb, $wp_current_db_version; + + if ( $wp_current_db_version < 8980 ) + populate_roles_270(); + + // Update post_date for unpublished posts with empty timestamp + if ( $wp_current_db_version < 8921 ) + $wpdb->query( "UPDATE $wpdb->posts SET post_date = post_modified WHERE post_date = '0000-00-00 00:00:00'" ); +} + +/** + * Execute changes made in WordPress 2.8. + * + * @since 2.8.0 + */ +function upgrade_280() { + global $wp_current_db_version, $wpdb; + + if ( $wp_current_db_version < 10360 ) + populate_roles_280(); + if ( is_multisite() ) { + $start = 0; + while( $rows = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options ORDER BY option_id LIMIT $start, 20" ) ) { + foreach( $rows as $row ) { + $value = $row->option_value; + if ( !@unserialize( $value ) ) + $value = stripslashes( $value ); + if ( $value !== $row->option_value ) { + update_option( $row->option_name, $value ); + } + } + $start += 20; + } + refresh_blog_details( $wpdb->blogid ); + } +} + +/** + * Execute changes made in WordPress 2.9. + * + * @since 2.9.0 + */ +function upgrade_290() { + global $wp_current_db_version; + + if ( $wp_current_db_version < 11958 ) { + // Previously, setting depth to 1 would redundantly disable threading, but now 2 is the minimum depth to avoid confusion + if ( get_option( 'thread_comments_depth' ) == '1' ) { + update_option( 'thread_comments_depth', 2 ); + update_option( 'thread_comments', 0 ); + } + } +} + +/** + * Execute changes made in WordPress 3.0. + * + * @since 3.0.0 + */ +function upgrade_300() { + global $wp_current_db_version, $wpdb; + + if ( $wp_current_db_version < 15093 ) + populate_roles_300(); + + if ( $wp_current_db_version < 14139 && is_multisite() && is_main_site() && ! defined( 'MULTISITE' ) && get_site_option( 'siteurl' ) === false ) + add_site_option( 'siteurl', '' ); + + // 3.0-alpha nav menu postmeta changes. can be removed before release. // r13802 + if ( $wp_current_db_version >= 13226 && $wp_current_db_version < 13974 ) + $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key IN( 'menu_type', 'object_id', 'menu_new_window', 'menu_link', '_menu_item_append', 'menu_item_append', 'menu_item_type', 'menu_item_object_id', 'menu_item_target', 'menu_item_classes', 'menu_item_xfn', 'menu_item_url' )" ); + + // 3.0-beta1 remove_user primitive->meta cap. can be removed before release. r13956 + if ( $wp_current_db_version >= 12751 && $wp_current_db_version < 13974 ) { + $role =& get_role( 'administrator' ); + if ( ! empty( $role ) ) + $role->remove_cap( 'remove_user' ); + } + + // 3.0-beta1 nav menu postmeta changes. can be removed before release. r13974 + if ( $wp_current_db_version >= 13802 && $wp_current_db_version < 13974 ) + $wpdb->update( $wpdb->postmeta, array( 'meta_value' => '' ), array( 'meta_key' => '_menu_item_target', 'meta_value' => '_self' ) ); + + // 3.0 screen options key name changes. + if ( is_main_site() && !defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) { + $prefix = like_escape($wpdb->base_prefix); + $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key LIKE '{$prefix}%meta-box-hidden%' OR meta_key LIKE '{$prefix}%closedpostboxes%' OR meta_key LIKE '{$prefix}%manage-%-columns-hidden%' OR meta_key LIKE '{$prefix}%meta-box-order%' OR meta_key LIKE '{$prefix}%metaboxorder%' OR meta_key LIKE '{$prefix}%screen_layout%' + OR meta_key = 'manageedittagscolumnshidden' OR meta_key='managecategoriescolumnshidden' OR meta_key = 'manageedit-tagscolumnshidden' OR meta_key = 'manageeditcolumnshidden' OR meta_key = 'categories_per_page' OR meta_key = 'edit_tags_per_page'" ); + } + +} + +/** + * Execute network level changes + * + * @since 3.0.0 + */ +function upgrade_network() { + global $wp_current_db_version, $wpdb; + // 2.8 + if ( $wp_current_db_version < 11549 ) { + $wpmu_sitewide_plugins = get_site_option( 'wpmu_sitewide_plugins' ); + $active_sitewide_plugins = get_site_option( 'active_sitewide_plugins' ); + if ( $wpmu_sitewide_plugins ) { + if ( !$active_sitewide_plugins ) + $sitewide_plugins = (array) $wpmu_sitewide_plugins; + else + $sitewide_plugins = array_merge( (array) $active_sitewide_plugins, (array) $wpmu_sitewide_plugins ); + + update_site_option( 'active_sitewide_plugins', $sitewide_plugins ); + } + delete_site_option( 'wpmu_sitewide_plugins' ); + delete_site_option( 'deactivated_sitewide_plugins' ); + + $start = 0; + while( $rows = $wpdb->get_results( "SELECT meta_key, meta_value FROM {$wpdb->sitemeta} ORDER BY meta_id LIMIT $start, 20" ) ) { + foreach( $rows as $row ) { + $value = $row->meta_value; + if ( !@unserialize( $value ) ) + $value = stripslashes( $value ); + if ( $value !== $row->meta_value ) { + update_site_option( $row->meta_key, $value ); + } + } + $start += 20; + } + } + // 3.0 + if ( $wp_current_db_version < 13576 ) + update_site_option( 'global_terms_enabled', '1' ); +} + +// The functions we use to actually do stuff + +// General + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.0.0 + * + * @param string $table_name Database table name to create. + * @param string $create_ddl SQL statement to create table. + * @return bool If table already exists or was created by function. + */ +function maybe_create_table($table_name, $create_ddl) { + global $wpdb; + if ( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name ) + return true; + //didn't find it try to create it. + $q = $wpdb->query($create_ddl); + // we cannot directly tell that whether this succeeded! + if ( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name ) + return true; + return false; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.0.1 + * + * @param string $table Database table name. + * @param string $index Index name to drop. + * @return bool True, when finished. + */ +function drop_index($table, $index) { + global $wpdb; + $wpdb->hide_errors(); + $wpdb->query("ALTER TABLE `$table` DROP INDEX `$index`"); + // Now we need to take out all the extra ones we may have created + for ($i = 0; $i < 25; $i++) { + $wpdb->query("ALTER TABLE `$table` DROP INDEX `{$index}_$i`"); + } + $wpdb->show_errors(); + return true; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.0.1 + * + * @param string $table Database table name. + * @param string $index Database table index column. + * @return bool True, when done with execution. + */ +function add_clean_index($table, $index) { + global $wpdb; + drop_index($table, $index); + $wpdb->query("ALTER TABLE `$table` ADD INDEX ( `$index` )"); + return true; +} + +/** + ** maybe_add_column() + ** Add column to db table if it doesn't exist. + ** Returns: true if already exists or on successful completion + ** false on error + */ +function maybe_add_column($table_name, $column_name, $create_ddl) { + global $wpdb, $debug; + foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) { + if ($debug) echo("checking $column == $column_name
    "); + if ($column == $column_name) { + return true; + } + } + //didn't find it try to create it. + $q = $wpdb->query($create_ddl); + // we cannot directly tell that whether this succeeded! + foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) { + if ($column == $column_name) { + return true; + } + } + return false; +} + +/** + * Retrieve all options as it was for 1.2. + * + * @since 1.2.0 + * + * @return array List of options. + */ +function get_alloptions_110() { + global $wpdb; + if ($options = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options")) { + foreach ($options as $option) { + // "When trying to design a foolproof system, + // never underestimate the ingenuity of the fools :)" -- Dougal + if ('siteurl' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value); + if ('home' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value); + if ('category_base' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value); + $all_options->{$option->option_name} = stripslashes($option->option_value); + } + } + return $all_options; +} + +/** + * Version of get_option that is private to install/upgrade. + * + * @since 1.5.1 + * @access private + * + * @param string $setting Option name. + * @return mixed + */ +function __get_option($setting) { + global $wpdb; + + if ( $setting == 'home' && defined( 'WP_HOME' ) ) { + return preg_replace( '|/+$|', '', WP_HOME ); + } + + if ( $setting == 'siteurl' && defined( 'WP_SITEURL' ) ) { + return preg_replace( '|/+$|', '', WP_SITEURL ); + } + + $option = $wpdb->get_var( $wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s", $setting) ); + + if ( 'home' == $setting && '' == $option ) + return __get_option('siteurl'); + + if ( 'siteurl' == $setting || 'home' == $setting || 'category_base' == $setting ) + $option = preg_replace('|/+$|', '', $option); + + @ $kellogs = unserialize($option); + if ($kellogs !== FALSE) + return $kellogs; + else + return $option; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + * + * @param string $content + * @return string + */ +function deslash($content) { + // Note: \\\ inside a regex denotes a single backslash. + + // Replace one or more backslashes followed by a single quote with + // a single quote. + $content = preg_replace("/\\\+'/", "'", $content); + + // Replace one or more backslashes followed by a double quote with + // a double quote. + $content = preg_replace('/\\\+"/', '"', $content); + + // Replace one or more backslashes with one backslash. + $content = preg_replace("/\\\+/", "\\", $content); + + return $content; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + * + * @param unknown_type $queries + * @param unknown_type $execute + * @return unknown + */ +function dbDelta($queries, $execute = true) { + global $wpdb; + + // Separate individual queries into an array + if ( !is_array($queries) ) { + $queries = explode( ';', $queries ); + if ('' == $queries[count($queries) - 1]) array_pop($queries); + } + + $cqueries = array(); // Creation Queries + $iqueries = array(); // Insertion Queries + $for_update = array(); + + // Create a tablename index for an array ($cqueries) of queries + foreach($queries as $qry) { + if (preg_match("|CREATE TABLE ([^ ]*)|", $qry, $matches)) { + $cqueries[trim( strtolower($matches[1]), '`' )] = $qry; + $for_update[$matches[1]] = 'Created table '.$matches[1]; + } else if (preg_match("|CREATE DATABASE ([^ ]*)|", $qry, $matches)) { + array_unshift($cqueries, $qry); + } else if (preg_match("|INSERT INTO ([^ ]*)|", $qry, $matches)) { + $iqueries[] = $qry; + } else if (preg_match("|UPDATE ([^ ]*)|", $qry, $matches)) { + $iqueries[] = $qry; + } else { + // Unrecognized query type + } + } + + // Check to see which tables and fields exist + if ($tables = $wpdb->get_col('SHOW TABLES;')) { + // For every table in the database + foreach ($tables as $table) { + // Upgrade global tables only for the main site. Don't upgrade at all if DO_NOT_UPGRADE_GLOBAL_TABLES is defined. + if ( in_array($table, $wpdb->tables('global')) && ( !is_main_site() || defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) ) + continue; + + // If a table query exists for the database table... + if ( array_key_exists(strtolower($table), $cqueries) ) { + // Clear the field and index arrays + $cfields = $indices = array(); + // Get all of the field names in the query from between the parens + preg_match("|\((.*)\)|ms", $cqueries[strtolower($table)], $match2); + $qryline = trim($match2[1]); + + // Separate field lines into an array + $flds = explode("\n", $qryline); + + //echo "
    \n".print_r(strtolower($table), true).":\n".print_r($cqueries, true)."

    "; + + // For every field line specified in the query + foreach ($flds as $fld) { + // Extract the field name + preg_match("|^([^ ]*)|", trim($fld), $fvals); + $fieldname = trim( $fvals[1], '`' ); + + // Verify the found field name + $validfield = true; + switch (strtolower($fieldname)) { + case '': + case 'primary': + case 'index': + case 'fulltext': + case 'unique': + case 'key': + $validfield = false; + $indices[] = trim(trim($fld), ", \n"); + break; + } + $fld = trim($fld); + + // If it's a valid field, add it to the field array + if ($validfield) { + $cfields[strtolower($fieldname)] = trim($fld, ", \n"); + } + } + + // Fetch the table column structure from the database + $tablefields = $wpdb->get_results("DESCRIBE {$table};"); + + // For every field in the table + foreach ($tablefields as $tablefield) { + // If the table field exists in the field array... + if (array_key_exists(strtolower($tablefield->Field), $cfields)) { + // Get the field type from the query + preg_match("|".$tablefield->Field." ([^ ]*( unsigned)?)|i", $cfields[strtolower($tablefield->Field)], $matches); + $fieldtype = $matches[1]; + + // Is actual field type different from the field type in query? + if ($tablefield->Type != $fieldtype) { + // Add a query to change the column type + $cqueries[] = "ALTER TABLE {$table} CHANGE COLUMN {$tablefield->Field} " . $cfields[strtolower($tablefield->Field)]; + $for_update[$table.'.'.$tablefield->Field] = "Changed type of {$table}.{$tablefield->Field} from {$tablefield->Type} to {$fieldtype}"; + } + + // Get the default value from the array + //echo "{$cfields[strtolower($tablefield->Field)]}
    "; + if (preg_match("| DEFAULT '(.*)'|i", $cfields[strtolower($tablefield->Field)], $matches)) { + $default_value = $matches[1]; + if ($tablefield->Default != $default_value) { + // Add a query to change the column's default value + $cqueries[] = "ALTER TABLE {$table} ALTER COLUMN {$tablefield->Field} SET DEFAULT '{$default_value}'"; + $for_update[$table.'.'.$tablefield->Field] = "Changed default value of {$table}.{$tablefield->Field} from {$tablefield->Default} to {$default_value}"; + } + } + + // Remove the field from the array (so it's not added) + unset($cfields[strtolower($tablefield->Field)]); + } else { + // This field exists in the table, but not in the creation queries? + } + } + + // For every remaining field specified for the table + foreach ($cfields as $fieldname => $fielddef) { + // Push a query line into $cqueries that adds the field to that table + $cqueries[] = "ALTER TABLE {$table} ADD COLUMN $fielddef"; + $for_update[$table.'.'.$fieldname] = 'Added column '.$table.'.'.$fieldname; + } + + // Index stuff goes here + // Fetch the table index structure from the database + $tableindices = $wpdb->get_results("SHOW INDEX FROM {$table};"); + + if ($tableindices) { + // Clear the index array + unset($index_ary); + + // For every index in the table + foreach ($tableindices as $tableindex) { + // Add the index to the index data array + $keyname = $tableindex->Key_name; + $index_ary[$keyname]['columns'][] = array('fieldname' => $tableindex->Column_name, 'subpart' => $tableindex->Sub_part); + $index_ary[$keyname]['unique'] = ($tableindex->Non_unique == 0)?true:false; + } + + // For each actual index in the index array + foreach ($index_ary as $index_name => $index_data) { + // Build a create string to compare to the query + $index_string = ''; + if ($index_name == 'PRIMARY') { + $index_string .= 'PRIMARY '; + } else if($index_data['unique']) { + $index_string .= 'UNIQUE '; + } + $index_string .= 'KEY '; + if ($index_name != 'PRIMARY') { + $index_string .= $index_name; + } + $index_columns = ''; + // For each column in the index + foreach ($index_data['columns'] as $column_data) { + if ($index_columns != '') $index_columns .= ','; + // Add the field to the column list string + $index_columns .= $column_data['fieldname']; + if ($column_data['subpart'] != '') { + $index_columns .= '('.$column_data['subpart'].')'; + } + } + // Add the column list to the index create string + $index_string .= ' ('.$index_columns.')'; + if (!(($aindex = array_search($index_string, $indices)) === false)) { + unset($indices[$aindex]); + //echo "
    {$table}:
    Found index:".$index_string."
    \n"; + } + //else echo "
    {$table}:
    Did not find index:".$index_string."
    ".print_r($indices, true)."
    \n"; + } + } + + // For every remaining index specified for the table + foreach ( (array) $indices as $index ) { + // Push a query line into $cqueries that adds the index to that table + $cqueries[] = "ALTER TABLE {$table} ADD $index"; + $for_update[$table.'.'.$fieldname] = 'Added index '.$table.' '.$index; + } + + // Remove the original table creation query from processing + unset($cqueries[strtolower($table)]); + unset($for_update[strtolower($table)]); + } else { + // This table exists in the database, but not in the creation queries? + } + } + } + + $allqueries = array_merge($cqueries, $iqueries); + if ($execute) { + foreach ($allqueries as $query) { + //echo "
    ".print_r($query, true)."
    \n"; + $wpdb->query($query); + } + } + + return $for_update; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + */ +function make_db_current() { + global $wp_queries; + + $alterations = dbDelta($wp_queries); + echo "
      \n"; + foreach($alterations as $alteration) echo "
    1. $alteration
    2. \n"; + echo "
    \n"; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + */ +function make_db_current_silent() { + global $wp_queries; + + $alterations = dbDelta($wp_queries); +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + * + * @param unknown_type $theme_name + * @param unknown_type $template + * @return unknown + */ +function make_site_theme_from_oldschool($theme_name, $template) { + $home_path = get_home_path(); + $site_dir = WP_CONTENT_DIR . "/themes/$template"; + + if (! file_exists("$home_path/index.php")) + return false; + + // Copy files from the old locations to the site theme. + // TODO: This does not copy arbitarary include dependencies. Only the + // standard WP files are copied. + $files = array('index.php' => 'index.php', 'wp-layout.css' => 'style.css', 'wp-comments.php' => 'comments.php', 'wp-comments-popup.php' => 'comments-popup.php'); + + foreach ($files as $oldfile => $newfile) { + if ($oldfile == 'index.php') + $oldpath = $home_path; + else + $oldpath = ABSPATH; + + if ($oldfile == 'index.php') { // Check to make sure it's not a new index + $index = implode('', file("$oldpath/$oldfile")); + if (strpos($index, 'WP_USE_THEMES') !== false) { + if (! @copy(WP_CONTENT_DIR . '/themes/' . WP_DEFAULT_THEME . '/index.php', "$site_dir/$newfile")) + return false; + continue; // Don't copy anything + } + } + + if (! @copy("$oldpath/$oldfile", "$site_dir/$newfile")) + return false; + + chmod("$site_dir/$newfile", 0777); + + // Update the blog header include in each file. + $lines = explode("\n", implode('', file("$site_dir/$newfile"))); + if ($lines) { + $f = fopen("$site_dir/$newfile", 'w'); + + foreach ($lines as $line) { + if (preg_match('/require.*wp-blog-header/', $line)) + $line = '//' . $line; + + // Update stylesheet references. + $line = str_replace("/wp-layout.css", "", $line); + + // Update comments template inclusion. + $line = str_replace("", "", $line); + + fwrite($f, "{$line}\n"); + } + fclose($f); + } + } + + // Add a theme header. + $header = "/*\nTheme Name: $theme_name\nTheme URI: " . __get_option('siteurl') . "\nDescription: A theme automatically created by the update.\nVersion: 1.0\nAuthor: Moi\n*/\n"; + + $stylelines = file_get_contents("$site_dir/style.css"); + if ($stylelines) { + $f = fopen("$site_dir/style.css", 'w'); + + fwrite($f, $header); + fwrite($f, $stylelines); + fclose($f); + } + + return true; +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + * + * @param unknown_type $theme_name + * @param unknown_type $template + * @return unknown + */ +function make_site_theme_from_default($theme_name, $template) { + $site_dir = WP_CONTENT_DIR . "/themes/$template"; + $default_dir = WP_CONTENT_DIR . '/themes/' . WP_DEFAULT_THEME; + + // Copy files from the default theme to the site theme. + //$files = array('index.php', 'comments.php', 'comments-popup.php', 'footer.php', 'header.php', 'sidebar.php', 'style.css'); + + $theme_dir = @ opendir($default_dir); + if ($theme_dir) { + while(($theme_file = readdir( $theme_dir )) !== false) { + if (is_dir("$default_dir/$theme_file")) + continue; + if (! @copy("$default_dir/$theme_file", "$site_dir/$theme_file")) + return; + chmod("$site_dir/$theme_file", 0777); + } + } + @closedir($theme_dir); + + // Rewrite the theme header. + $stylelines = explode("\n", implode('', file("$site_dir/style.css"))); + if ($stylelines) { + $f = fopen("$site_dir/style.css", 'w'); + + foreach ($stylelines as $line) { + if (strpos($line, 'Theme Name:') !== false) $line = 'Theme Name: ' . $theme_name; + elseif (strpos($line, 'Theme URI:') !== false) $line = 'Theme URI: ' . __get_option('url'); + elseif (strpos($line, 'Description:') !== false) $line = 'Description: Your theme.'; + elseif (strpos($line, 'Version:') !== false) $line = 'Version: 1'; + elseif (strpos($line, 'Author:') !== false) $line = 'Author: You'; + fwrite($f, $line . "\n"); + } + fclose($f); + } + + // Copy the images. + umask(0); + if (! mkdir("$site_dir/images", 0777)) { + return false; + } + + $images_dir = @ opendir("$default_dir/images"); + if ($images_dir) { + while(($image = readdir($images_dir)) !== false) { + if (is_dir("$default_dir/images/$image")) + continue; + if (! @copy("$default_dir/images/$image", "$site_dir/images/$image")) + return; + chmod("$site_dir/images/$image", 0777); + } + } + @closedir($images_dir); +} + +// Create a site theme from the default theme. +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 1.5.0 + * + * @return unknown + */ +function make_site_theme() { + // Name the theme after the blog. + $theme_name = __get_option('blogname'); + $template = sanitize_title($theme_name); + $site_dir = WP_CONTENT_DIR . "/themes/$template"; + + // If the theme already exists, nothing to do. + if ( is_dir($site_dir)) { + return false; + } + + // We must be able to write to the themes dir. + if (! is_writable(WP_CONTENT_DIR . "/themes")) { + return false; + } + + umask(0); + if (! mkdir($site_dir, 0777)) { + return false; + } + + if (file_exists(ABSPATH . 'wp-layout.css')) { + if (! make_site_theme_from_oldschool($theme_name, $template)) { + // TODO: rm -rf the site theme directory. + return false; + } + } else { + if (! make_site_theme_from_default($theme_name, $template)) + // TODO: rm -rf the site theme directory. + return false; + } + + // Make the new site theme active. + $current_template = __get_option('template'); + if ($current_template == WP_DEFAULT_THEME) { + update_option('template', $template); + update_option('stylesheet', $template); + } + return $template; +} + +/** + * Translate user level to user role name. + * + * @since 2.0.0 + * + * @param int $level User level. + * @return string User role name. + */ +function translate_level_to_role($level) { + switch ($level) { + case 10: + case 9: + case 8: + return 'administrator'; + case 7: + case 6: + case 5: + return 'editor'; + case 4: + case 3: + case 2: + return 'author'; + case 1: + return 'contributor'; + case 0: + return 'subscriber'; + } +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.1.0 + */ +function wp_check_mysql_version() { + global $wpdb; + $result = $wpdb->check_database_version(); + if ( is_wp_error( $result ) ) + die( $result->get_error_message() ); +} + +/** + * {@internal Missing Short Description}} + * + * {@internal Missing Long Description}} + * + * @since 2.2.0 + */ +function maybe_disable_automattic_widgets() { + $plugins = __get_option( 'active_plugins' ); + + foreach ( (array) $plugins as $plugin ) { + if ( basename( $plugin ) == 'widgets.php' ) { + array_splice( $plugins, array_search( $plugin, $plugins ), 1 ); + update_option( 'active_plugins', $plugins ); + break; + } + } +} + +/** + * Runs before the schema is upgraded. + * + * @since 2.9.0 + */ +function pre_schema_upgrade() { + global $wp_current_db_version, $wp_db_version, $wpdb; + + // Upgrade versions prior to 2.9 + if ( $wp_current_db_version < 11557 ) { + // Delete duplicate options. Keep the option with the highest option_id. + $wpdb->query("DELETE o1 FROM $wpdb->options AS o1 JOIN $wpdb->options AS o2 USING (`option_name`) WHERE o2.option_id > o1.option_id"); + + // Drop the old primary key and add the new. + $wpdb->query("ALTER TABLE $wpdb->options DROP PRIMARY KEY, ADD PRIMARY KEY(option_id)"); + + // Drop the old option_name index. dbDelta() doesn't do the drop. + $wpdb->query("ALTER TABLE $wpdb->options DROP INDEX option_name"); + } + +} + +/** + * Install Network. + * + * @since 3.0.0 + * + */ +if ( !function_exists( 'install_network' ) ) : +function install_network() { + global $wpdb, $charset_collate; + $ms_queries = " +CREATE TABLE $wpdb->users ( + ID bigint(20) unsigned NOT NULL auto_increment, + user_login varchar(60) NOT NULL default '', + user_pass varchar(64) NOT NULL default '', + user_nicename varchar(50) NOT NULL default '', + user_email varchar(100) NOT NULL default '', + user_url varchar(100) NOT NULL default '', + user_registered datetime NOT NULL default '0000-00-00 00:00:00', + user_activation_key varchar(60) NOT NULL default '', + user_status int(11) NOT NULL default '0', + display_name varchar(250) NOT NULL default '', + spam tinyint(2) NOT NULL default '0', + deleted tinyint(2) NOT NULL default '0', + PRIMARY KEY (ID), + KEY user_login_key (user_login), + KEY user_nicename (user_nicename) +) $charset_collate; +CREATE TABLE $wpdb->blogs ( + blog_id bigint(20) NOT NULL auto_increment, + site_id bigint(20) NOT NULL default '0', + domain varchar(200) NOT NULL default '', + path varchar(100) NOT NULL default '', + registered datetime NOT NULL default '0000-00-00 00:00:00', + last_updated datetime NOT NULL default '0000-00-00 00:00:00', + public tinyint(2) NOT NULL default '1', + archived enum('0','1') NOT NULL default '0', + mature tinyint(2) NOT NULL default '0', + spam tinyint(2) NOT NULL default '0', + deleted tinyint(2) NOT NULL default '0', + lang_id int(11) NOT NULL default '0', + PRIMARY KEY (blog_id), + KEY domain (domain(50),path(5)), + KEY lang_id (lang_id) +) $charset_collate; +CREATE TABLE $wpdb->blog_versions ( + blog_id bigint(20) NOT NULL default '0', + db_version varchar(20) NOT NULL default '', + last_updated datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (blog_id), + KEY db_version (db_version) +) $charset_collate; +CREATE TABLE $wpdb->registration_log ( + ID bigint(20) NOT NULL auto_increment, + email varchar(255) NOT NULL default '', + IP varchar(30) NOT NULL default '', + blog_id bigint(20) NOT NULL default '0', + date_registered datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (ID), + KEY IP (IP) +) $charset_collate; +CREATE TABLE $wpdb->site ( + id bigint(20) NOT NULL auto_increment, + domain varchar(200) NOT NULL default '', + path varchar(100) NOT NULL default '', + PRIMARY KEY (id), + KEY domain (domain,path) +) $charset_collate; +CREATE TABLE $wpdb->sitemeta ( + meta_id bigint(20) NOT NULL auto_increment, + site_id bigint(20) NOT NULL default '0', + meta_key varchar(255) default NULL, + meta_value longtext, + PRIMARY KEY (meta_id), + KEY meta_key (meta_key), + KEY site_id (site_id) +) $charset_collate; +CREATE TABLE $wpdb->signups ( + domain varchar(200) NOT NULL default '', + path varchar(100) NOT NULL default '', + title longtext NOT NULL, + user_login varchar(60) NOT NULL default '', + user_email varchar(100) NOT NULL default '', + registered datetime NOT NULL default '0000-00-00 00:00:00', + activated datetime NOT NULL default '0000-00-00 00:00:00', + active tinyint(1) NOT NULL default '0', + activation_key varchar(50) NOT NULL default '', + meta longtext, + KEY activation_key (activation_key), + KEY domain (domain) +) $charset_collate; +"; +// now create tables + dbDelta( $ms_queries ); +} +endif; + +/** + * Install global terms. + * + * @since 3.0.0 + * + */ +if ( !function_exists( 'install_global_terms' ) ) : +function install_global_terms() { + global $wpdb, $charset_collate; + $ms_queries = " +CREATE TABLE $wpdb->sitecategories ( + cat_ID bigint(20) NOT NULL auto_increment, + cat_name varchar(55) NOT NULL default '', + category_nicename varchar(200) NOT NULL default '', + last_updated timestamp NOT NULL, + PRIMARY KEY (cat_ID), + KEY category_nicename (category_nicename), + KEY last_updated (last_updated) +) $charset_collate; +"; +// now create tables + dbDelta( $ms_queries ); +} +endif; +?> diff --git a/src/wp-admin/includes/user.php b/src/wp-admin/includes/user.php new file mode 100644 index 0000000..758c065 --- /dev/null +++ b/src/wp-admin/includes/user.php @@ -0,0 +1,383 @@ +role_objects[$new_role]->has_cap( 'edit_users' ) ) { + // If the new role isn't editable by the logged-in user die with error + $editable_roles = get_editable_roles(); + if ( empty( $editable_roles[$new_role] ) ) + wp_die(__('You can’t give users that role.')); + + $user = new WP_User( $user_id ); + $user->set_role( $new_role ); + } + } + } else { + add_action( 'user_register', 'add_user' ); // See above + return edit_user(); + } +} + +/** + * Edit user settings based on contents of $_POST + * + * Used on user-edit.php and profile.php to manage and process user options, passwords etc. + * + * @since 2.0 + * + * @param int $user_id Optional. User ID. + * @return int user id of the updated user + */ +function edit_user( $user_id = 0 ) { + global $wp_roles, $wpdb; + $user = new stdClass; + if ( $user_id ) { + $update = true; + $user->ID = (int) $user_id; + $userdata = get_userdata( $user_id ); + $user->user_login = $wpdb->escape( $userdata->user_login ); + } else { + $update = false; + } + + if ( !$update && isset( $_POST['user_login'] ) ) + $user->user_login = sanitize_user($_POST['user_login'], true); + + $pass1 = $pass2 = ''; + if ( isset( $_POST['pass1'] )) + $pass1 = $_POST['pass1']; + if ( isset( $_POST['pass2'] )) + $pass2 = $_POST['pass2']; + + if ( isset( $_POST['role'] ) && current_user_can( 'edit_users' ) ) { + $new_role = sanitize_text_field( $_POST['role'] ); + $potential_role = isset($wp_roles->role_objects[$new_role]) ? $wp_roles->role_objects[$new_role] : false; + // Don't let anyone with 'edit_users' (admins) edit their own role to something without it. + // Multisite super admins can freely edit their blog roles -- they possess all caps. + if ( ( is_multisite() && current_user_can( 'manage_sites' ) ) || $user_id != get_current_user_id() || ($potential_role && $potential_role->has_cap( 'edit_users' ) ) ) + $user->role = $new_role; + + // If the new role isn't editable by the logged-in user die with error + $editable_roles = get_editable_roles(); + if ( ! empty( $new_role ) && empty( $editable_roles[$new_role] ) ) + wp_die(__('You can’t give users that role.')); + } + + if ( isset( $_POST['email'] )) + $user->user_email = sanitize_text_field( $_POST['email'] ); + if ( isset( $_POST['url'] ) ) { + if ( empty ( $_POST['url'] ) || $_POST['url'] == 'http://' ) { + $user->user_url = ''; + } else { + $user->user_url = esc_url_raw( $_POST['url'] ); + $user->user_url = preg_match('/^(https?|ftps?|mailto|news|irc|gopher|nntp|feed|telnet):/is', $user->user_url) ? $user->user_url : 'http://'.$user->user_url; + } + } + if ( isset( $_POST['first_name'] ) ) + $user->first_name = sanitize_text_field( $_POST['first_name'] ); + if ( isset( $_POST['last_name'] ) ) + $user->last_name = sanitize_text_field( $_POST['last_name'] ); + if ( isset( $_POST['nickname'] ) ) + $user->nickname = sanitize_text_field( $_POST['nickname'] ); + if ( isset( $_POST['display_name'] ) ) + $user->display_name = sanitize_text_field( $_POST['display_name'] ); + + if ( isset( $_POST['description'] ) ) + $user->description = trim( $_POST['description'] ); + + foreach ( _wp_get_user_contactmethods( $user ) as $method => $name ) { + if ( isset( $_POST[$method] )) + $user->$method = sanitize_text_field( $_POST[$method] ); + } + + if ( $update ) { + $user->rich_editing = isset( $_POST['rich_editing'] ) && 'false' == $_POST['rich_editing'] ? 'false' : 'true'; + $user->admin_color = isset( $_POST['admin_color'] ) ? sanitize_text_field( $_POST['admin_color'] ) : 'fresh'; + $user->show_admin_bar_front = isset( $_POST['admin_bar_front'] ) ? 'true' : 'false'; + $user->show_admin_bar_admin = isset( $_POST['admin_bar_admin'] ) ? 'true' : 'false'; + } + + $user->comment_shortcuts = isset( $_POST['comment_shortcuts'] ) && 'true' == $_POST['comment_shortcuts'] ? 'true' : ''; + + $user->use_ssl = 0; + if ( !empty($_POST['use_ssl']) ) + $user->use_ssl = 1; + + $errors = new WP_Error(); + + /* checking that username has been typed */ + if ( $user->user_login == '' ) + $errors->add( 'user_login', __( 'ERROR: Please enter a username.' )); + + /* checking the password has been typed twice */ + do_action_ref_array( 'check_passwords', array ( $user->user_login, & $pass1, & $pass2 )); + + if ( $update ) { + if ( empty($pass1) && !empty($pass2) ) + $errors->add( 'pass', __( 'ERROR: You entered your new password only once.' ), array( 'form-field' => 'pass1' ) ); + elseif ( !empty($pass1) && empty($pass2) ) + $errors->add( 'pass', __( 'ERROR: You entered your new password only once.' ), array( 'form-field' => 'pass2' ) ); + } else { + if ( empty($pass1) ) + $errors->add( 'pass', __( 'ERROR: Please enter your password.' ), array( 'form-field' => 'pass1' ) ); + elseif ( empty($pass2) ) + $errors->add( 'pass', __( 'ERROR: Please enter your password twice.' ), array( 'form-field' => 'pass2' ) ); + } + + /* Check for "\" in password */ + if ( false !== strpos( stripslashes($pass1), "\\" ) ) + $errors->add( 'pass', __( 'ERROR: Passwords may not contain the character "\\".' ), array( 'form-field' => 'pass1' ) ); + + /* checking the password has been typed twice the same */ + if ( $pass1 != $pass2 ) + $errors->add( 'pass', __( 'ERROR: Please enter the same password in the two password fields.' ), array( 'form-field' => 'pass1' ) ); + + if ( !empty( $pass1 ) ) + $user->user_pass = $pass1; + + if ( !$update && isset( $_POST['user_login'] ) && !validate_username( $_POST['user_login'] ) ) + $errors->add( 'user_login', __( 'ERROR: This username is invalid because it uses illegal characters. Please enter a valid username.' )); + + if ( !$update && username_exists( $user->user_login ) ) + $errors->add( 'user_login', __( 'ERROR: This username is already registered. Please choose another one.' )); + + /* checking e-mail address */ + if ( empty( $user->user_email ) ) { + $errors->add( 'empty_email', __( 'ERROR: Please enter an e-mail address.' ), array( 'form-field' => 'email' ) ); + } elseif ( !is_email( $user->user_email ) ) { + $errors->add( 'invalid_email', __( 'ERROR: The e-mail address isn’t correct.' ), array( 'form-field' => 'email' ) ); + } elseif ( ( $owner_id = email_exists($user->user_email) ) && ( !$update || ( $owner_id != $user->ID ) ) ) { + $errors->add( 'email_exists', __('ERROR: This email is already registered, please choose another one.'), array( 'form-field' => 'email' ) ); + } + + // Allow plugins to return their own errors. + do_action_ref_array('user_profile_update_errors', array ( &$errors, $update, &$user ) ); + + if ( $errors->get_error_codes() ) + return $errors; + + if ( $update ) { + $user_id = wp_update_user( get_object_vars( $user ) ); + } else { + $user_id = wp_insert_user( get_object_vars( $user ) ); + wp_new_user_notification( $user_id, isset($_POST['send_password']) ? $pass1 : '' ); + } + return $user_id; +} + +/** + * Fetch a filtered list of user roles that the current user is + * allowed to edit. + * + * Simple function who's main purpose is to allow filtering of the + * list of roles in the $wp_roles object so that plugins can remove + * innappropriate ones depending on the situation or user making edits. + * Specifically because without filtering anyone with the edit_users + * capability can edit others to be administrators, even if they are + * only editors or authors. This filter allows admins to delegate + * user management. + * + * @since 2.8 + * + * @return unknown + */ +function get_editable_roles() { + global $wp_roles; + + $all_roles = $wp_roles->roles; + $editable_roles = apply_filters('editable_roles', $all_roles); + + return $editable_roles; +} + +/** + * Retrieve user data and filter it. + * + * @since 2.0.5 + * + * @param int $user_id User ID. + * @return object WP_User object with user data. + */ +function get_user_to_edit( $user_id ) { + $user = new WP_User( $user_id ); + + $user_contactmethods = _wp_get_user_contactmethods( $user ); + foreach ($user_contactmethods as $method => $name) { + if ( empty( $user->{$method} ) ) + $user->{$method} = ''; + } + + if ( empty($user->description) ) + $user->description = ''; + + $user = sanitize_user_object($user, 'edit'); + + return $user; +} + +/** + * Retrieve the user's drafts. + * + * @since 2.0.0 + * + * @param int $user_id User ID. + * @return array + */ +function get_users_drafts( $user_id ) { + global $wpdb; + $query = $wpdb->prepare("SELECT ID, post_title FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'draft' AND post_author = %d ORDER BY post_modified DESC", $user_id); + $query = apply_filters('get_users_drafts', $query); + return $wpdb->get_results( $query ); +} + +/** + * Remove user and optionally reassign posts and links to another user. + * + * If the $reassign parameter is not assigned to an User ID, then all posts will + * be deleted of that user. The action 'delete_user' that is passed the User ID + * being deleted will be run after the posts are either reassigned or deleted. + * The user meta will also be deleted that are for that User ID. + * + * @since 2.0.0 + * + * @param int $id User ID. + * @param int $reassign Optional. Reassign posts and links to new User ID. + * @return bool True when finished. + */ +function wp_delete_user( $id, $reassign = 'novalue' ) { + global $wpdb; + + $id = (int) $id; + + // allow for transaction statement + do_action('delete_user', $id); + + if ( 'novalue' === $reassign || null === $reassign ) { + $post_ids = $wpdb->get_col( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_author = %d", $id) ); + + if ( $post_ids ) { + foreach ( $post_ids as $post_id ) + wp_delete_post($post_id); + } + + // Clean links + $link_ids = $wpdb->get_col( $wpdb->prepare("SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id) ); + + if ( $link_ids ) { + foreach ( $link_ids as $link_id ) + wp_delete_link($link_id); + } + } else { + $reassign = (int) $reassign; + $wpdb->update( $wpdb->posts, array('post_author' => $reassign), array('post_author' => $id) ); + $wpdb->update( $wpdb->links, array('link_owner' => $reassign), array('link_owner' => $id) ); + } + + clean_user_cache($id); + + // FINALLY, delete user + if ( !is_multisite() ) { + $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->usermeta WHERE user_id = %d", $id) ); + $wpdb->query( $wpdb->prepare("DELETE FROM $wpdb->users WHERE ID = %d", $id) ); + } else { + $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels + $wpdb->query("DELETE FROM $wpdb->usermeta WHERE user_id = $id AND meta_key = '{$level_key}'"); + } + + // allow for commit transaction + do_action('deleted_user', $id); + + return true; +} + +/** + * Remove all capabilities from user. + * + * @since 2.1.0 + * + * @param int $id User ID. + */ +function wp_revoke_user($id) { + $id = (int) $id; + + $user = new WP_User($id); + $user->remove_all_caps(); +} + +add_action('admin_init', 'default_password_nag_handler'); +/** + * @since 2.8.0 + */ +function default_password_nag_handler($errors = false) { + global $user_ID; + if ( ! get_user_option('default_password_nag') ) //Short circuit it. + return; + + //get_user_setting = JS saved UI setting. else no-js-falback code. + if ( 'hide' == get_user_setting('default_password_nag') || isset($_GET['default_password_nag']) && '0' == $_GET['default_password_nag'] ) { + delete_user_setting('default_password_nag'); + update_user_option($user_ID, 'default_password_nag', false, true); + } +} + +add_action('profile_update', 'default_password_nag_edit_user', 10, 2); +/** + * @since 2.8.0 + */ +function default_password_nag_edit_user($user_ID, $old_data) { + if ( ! get_user_option('default_password_nag', $user_ID) ) //Short circuit it. + return; + + $new_data = get_userdata($user_ID); + + if ( $new_data->user_pass != $old_data->user_pass ) { //Remove the nag if the password has been changed. + delete_user_setting('default_password_nag', $user_ID); + update_user_option($user_ID, 'default_password_nag', false, true); + } +} + +add_action('admin_notices', 'default_password_nag'); +/** + * @since 2.8.0 + */ +function default_password_nag() { + global $pagenow; + if ( 'profile.php' == $pagenow || ! get_user_option('default_password_nag') ) //Short circuit it. + return; + + echo '
    '; + echo '

    '; + echo '' . __('Notice:') . ' '; + _e('You’re using the auto-generated password for your account. Would you like to change it to something easier to remember?'); + echo '

    '; + printf( '' . __('Yes, take me to my profile page') . ' | ', admin_url('profile.php') . '#password' ); + printf( '' . __('No thanks, do not remind me again') . '', '?default_password_nag=0' ); + echo '

    '; +} + +?> diff --git a/src/wp-admin/includes/widgets.php b/src/wp-admin/includes/widgets.php new file mode 100644 index 0000000..6b7d635 --- /dev/null +++ b/src/wp-admin/includes/widgets.php @@ -0,0 +1,225 @@ + $widget['id'], 'widget_name' => $widget['name'], '_display' => 'template' ); + + if ( isset($wp_registered_widget_controls[$widget['id']]['id_base']) && isset($widget['params'][0]['number']) ) { + $id_base = $wp_registered_widget_controls[$widget['id']]['id_base']; + $args['_temp_id'] = "$id_base-__i__"; + $args['_multi_num'] = next_widget_id_number($id_base); + $args['_add'] = 'multi'; + } else { + $args['_add'] = 'single'; + if ( $sidebar ) + $args['_hide'] = '1'; + } + + $args = wp_list_widget_controls_dynamic_sidebar( array( 0 => $args, 1 => $widget['params'][0] ) ); + call_user_func_array( 'wp_widget_control', $args ); + } +} + +/** + * Callback to sort array by a 'name' key. + * + * @since 3.1.0 + * @access private + */ +function _sort_name_callback( $a, $b ) { + return strnatcasecmp( $a['name'], $b['name'] ); +} + +/** + * Show the widgets and their settings for a sidebar. + * Used in the the admin widget config screen. + * + * @since 2.5.0 + * + * @param string $sidebar id slug of the sidebar + */ +function wp_list_widget_controls( $sidebar ) { + add_filter( 'dynamic_sidebar_params', 'wp_list_widget_controls_dynamic_sidebar' ); + + echo "
    \n"; + + $description = wp_sidebar_description( $sidebar ); + + if ( !empty( $description ) ) { + echo "\n"; + } + + dynamic_sidebar( $sidebar ); + echo "
    \n"; +} + +/** + * {@internal Missing Short Description}} + * + * @since 2.5.0 + * + * @param array $params + * @return array + */ +function wp_list_widget_controls_dynamic_sidebar( $params ) { + global $wp_registered_widgets; + static $i = 0; + $i++; + + $widget_id = $params[0]['widget_id']; + $id = isset($params[0]['_temp_id']) ? $params[0]['_temp_id'] : $widget_id; + $hidden = isset($params[0]['_hide']) ? ' style="display:none;"' : ''; + + $params[0]['before_widget'] = "
    "; + $params[0]['after_widget'] = "
    "; + $params[0]['before_title'] = "%BEG_OF_TITLE%"; // deprecated + $params[0]['after_title'] = "%END_OF_TITLE%"; // deprecated + if ( is_callable( $wp_registered_widgets[$widget_id]['callback'] ) ) { + $wp_registered_widgets[$widget_id]['_callback'] = $wp_registered_widgets[$widget_id]['callback']; + $wp_registered_widgets[$widget_id]['callback'] = 'wp_widget_control'; + } + + return $params; +} + +function next_widget_id_number($id_base) { + global $wp_registered_widgets; + $number = 1; + + foreach ( $wp_registered_widgets as $widget_id => $widget ) { + if ( preg_match( '/' . $id_base . '-([0-9]+)$/', $widget_id, $matches ) ) + $number = max($number, $matches[1]); + } + $number++; + + return $number; +} + +/** + * Meta widget used to display the control form for a widget. + * + * Called from dynamic_sidebar(). + * + * @since 2.5.0 + * + * @param array $sidebar_args + * @return array + */ +function wp_widget_control( $sidebar_args ) { + global $wp_registered_widgets, $wp_registered_widget_controls, $sidebars_widgets; + + $widget_id = $sidebar_args['widget_id']; + $sidebar_id = isset($sidebar_args['id']) ? $sidebar_args['id'] : false; + $key = $sidebar_id ? array_search( $widget_id, $sidebars_widgets[$sidebar_id] ) : '-1'; // position of widget in sidebar + $control = isset($wp_registered_widget_controls[$widget_id]) ? $wp_registered_widget_controls[$widget_id] : array(); + $widget = $wp_registered_widgets[$widget_id]; + + $id_format = $widget['id']; + $widget_number = isset($control['params'][0]['number']) ? $control['params'][0]['number'] : ''; + $id_base = isset($control['id_base']) ? $control['id_base'] : $widget_id; + $multi_number = isset($sidebar_args['_multi_num']) ? $sidebar_args['_multi_num'] : ''; + $add_new = isset($sidebar_args['_add']) ? $sidebar_args['_add'] : ''; + + $query_arg = array( 'editwidget' => $widget['id'] ); + if ( $add_new ) { + $query_arg['addnew'] = 1; + if ( $multi_number ) { + $query_arg['num'] = $multi_number; + $query_arg['base'] = $id_base; + } + } else { + $query_arg['sidebar'] = $sidebar_id; + $query_arg['key'] = $key; + } + + // We aren't showing a widget control, we're outputing a template for a mult-widget control + if ( isset($sidebar_args['_display']) && 'template' == $sidebar_args['_display'] && $widget_number ) { + // number == -1 implies a template where id numbers are replaced by a generic '__i__' + $control['params'][0]['number'] = -1; + // with id_base widget id's are constructed like {$id_base}-{$id_number} + if ( isset($control['id_base']) ) + $id_format = $control['id_base'] . '-__i__'; + } + + $wp_registered_widgets[$widget_id]['callback'] = $wp_registered_widgets[$widget_id]['_callback']; + unset($wp_registered_widgets[$widget_id]['_callback']); + + $widget_title = esc_html( strip_tags( $sidebar_args['widget_name'] ) ); + $has_form = 'noform'; + + echo $sidebar_args['before_widget']; ?> +
    +
    + + +
    +

    +
    + +
    +
    +
    +" . __('There are no options for this widget.') . "

    \n"; ?> +
    + + + + + + + + +
    +
    + | + +
    +
    + + 'widget-' . esc_attr( $id_format ) . '-savewidget' ) ); ?> +
    +
    +
    +
    +
    + +
    + +
    + \ No newline at end of file diff --git a/src/wp-admin/index.php b/src/wp-admin/index.php new file mode 100644 index 0000000..35b041d --- /dev/null +++ b/src/wp-admin/index.php @@ -0,0 +1,70 @@ + 4, 'default' => 1) ); +else + add_screen_option('layout_columns', array('max' => 4, 'default' => 2) ); + +add_contextual_help($current_screen, + + '

    ' . __( 'Welcome to your WordPress Dashboard! You will find helpful tips in the Help tab of each screen to assist you as you get to know the application.' ) . '

    ' . + '

    ' . __( 'The Admin Bar at the top provides quick access to common tasks when you are viewing your site. If you miss the Favorite Actions dropdown, removed as of 3.2, you can find many of the same actions in the Admin Bar, such as Add New > Post.' ) . '

    ' . + '

    ' . __( 'The left-hand navigation menu provides links to the administration screens in your WordPress application. You can expand or collapse navigation sections by clicking on the arrow that appears on the right side of each navigation item when you hover over it. You can also minimize the navigation menu to a narrow icon strip by clicking on the Collapse Menu arrow at the bottom of the nav menu, below Settings; when minimized, the submenu items will be displayed on hover.' ) . '

    ' . + '

    ' . __( 'You can arrange your dashboard by choosing which boxes, or modules, to display in the work area, how many columns to display them in, and where each box should be placed. You can hide/show boxes and select the number of columns in the Screen Options tab. To rearrange the boxes, drag and drop by clicking on the title bar of the selected box and releasing when you see a gray dotted-line rectangle appear in the location you want to place the box. You can also expand or collapse each box; click the title area or downward arrow of the box. In addition, some boxes are configurable, and will show a “Configure” link in the title bar if you hover over it.' ) . '

    ' . + '

    ' . __( 'The boxes on your Dashboard screen are:' ) . '

    ' . + '

    ' . __( 'Right Now - Displays a summary of the content on your site and identifies which theme and version of WordPress you are using.' ) . '

    ' . + '

    ' . __( 'Recent Comments - Shows the most recent comments on your posts (configurable, up to 30) and allows you to moderate them.' ) . '

    ' . + '

    ' . __( 'Incoming Links - Shows links to your site found by Google Blog Search.' ) . '

    ' . + '

    ' . __( 'QuickPress - Allows you to create a new post and either publish it or save it as a draft.' ) . '

    ' . + '

    ' . __( 'Recent Drafts - Displays links to the 5 most recent draft posts you’ve started.' ) . '

    ' . + '

    ' . __( 'WordPress Blog - Come here for the latest scoop.' ) . '

    ' . + '

    ' . __( 'Other WordPress News - Shows the feed from WordPress Planet. You can configure it to show a different feed of your choosing.' ) . '

    ' . + '

    ' . __( 'Plugins - Features the most popular, newest, and recently updated plugins from the WordPress.org Plugin Directory.' ) . '

    ' . + '

    ' . __( 'For more information:' ) . '

    ' . + '

    ' . __( 'Documentation on Dashboard' ) . '

    ' . + '

    ' . __( 'Support Forums' ) . '

    ' +); + +include (ABSPATH . 'wp-admin/admin-header.php'); + +$today = current_time('mysql', 1); +?> + +
    + +

    + +
    + + + +
    +
    + +
    + + diff --git a/src/wp-admin/install-helper.php b/src/wp-admin/install-helper.php new file mode 100644 index 0000000..2970b7c --- /dev/null +++ b/src/wp-admin/install-helper.php @@ -0,0 +1,217 @@ + + * check_column('wp_links', 'link_description', 'mediumtext'); + * if (check_column($wpdb->comments, 'comment_author', 'tinytext')) + * echo "ok\n"; + * + * $error_count = 0; + * $tablename = $wpdb->links; + * // check the column + * if (!check_column($wpdb->links, 'link_description', 'varchar(255)')) { + * $ddl = "ALTER TABLE $wpdb->links MODIFY COLUMN link_description varchar(255) NOT NULL DEFAULT '' "; + * $q = $wpdb->query($ddl); + * } + * + * if (check_column($wpdb->links, 'link_description', 'varchar(255)')) { + * $res .= $tablename . ' - ok
    '; + * } else { + * $res .= 'There was a problem with ' . $tablename . '
    '; + * ++$error_count; + * } + * + * + * @package WordPress + * @subpackage Plugin + */ + +/** Load WordPress Bootstrap */ +require_once(dirname(dirname(__FILE__)).'/wp-load.php'); + +/** + * Turn debugging on or off. + * @global bool|int $debug + * @name $debug + * @var bool|int + * @since 1.0.0 + */ +$debug = 0; + +if ( ! function_exists('maybe_create_table') ) : +/** + * Create database table, if it doesn't already exist. + * + * @since 1.0.0 + * @package WordPress + * @subpackage Plugin + * @uses $wpdb + * + * @param string $table_name Database table name. + * @param string $create_ddl Create database table SQL. + * @return bool False on error, true if already exists or success. + */ +function maybe_create_table($table_name, $create_ddl) { + global $wpdb; + foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) { + if ($table == $table_name) { + return true; + } + } + //didn't find it try to create it. + $wpdb->query($create_ddl); + // we cannot directly tell that whether this succeeded! + foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) { + if ($table == $table_name) { + return true; + } + } + return false; +} +endif; + +if ( ! function_exists('maybe_add_column') ) : +/** + * Add column to database table, if column doesn't already exist in table. + * + * @since 1.0.0 + * @package WordPress + * @subpackage Plugin + * @uses $wpdb + * @uses $debug + * + * @param string $table_name Database table name + * @param string $column_name Table column name + * @param string $create_ddl SQL to add column to table. + * @return bool False on failure. True, if already exists or was successful. + */ +function maybe_add_column($table_name, $column_name, $create_ddl) { + global $wpdb, $debug; + foreach ($wpdb->get_col("DESC $table_name",0) as $column ) { + if ($debug) echo("checking $column == $column_name
    "); + + if ($column == $column_name) { + return true; + } + } + //didn't find it try to create it. + $wpdb->query($create_ddl); + // we cannot directly tell that whether this succeeded! + foreach ($wpdb->get_col("DESC $table_name",0) as $column ) { + if ($column == $column_name) { + return true; + } + } + return false; +} +endif; + +/** + * Drop column from database table, if it exists. + * + * @since 1.0.0 + * @package WordPress + * @subpackage Plugin + * @uses $wpdb + * + * @param string $table_name Table name + * @param string $column_name Column name + * @param string $drop_ddl SQL statement to drop column. + * @return bool False on failure, true on success or doesn't exist. + */ +function maybe_drop_column($table_name, $column_name, $drop_ddl) { + global $wpdb; + foreach ($wpdb->get_col("DESC $table_name",0) as $column ) { + if ($column == $column_name) { + //found it try to drop it. + $wpdb->query($drop_ddl); + // we cannot directly tell that whether this succeeded! + foreach ($wpdb->get_col("DESC $table_name",0) as $column ) { + if ($column == $column_name) { + return false; + } + } + } + } + // else didn't find it + return true; +} + +/** + * Check column matches criteria. + * + * Uses the SQL DESC for retrieving the table info for the column. It will help + * understand the parameters, if you do more research on what column information + * is returned by the SQL statement. Pass in null to skip checking that + * criteria. + * + * Column names returned from DESC table are case sensitive and are listed: + * Field + * Type + * Null + * Key + * Default + * Extra + * + * @since 1.0.0 + * @package WordPress + * @subpackage Plugin + * + * @param string $table_name Table name + * @param string $col_name Column name + * @param string $col_type Column type + * @param bool $is_null Optional. Check is null. + * @param mixed $key Optional. Key info. + * @param mixed $default Optional. Default value. + * @param mixed $extra Optional. Extra value. + * @return bool True, if matches. False, if not matching. + */ +function check_column($table_name, $col_name, $col_type, $is_null = null, $key = null, $default = null, $extra = null) { + global $wpdb, $debug; + $diffs = 0; + $results = $wpdb->get_results("DESC $table_name"); + + foreach ($results as $row ) { + if ($debug > 1) print_r($row); + + if ($row->Field == $col_name) { + // got our column, check the params + if ($debug) echo ("checking $row->Type against $col_type\n"); + if (($col_type != null) && ($row->Type != $col_type)) { + ++$diffs; + } + if (($is_null != null) && ($row->Null != $is_null)) { + ++$diffs; + } + if (($key != null) && ($row->Key != $key)) { + ++$diffs; + } + if (($default != null) && ($row->Default != $default)) { + ++$diffs; + } + if (($extra != null) && ($row->Extra != $extra)) { + ++$diffs; + } + if ($diffs > 0) { + if ($debug) echo ("diffs = $diffs returning false\n"); + return false; + } + return true; + } // end if found our column + } + return false; +} + +?> \ No newline at end of file diff --git a/src/wp-admin/install.php b/src/wp-admin/install.php new file mode 100644 index 0000000..0b65f52 --- /dev/null +++ b/src/wp-admin/install.php @@ -0,0 +1,264 @@ + + + + + + Error: PHP is not running + + +

    WordPress

    +

    Error: PHP is not running

    +

    WordPress requires that your web server is running PHP. Your server does not have PHP installed, or PHP is turned off.

    + + + + +> + + + <?php _e( 'WordPress › Installation' ); ?> + + + +

    WordPress

    + +get_var("SHOW TABLES LIKE '$wpdb->users'") != null ); + + // Ensure that Blogs appear in search engines by default + $blog_public = 1; + if ( ! empty( $_POST ) ) + $blog_public = isset( $_POST['blog_public'] ); + + $weblog_title = isset( $_POST['weblog_title'] ) ? trim( stripslashes( $_POST['weblog_title'] ) ) : ''; + $user_name = isset($_POST['user_name']) ? trim( stripslashes( $_POST['user_name'] ) ) : 'admin'; + $admin_password = isset($_POST['admin_password']) ? trim( stripslashes( $_POST['admin_password'] ) ) : ''; + $admin_email = isset( $_POST['admin_email'] ) ? trim( stripslashes( $_POST['admin_email'] ) ) : ''; + + if ( ! is_null( $error ) ) { +?> +

    ERROR: %s' ), $error ); ?>

    + +
    + + + + + + + + + + + + + + + + + + + + + + +
    + +

    + +
    + +

    +
    + +

    +
    +

    +
    +

    +

    +
    +' . __( 'Already Installed' ) . '

    ' . __( 'You appear to have already installed WordPress. To reinstall please clear your old database tables first.' ) . '

    ' . __('Log In') . '

    ' ); +} + +$php_version = phpversion(); +$mysql_version = $wpdb->db_version(); +$php_compat = version_compare( $php_version, $required_php_version, '>=' ); +$mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' ); + +if ( !$mysql_compat && !$php_compat ) + $compat = sprintf( __('You cannot install because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version ); +elseif ( !$php_compat ) + $compat = sprintf( __('You cannot install because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s.'), $wp_version, $required_php_version, $php_version ); +elseif ( !$mysql_compat ) + $compat = sprintf( __('You cannot install because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.'), $wp_version, $required_mysql_version, $mysql_version ); + +if ( !$mysql_compat || !$php_compat ) { + display_header(); + die('

    ' . __('Insufficient Requirements') . '

    ' . $compat . '

    '); +} + +switch($step) { + case 0: // Step 1 + case 1: // Step 1, direct link. + display_header(); +?> +

    +

    ReadMe documentation at your leisure. Otherwise, just fill in the information below and you’ll be on your way to using the most extendable and powerful personal publishing platform in the world.' ), '../readme.html' ); ?>

    + +

    +

    + +error ) ) + wp_die( $wpdb->error->get_error_message() ); + + display_header(); + // Fill in the data we gathered + $weblog_title = isset( $_POST['weblog_title'] ) ? trim( stripslashes( $_POST['weblog_title'] ) ) : ''; + $user_name = isset($_POST['user_name']) ? trim( stripslashes( $_POST['user_name'] ) ) : 'admin'; + $admin_password = isset($_POST['admin_password']) ? $_POST['admin_password'] : ''; + $admin_password_check = isset($_POST['admin_password2']) ? $_POST['admin_password2'] : ''; + $admin_email = isset( $_POST['admin_email'] ) ?trim( stripslashes( $_POST['admin_email'] ) ) : ''; + $public = isset( $_POST['blog_public'] ) ? (int) $_POST['blog_public'] : 0; + // check e-mail address + $error = false; + if ( empty( $user_name ) ) { + // TODO: poka-yoke + display_setup_form( __('you must provide a valid username.') ); + $error = true; + } elseif ( $user_name != sanitize_user( $user_name, true ) ) { + display_setup_form( __('the username you provided has invalid characters.') ); + $error = true; + } elseif ( $admin_password != $admin_password_check ) { + // TODO: poka-yoke + display_setup_form( __( 'your passwords do not match. Please try again' ) ); + $error = true; + } else if ( empty( $admin_email ) ) { + // TODO: poka-yoke + display_setup_form( __( 'you must provide an e-mail address.' ) ); + $error = true; + } elseif ( ! is_email( $admin_email ) ) { + // TODO: poka-yoke + display_setup_form( __( 'that isn’t a valid e-mail address. E-mail addresses look like: username@example.com' ) ); + $error = true; + } + + if ( $error === false ) { + $wpdb->show_errors(); + $result = wp_install($weblog_title, $user_name, $admin_email, $public, '', $admin_password); + extract( $result, EXTR_SKIP ); +?> + +

    + +

    + + + + + + + + + + +
    '. esc_html($password) .'
    '; + echo "

    $password_message

    "; ?> +
    + +

    + + + + + + + + + + diff --git a/src/wp-admin/js/cat.dev.js b/src/wp-admin/js/cat.dev.js new file mode 100644 index 0000000..cbc2900 --- /dev/null +++ b/src/wp-admin/js/cat.dev.js @@ -0,0 +1,5 @@ +jQuery(document).ready( function($) { + var myConfirm = function() { return '' !== $('#newcat').val(); }; + $('#jaxcat').prepend('' + catL10n.how + ''); + $('#categorychecklist').wpList( { alt: '', response: 'cat-ajax-response', confirm: myConfirm } ); +} ); diff --git a/src/wp-admin/js/cat.js b/src/wp-admin/js/cat.js new file mode 100644 index 0000000..deee8c4 --- /dev/null +++ b/src/wp-admin/js/cat.js @@ -0,0 +1 @@ +jQuery(document).ready(function(b){var a=function(){return""!==b("#newcat").val()};b("#jaxcat").prepend(''+catL10n.how+'');b("#categorychecklist").wpList({alt:"",response:"cat-ajax-response",confirm:a})}); \ No newline at end of file diff --git a/src/wp-admin/js/categories.dev.js b/src/wp-admin/js/categories.dev.js new file mode 100644 index 0000000..cc58eb4 --- /dev/null +++ b/src/wp-admin/js/categories.dev.js @@ -0,0 +1,34 @@ +jQuery(document).ready(function($) { + var options = false, addAfter, delBefore, delAfter; + if ( document.forms['addcat'].category_parent ) + options = document.forms['addcat'].category_parent.options; + + addAfter = function( r, settings ) { + var name, id; + + name = $("" + $('name', r).text() + "").text(); + id = $('cat', r).attr('id'); + options[options.length] = new Option(name, id); + } + + delAfter = function( r, settings ) { + var id = $('cat', r).attr('id'), o; + for ( o = 0; o < options.length; o++ ) + if ( id == options[o].value ) + options[o] = null; + } + + delBefore = function(s) { + if ( 'undefined' != showNotice ) + return showNotice.warn() ? s : false; + + return s; + } + + if ( options ) + $('#the-list').wpList( { addAfter: addAfter, delBefore: delBefore, delAfter: delAfter } ); + else + $('#the-list').wpList({ delBefore: delBefore }); + + $('.delete a[class^="delete"]').live('click', function(){return false;}); +}); diff --git a/src/wp-admin/js/categories.js b/src/wp-admin/js/categories.js new file mode 100644 index 0000000..45c2358 --- /dev/null +++ b/src/wp-admin/js/categories.js @@ -0,0 +1 @@ +jQuery(document).ready(function(d){var b=false,e,c,a;if(document.forms.addcat.category_parent){b=document.forms.addcat.category_parent.options}e=function(h,g){var f,i;f=d(""+d("name",h).text()+"").text();i=d("cat",h).attr("id");b[b.length]=new Option(f,i)};a=function(g,f){var i=d("cat",g).attr("id"),h;for(h=0;h' + + $( '#mm option[value="' + mm + '"]' ).text() + ' ' + + jj + ', ' + + aa + ' @ ' + + hh + ':' + + mn + ' ' + ); + return false; + }); +}); diff --git a/src/wp-admin/js/comment.js b/src/wp-admin/js/comment.js new file mode 100644 index 0000000..5816ebb --- /dev/null +++ b/src/wp-admin/js/comment.js @@ -0,0 +1 @@ +jQuery(document).ready(function(b){var a=b("#timestamp").html();b(".edit-timestamp").click(function(){if(b("#timestampdiv").is(":hidden")){b("#timestampdiv").slideDown("normal");b(".edit-timestamp").hide()}return false});b(".cancel-timestamp").click(function(){b("#timestampdiv").slideUp("normal");b("#mm").val(b("#hidden_mm").val());b("#jj").val(b("#hidden_jj").val());b("#aa").val(b("#hidden_aa").val());b("#hh").val(b("#hidden_hh").val());b("#mn").val(b("#hidden_mn").val());b("#timestamp").html(a);b(".edit-timestamp").show();return false});b(".save-timestamp").click(function(){var g=b("#aa").val(),h=b("#mm").val(),d=b("#jj").val(),c=b("#hh").val(),f=b("#mn").val(),e=new Date(g,h-1,d,c,f);if(e.getFullYear()!=g||(1+e.getMonth())!=h||e.getDate()!=d||e.getMinutes()!=f){b(".timestamp-wrap","#timestampdiv").addClass("form-invalid");return false}else{b(".timestamp-wrap","#timestampdiv").removeClass("form-invalid")}b("#timestampdiv").slideUp("normal");b(".edit-timestamp").show();b("#timestamp").html(commentL10n.submittedOn+" "+b('#mm option[value="'+h+'"]').text()+" "+d+", "+g+" @ "+c+":"+f+" ");return false})}); \ No newline at end of file diff --git a/src/wp-admin/js/common.dev.js b/src/wp-admin/js/common.dev.js new file mode 100644 index 0000000..5ab98ed --- /dev/null +++ b/src/wp-admin/js/common.dev.js @@ -0,0 +1,370 @@ +var showNotice, adminMenu, columns, validateForm, screenMeta; +(function($){ +// sidebar admin menu +adminMenu = { + init : function() { + var menu = $('#adminmenu'); + + $('.wp-menu-toggle', menu).each( function() { + var t = $(this), sub = t.siblings('.wp-submenu'); + if ( sub.length ) + t.click(function(){ adminMenu.toggle( sub ); }); + else + t.hide(); + }); + + this.favorites(); + + $('#collapse-menu', menu).click(function(){ + if ( $('body').hasClass('folded') ) { + adminMenu.fold(1); + deleteUserSetting( 'mfold' ); + } else { + adminMenu.fold(); + setUserSetting( 'mfold', 'f' ); + } + return false; + }); + + if ( $('body').hasClass('folded') ) + this.fold(); + }, + + restoreMenuState : function() { + // (perhaps) needed for back-compat + }, + + toggle : function(el) { + el.slideToggle(150, function() { + var id = el.css('display','').parent().toggleClass( 'wp-menu-open' ).attr('id'); + if ( id ) { + $('li.wp-has-submenu', '#adminmenu').each(function(i, e) { + if ( id == e.id ) { + var v = $(e).hasClass('wp-menu-open') ? 'o' : 'c'; + setUserSetting( 'm'+i, v ); + } + }); + } + }); + + return false; + }, + + fold : function(off) { + if (off) { + $('body').removeClass('folded'); + $('#adminmenu li.wp-has-submenu').unbind(); + } else { + $('body').addClass('folded'); + $('#adminmenu li.wp-has-submenu').hoverIntent({ + over: function(e){ + var m, b, h, o, f; + m = $(this).find('.wp-submenu'); + b = $(this).offset().top + m.height() + 1; // Bottom offset of the menu + h = $('#wpwrap').height(); // Height of the entire page + o = 60 + b - h; + f = $(window).height() + $(window).scrollTop() - 15; // The fold + if ( f < (b - o) ) { + o = b - f; + } + if ( o > 1 ) { + m.css({'marginTop':'-'+o+'px'}); + } else if ( m.css('marginTop') ) { + m.css({'marginTop':''}); + } + m.addClass('sub-open'); + }, + out: function(){ + $(this).find('.wp-submenu').removeClass('sub-open'); + }, + timeout: 220, + sensitivity: 8, + interval: 100 + }); + + } + }, + + favorites : function() { + $('#favorite-inside').width( $('#favorite-actions').width() - 4 ); + $('#favorite-toggle, #favorite-inside').bind('mouseenter', function() { + $('#favorite-inside').removeClass('slideUp').addClass('slideDown'); + setTimeout(function() { + if ( $('#favorite-inside').hasClass('slideDown') ) { + $('#favorite-inside').slideDown(100); + $('#favorite-first').addClass('slide-down'); + } + }, 200); + }).bind('mouseleave', function() { + $('#favorite-inside').removeClass('slideDown').addClass('slideUp'); + setTimeout(function() { + if ( $('#favorite-inside').hasClass('slideUp') ) { + $('#favorite-inside').slideUp(100, function() { + $('#favorite-first').removeClass('slide-down'); + }); + } + }, 300); + }); + } +}; + +$(document).ready(function(){ adminMenu.init(); }); + +// show/hide/save table columns +columns = { + init : function() { + var that = this; + $('.hide-column-tog', '#adv-settings').click( function() { + var $t = $(this), column = $t.val(); + if ( $t.prop('checked') ) + that.checked(column); + else + that.unchecked(column); + + columns.saveManageColumnsState(); + }); + }, + + saveManageColumnsState : function() { + var hidden = this.hidden(); + $.post(ajaxurl, { + action: 'hidden-columns', + hidden: hidden, + screenoptionnonce: $('#screenoptionnonce').val(), + page: pagenow + }); + }, + + checked : function(column) { + $('.column-' + column).show(); + this.colSpanChange(+1); + }, + + unchecked : function(column) { + $('.column-' + column).hide(); + this.colSpanChange(-1); + }, + + hidden : function() { + return $('.manage-column').filter(':hidden').map(function() { return this.id; }).get().join(','); + }, + + useCheckboxesForHidden : function() { + this.hidden = function(){ + return $('.hide-column-tog').not(':checked').map(function() { + var id = this.id; + return id.substring( id, id.length - 5 ); + }).get().join(','); + }; + }, + + colSpanChange : function(diff) { + var $t = $('table').find('.colspanchange'), n; + if ( !$t.length ) + return; + n = parseInt( $t.attr('colspan'), 10 ) + diff; + $t.attr('colspan', n.toString()); + } +} + +$(document).ready(function(){columns.init();}); + +validateForm = function( form ) { + return !$( form ).find('.form-required').filter( function() { return $('input:visible', this).val() == ''; } ).addClass( 'form-invalid' ).find('input:visible').change( function() { $(this).closest('.form-invalid').removeClass( 'form-invalid' ); } ).size(); +} + +// stub for doing better warnings +showNotice = { + warn : function() { + var msg = commonL10n.warnDelete || ''; + if ( confirm(msg) ) { + return true; + } + + return false; + }, + + note : function(text) { + alert(text); + } +}; + +screenMeta = { + links: { + 'screen-options-link-wrap': 'screen-options-wrap', + 'contextual-help-link-wrap': 'contextual-help-wrap' + }, + init: function() { + $('.screen-meta-toggle').click( screenMeta.toggleEvent ); + }, + toggleEvent: function( e ) { + var panel; + e.preventDefault(); + + // Check to see if we found a panel. + if ( ! screenMeta.links[ this.id ] ) + return; + + panel = $('#' + screenMeta.links[ this.id ]); + + if ( panel.is(':visible') ) + screenMeta.close( panel, $(this) ); + else + screenMeta.open( panel, $(this) ); + }, + open: function( panel, link ) { + $('.screen-meta-toggle').not( link ).css('visibility', 'hidden'); + + panel.slideDown( 'fast', function() { + link.addClass('screen-meta-active'); + }); + }, + close: function( panel, link ) { + panel.slideUp( 'fast', function() { + link.removeClass('screen-meta-active'); + $('.screen-meta-toggle').css('visibility', ''); + }); + } +}; + +$(document).ready( function() { + var lastClicked = false, checks, first, last, checked, dropdown, + pageInput = $('input[name="paged"]'), currentPage; + + // Move .updated and .error alert boxes. Don't move boxes designed to be inline. + $('div.wrap h2:first').nextAll('div.updated, div.error').addClass('below-h2'); + $('div.updated, div.error').not('.below-h2, .inline').insertAfter( $('div.wrap h2:first') ); + + // Init screen meta + screenMeta.init(); + + // User info dropdown. + dropdown = { + doc: $(document), + element: $('#user_info'), + open: function() { + if ( ! dropdown.element.hasClass('active') ) { + dropdown.element.addClass('active'); + dropdown.doc.one( 'click', dropdown.close ); + return false; + } + }, + close: function() { + dropdown.element.removeClass('active'); + } + }; + + dropdown.element.click( dropdown.open ); + + // check all checkboxes + $('tbody').children().children('.check-column').find(':checkbox').click( function(e) { + if ( 'undefined' == e.shiftKey ) { return true; } + if ( e.shiftKey ) { + if ( !lastClicked ) { return true; } + checks = $( lastClicked ).closest( 'form' ).find( ':checkbox' ); + first = checks.index( lastClicked ); + last = checks.index( this ); + checked = $(this).prop('checked'); + if ( 0 < first && 0 < last && first != last ) { + checks.slice( first, last ).prop( 'checked', function(){ + if ( $(this).closest('tr').is(':visible') ) + return checked; + + return false; + }); + } + } + lastClicked = this; + return true; + }); + + $('thead, tfoot').find('.check-column :checkbox').click( function(e) { + var c = $(this).prop('checked'), + kbtoggle = 'undefined' == typeof toggleWithKeyboard ? false : toggleWithKeyboard, + toggle = e.shiftKey || kbtoggle; + + $(this).closest( 'table' ).children( 'tbody' ).filter(':visible') + .children().children('.check-column').find(':checkbox') + .prop('checked', function() { + if ( $(this).closest('tr').is(':hidden') ) + return false; + if ( toggle ) + return $(this).prop( 'checked' ); + else if (c) + return true; + return false; + }); + + $(this).closest('table').children('thead, tfoot').filter(':visible') + .children().children('.check-column').find(':checkbox') + .prop('checked', function() { + if ( toggle ) + return false; + else if (c) + return true; + return false; + }); + }); + + $('#default-password-nag-no').click( function() { + setUserSetting('default_password_nag', 'hide'); + $('div.default-password-nag').hide(); + return false; + }); + + // tab in textareas + $('#newcontent').bind('keydown.wpevent_InsertTab', function(e) { + if ( e.keyCode != 9 ) + return true; + + var el = e.target, selStart = el.selectionStart, selEnd = el.selectionEnd, val = el.value, scroll, sel; + + try { + this.lastKey = 9; // not a standard DOM property, lastKey is to help stop Opera tab event. See blur handler below. + } catch(err) {} + + if ( document.selection ) { + el.focus(); + sel = document.selection.createRange(); + sel.text = '\t'; + } else if ( selStart >= 0 ) { + scroll = this.scrollTop; + el.value = val.substring(0, selStart).concat('\t', val.substring(selEnd) ); + el.selectionStart = el.selectionEnd = selStart + 1; + this.scrollTop = scroll; + } + + if ( e.stopPropagation ) + e.stopPropagation(); + if ( e.preventDefault ) + e.preventDefault(); + }); + + $('#newcontent').bind('blur.wpevent_InsertTab', function(e) { + if ( this.lastKey && 9 == this.lastKey ) + this.focus(); + }); + + if ( pageInput.length ) { + currentPage = pageInput.val(); + pageInput.closest('form').submit( function(){ + // Reset paging var for new filters/searches. See #17685. + if ( pageInput.val() == currentPage ) + pageInput.val('1'); + }); + } + +}); + +// internal use +$(document).bind( 'wp_CloseOnEscape', function( e, data ) { + if ( typeof(data.cb) != 'function' ) + return; + + if ( typeof(data.condition) != 'function' || data.condition() ) + data.cb(); + + return true; +}); + +})(jQuery); diff --git a/src/wp-admin/js/common.js b/src/wp-admin/js/common.js new file mode 100644 index 0000000..944dbdb --- /dev/null +++ b/src/wp-admin/js/common.js @@ -0,0 +1 @@ +var showNotice,adminMenu,columns,validateForm,screenMeta;(function(a){adminMenu={init:function(){var b=a("#adminmenu");a(".wp-menu-toggle",b).each(function(){var c=a(this),d=c.siblings(".wp-submenu");if(d.length){c.click(function(){adminMenu.toggle(d)})}else{c.hide()}});this.favorites();a("#collapse-menu",b).click(function(){if(a("body").hasClass("folded")){adminMenu.fold(1);deleteUserSetting("mfold")}else{adminMenu.fold();setUserSetting("mfold","f")}return false});if(a("body").hasClass("folded")){this.fold()}},restoreMenuState:function(){},toggle:function(b){b.slideToggle(150,function(){var c=b.css("display","").parent().toggleClass("wp-menu-open").attr("id");if(c){a("li.wp-has-submenu","#adminmenu").each(function(f,g){if(c==g.id){var d=a(g).hasClass("wp-menu-open")?"o":"c";setUserSetting("m"+f,d)}})}});return false},fold:function(b){if(b){a("body").removeClass("folded");a("#adminmenu li.wp-has-submenu").unbind()}else{a("body").addClass("folded");a("#adminmenu li.wp-has-submenu").hoverIntent({over:function(j){var d,c,g,k,i;d=a(this).find(".wp-submenu");c=a(this).offset().top+d.height()+1;g=a("#wpwrap").height();k=60+c-g;i=a(window).height()+a(window).scrollTop()-15;if(i<(c-k)){k=c-i}if(k>1){d.css({marginTop:"-"+k+"px"})}else{if(d.css("marginTop")){d.css({marginTop:""})}}d.addClass("sub-open")},out:function(){a(this).find(".wp-submenu").removeClass("sub-open")},timeout:220,sensitivity:8,interval:100})}},favorites:function(){a("#favorite-inside").width(a("#favorite-actions").width()-4);a("#favorite-toggle, #favorite-inside").bind("mouseenter",function(){a("#favorite-inside").removeClass("slideUp").addClass("slideDown");setTimeout(function(){if(a("#favorite-inside").hasClass("slideDown")){a("#favorite-inside").slideDown(100);a("#favorite-first").addClass("slide-down")}},200)}).bind("mouseleave",function(){a("#favorite-inside").removeClass("slideDown").addClass("slideUp");setTimeout(function(){if(a("#favorite-inside").hasClass("slideUp")){a("#favorite-inside").slideUp(100,function(){a("#favorite-first").removeClass("slide-down")})}},300)})}};a(document).ready(function(){adminMenu.init()});columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var d=a(this),c=d.val();if(d.prop("checked")){b.checked(c)}else{b.unchecked(c)}columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).show();this.colSpanChange(+1)},unchecked:function(b){a(".column-"+b).hide();this.colSpanChange(-1)},hidden:function(){return a(".manage-column").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var b=this.id;return b.substring(b,b.length-5)}).get().join(",")}},colSpanChange:function(b){var d=a("table").find(".colspanchange"),c;if(!d.length){return}c=parseInt(d.attr("colspan"),10)+b;d.attr("colspan",c.toString())}};a(document).ready(function(){columns.init()});validateForm=function(b){return !a(b).find(".form-required").filter(function(){return a("input:visible",this).val()==""}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).size()};showNotice={warn:function(){var b=commonL10n.warnDelete||"";if(confirm(b)){return true}return false},note:function(b){alert(b)}};screenMeta={links:{"screen-options-link-wrap":"screen-options-wrap","contextual-help-link-wrap":"contextual-help-wrap"},init:function(){a(".screen-meta-toggle").click(screenMeta.toggleEvent)},toggleEvent:function(c){var b;c.preventDefault();if(!screenMeta.links[this.id]){return}b=a("#"+screenMeta.links[this.id]);if(b.is(":visible")){screenMeta.close(b,a(this))}else{screenMeta.open(b,a(this))}},open:function(b,c){a(".screen-meta-toggle").not(c).css("visibility","hidden");b.slideDown("fast",function(){c.addClass("screen-meta-active")})},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active");a(".screen-meta-toggle").css("visibility","")})}};a(document).ready(function(){var i=false,b,f,e,d,h,g=a('input[name="paged"]'),c;a("div.wrap h2:first").nextAll("div.updated, div.error").addClass("below-h2");a("div.updated, div.error").not(".below-h2, .inline").insertAfter(a("div.wrap h2:first"));screenMeta.init();h={doc:a(document),element:a("#user_info"),open:function(){if(!h.element.hasClass("active")){h.element.addClass("active");h.doc.one("click",h.close);return false}},close:function(){h.element.removeClass("active")}};h.element.click(h.open);a("tbody").children().children(".check-column").find(":checkbox").click(function(j){if("undefined"==j.shiftKey){return true}if(j.shiftKey){if(!i){return true}b=a(i).closest("form").find(":checkbox");f=b.index(i);e=b.index(this);d=a(this).prop("checked");if(0=0){j=this.scrollTop;l.value=p.substring(0,q).concat("\t",p.substring(k));l.selectionStart=l.selectionEnd=q+1;this.scrollTop=j}}if(o.stopPropagation){o.stopPropagation()}if(o.preventDefault){o.preventDefault()}});a("#newcontent").bind("blur.wpevent_InsertTab",function(j){if(this.lastKey&&9==this.lastKey){this.focus()}});if(g.length){c=g.val();g.closest("form").submit(function(){if(g.val()==c){g.val("1")}})}});a(document).bind("wp_CloseOnEscape",function(c,b){if(typeof(b.cb)!="function"){return}if(typeof(b.condition)!="function"||b.condition()){b.cb()}return true})})(jQuery); \ No newline at end of file diff --git a/src/wp-admin/js/custom-background.dev.js b/src/wp-admin/js/custom-background.dev.js new file mode 100644 index 0000000..b4dbc66 --- /dev/null +++ b/src/wp-admin/js/custom-background.dev.js @@ -0,0 +1,55 @@ +var farbtastic; + +function pickColor(color) { + farbtastic.setColor(color); + jQuery('#background-color').val(color); + jQuery('#custom-background-image').css('background-color', color); + if ( color && color !== '#' ) + jQuery('#clearcolor').show(); + else + jQuery('#clearcolor').hide(); +} + +jQuery(document).ready(function() { + jQuery('#pickcolor').click(function() { + jQuery('#colorPickerDiv').show(); + return false; + }); + + jQuery('#clearcolor a').click( function(e) { + pickColor(''); + e.preventDefault(); + }); + + jQuery('#background-color').keyup(function() { + var _hex = jQuery('#background-color').val(), hex = _hex; + if ( hex.charAt(0) != '#' ) + hex = '#' + hex; + hex = hex.replace(/[^#a-fA-F0-9]+/, ''); + if ( hex != _hex ) + jQuery('#background-color').val(hex); + if ( hex.length == 4 || hex.length == 7 ) + pickColor( hex ); + }); + + jQuery('input[name="background-position-x"]').change(function() { + jQuery('#custom-background-image').css('background-position', jQuery(this).val() + ' top'); + }); + + jQuery('input[name="background-repeat"]').change(function() { + jQuery('#custom-background-image').css('background-repeat', jQuery(this).val()); + }); + + farbtastic = jQuery.farbtastic('#colorPickerDiv', function(color) { + pickColor(color); + }); + pickColor(jQuery('#background-color').val()); + + jQuery(document).mousedown(function(){ + jQuery('#colorPickerDiv').each(function(){ + var display = jQuery(this).css('display'); + if ( display == 'block' ) + jQuery(this).fadeOut(2); + }); + }); +}); diff --git a/src/wp-admin/js/custom-background.js b/src/wp-admin/js/custom-background.js new file mode 100644 index 0000000..6cf8851 --- /dev/null +++ b/src/wp-admin/js/custom-background.js @@ -0,0 +1 @@ +var farbtastic;function pickColor(a){farbtastic.setColor(a);jQuery("#background-color").val(a);jQuery("#custom-background-image").css("background-color",a);if(a&&a!=="#"){jQuery("#clearcolor").show()}else{jQuery("#clearcolor").hide()}}jQuery(document).ready(function(){jQuery("#pickcolor").click(function(){jQuery("#colorPickerDiv").show();return false});jQuery("#clearcolor a").click(function(a){pickColor("");a.preventDefault()});jQuery("#background-color").keyup(function(){var b=jQuery("#background-color").val(),a=b;if(a.charAt(0)!="#"){a="#"+a}a=a.replace(/[^#a-fA-F0-9]+/,"");if(a!=b){jQuery("#background-color").val(a)}if(a.length==4||a.length==7){pickColor(a)}});jQuery('input[name="background-position-x"]').change(function(){jQuery("#custom-background-image").css("background-position",jQuery(this).val()+" top")});jQuery('input[name="background-repeat"]').change(function(){jQuery("#custom-background-image").css("background-repeat",jQuery(this).val())});farbtastic=jQuery.farbtastic("#colorPickerDiv",function(a){pickColor(a)});pickColor(jQuery("#background-color").val());jQuery(document).mousedown(function(){jQuery("#colorPickerDiv").each(function(){var a=jQuery(this).css("display");if(a=="block"){jQuery(this).fadeOut(2)}})})}); \ No newline at end of file diff --git a/src/wp-admin/js/custom-fields.dev.js b/src/wp-admin/js/custom-fields.dev.js new file mode 100644 index 0000000..9eab214 --- /dev/null +++ b/src/wp-admin/js/custom-fields.dev.js @@ -0,0 +1,34 @@ +jQuery(document).ready( function($) { + var before, addBefore, addAfter, delBefore; + + before = function() { + var nonce = $('#newmeta [name="_ajax_nonce"]').val(), postId = $('#post_ID').val(); + if ( !nonce || !postId ) { return false; } + return [nonce,postId]; + } + + addBefore = function( s ) { + var b = before(); + if ( !b ) { return false; } + s.data = s.data.replace(/_ajax_nonce=[a-f0-9]+/, '_ajax_nonce=' + b[0]) + '&post_id=' + b[1]; + return s; + }; + + addAfter = function( r, s ) { + var postId = $('postid', r).text(), h; + if ( !postId ) { return; } + $('#post_ID').attr( 'name', 'post_ID' ).val( postId ); + h = $('#hiddenaction'); + if ( 'post' == h.val() ) { h.val( 'postajaxpost' ); } + }; + + delBefore = function( s ) { + var b = before(); if ( !b ) return false; + s.data._ajax_nonce = b[0]; s.data.post_id = b[1]; + return s; + } + + $('#the-list') + .wpList( { addBefore: addBefore, addAfter: addAfter, delBefore: delBefore } ) + .find('.updatemeta, .deletemeta').attr( 'type', 'button' ); +} ); diff --git a/src/wp-admin/js/custom-fields.js b/src/wp-admin/js/custom-fields.js new file mode 100644 index 0000000..dbe2f48 --- /dev/null +++ b/src/wp-admin/js/custom-fields.js @@ -0,0 +1 @@ +jQuery(document).ready(function(d){var c,b,e,a;c=function(){var g=d('#newmeta [name="_ajax_nonce"]').val(),f=d("#post_ID").val();if(!g||!f){return false}return[g,f]};b=function(g){var f=c();if(!f){return false}g.data=g.data.replace(/_ajax_nonce=[a-f0-9]+/,"_ajax_nonce="+f[0])+"&post_id="+f[1];return g};e=function(j,i){var f=d("postid",j).text(),g;if(!f){return}d("#post_ID").attr("name","post_ID").val(f);g=d("#hiddenaction");if("post"==g.val()){g.val("postajaxpost")}};a=function(g){var f=c();if(!f){return false}g.data._ajax_nonce=f[0];g.data.post_id=f[1];return g};d("#the-list").wpList({addBefore:b,addAfter:e,delBefore:a}).find(".updatemeta, .deletemeta").attr("type","button")}); \ No newline at end of file diff --git a/src/wp-admin/js/dashboard.dev.js b/src/wp-admin/js/dashboard.dev.js new file mode 100644 index 0000000..127a7bd --- /dev/null +++ b/src/wp-admin/js/dashboard.dev.js @@ -0,0 +1,67 @@ +var ajaxWidgets, ajaxPopulateWidgets, quickPressLoad; + +jQuery(document).ready( function($) { + // These widgets are sometimes populated via ajax + ajaxWidgets = [ + 'dashboard_incoming_links', + 'dashboard_primary', + 'dashboard_secondary', + 'dashboard_plugins' + ]; + + ajaxPopulateWidgets = function(el) { + function show(i, id) { + var p, e = $('#' + id + ' div.inside:visible').find('.widget-loading'); + if ( e.length ) { + p = e.parent(); + setTimeout( function(){ + p.load( ajaxurl.replace( '/admin-ajax.php', '' ) + '/index-extra.php?jax=' + id, '', function() { + p.hide().slideDown('normal', function(){ + $(this).css('display', ''); + }); + }); + }, i * 500 ); + } + } + + if ( el ) { + el = el.toString(); + if ( $.inArray(el, ajaxWidgets) != -1 ) + show(0, el); + } else { + $.each( ajaxWidgets, show ); + } + }; + ajaxPopulateWidgets(); + + postboxes.add_postbox_toggles(pagenow, { pbshow: ajaxPopulateWidgets } ); + + /* QuickPress */ + quickPressLoad = function() { + var act = $('#quickpost-action'), t; + t = $('#quick-press').submit( function() { + $('#dashboard_quick_press #publishing-action img.waiting').css('visibility', 'visible'); + $('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop('disabled', true); + + if ( 'post' == act.val() ) { + act.val( 'post-quickpress-publish' ); + } + + $('#dashboard_quick_press div.inside').load( t.attr( 'action' ), t.serializeArray(), function() { + $('#dashboard_quick_press #publishing-action img.waiting').css('visibility', 'hidden'); + $('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop('disabled', false); + $('#dashboard_quick_press ul').next('p').remove(); + $('#dashboard_quick_press ul').find('li').each( function() { + $('#dashboard_recent_drafts ul').prepend( this ); + } ).end().remove(); + quickPressLoad(); + } ); + return false; + } ); + + $('#publish').click( function() { act.val( 'post-quickpress-publish' ); } ); + + }; + quickPressLoad(); + +} ); diff --git a/src/wp-admin/js/dashboard.js b/src/wp-admin/js/dashboard.js new file mode 100644 index 0000000..bd836d1 --- /dev/null +++ b/src/wp-admin/js/dashboard.js @@ -0,0 +1 @@ +var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(a){ajaxWidgets=["dashboard_incoming_links","dashboard_primary","dashboard_secondary","dashboard_plugins"];ajaxPopulateWidgets=function(c){function b(d,h){var g,f=a("#"+h+" div.inside:visible").find(".widget-loading");if(f.length){g=f.parent();setTimeout(function(){g.load(ajaxurl.replace("/admin-ajax.php","")+"/index-extra.php?jax="+h,"",function(){g.hide().slideDown("normal",function(){a(this).css("display","")})})},d*500)}}if(c){c=c.toString();if(a.inArray(c,ajaxWidgets)!=-1){b(0,c)}}else{a.each(ajaxWidgets,b)}};ajaxPopulateWidgets();postboxes.add_postbox_toggles(pagenow,{pbshow:ajaxPopulateWidgets});quickPressLoad=function(){var b=a("#quickpost-action"),c;c=a("#quick-press").submit(function(){a("#dashboard_quick_press #publishing-action img.waiting").css("visibility","visible");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",true);if("post"==b.val()){b.val("post-quickpress-publish")}a("#dashboard_quick_press div.inside").load(c.attr("action"),c.serializeArray(),function(){a("#dashboard_quick_press #publishing-action img.waiting").css("visibility","hidden");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",false);a("#dashboard_quick_press ul").next("p").remove();a("#dashboard_quick_press ul").find("li").each(function(){a("#dashboard_recent_drafts ul").prepend(this)}).end().remove();quickPressLoad()});return false});a("#publish").click(function(){b.val("post-quickpress-publish")})};quickPressLoad()}); \ No newline at end of file diff --git a/src/wp-admin/js/edit-comments.dev.js b/src/wp-admin/js/edit-comments.dev.js new file mode 100644 index 0000000..7cffd56 --- /dev/null +++ b/src/wp-admin/js/edit-comments.dev.js @@ -0,0 +1,596 @@ +var theList, theExtraList, toggleWithKeyboard = false, getCount, updateCount, updatePending, dashboardTotals; +(function($) { + +setCommentsList = function() { + var totalInput, perPageInput, pageInput, lastConfidentTime = 0, dimAfter, delBefore, updateTotalCount, delAfter, refillTheExtraList; + + totalInput = $('input[name="_total"]', '#comments-form'); + perPageInput = $('input[name="_per_page"]', '#comments-form'); + pageInput = $('input[name="_page"]', '#comments-form'); + + dimAfter = function( r, settings ) { + var c = $('#' + settings.element), editRow, replyID, replyButton; + + editRow = $('#replyrow'); + replyID = $('#comment_ID', editRow).val(); + replyButton = $('#replybtn', editRow); + + if ( c.is('.unapproved') ) { + if ( settings.data.id == replyID ) + replyButton.text(adminCommentsL10n.replyApprove); + + c.find('div.comment_status').html('0'); + } else { + if ( settings.data.id == replyID ) + replyButton.text(adminCommentsL10n.reply); + + c.find('div.comment_status').html('1'); + } + + $('span.pending-count').each( function() { + var a = $(this), n, dif; + n = a.html().replace(/[^0-9]+/g, ''); + n = parseInt(n,10); + if ( isNaN(n) ) return; + dif = $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1; + n = n + dif; + if ( n < 0 ) { n = 0; } + a.closest('.awaiting-mod')[ 0 == n ? 'addClass' : 'removeClass' ]('count-0'); + updateCount(a, n); + dashboardTotals(); + }); + }; + + // Send current total, page, per_page and url + delBefore = function( settings, list ) { + var cl = $(settings.target).attr('class'), id, el, n, h, a, author, action = false; + + settings.data._total = totalInput.val() || 0; + settings.data._per_page = perPageInput.val() || 0; + settings.data._page = pageInput.val() || 0; + settings.data._url = document.location.href; + settings.data.comment_status = $('input[name="comment_status"]', '#comments-form').val(); + + if ( cl.indexOf(':trash=1') != -1 ) + action = 'trash'; + else if ( cl.indexOf(':spam=1') != -1 ) + action = 'spam'; + + if ( action ) { + id = cl.replace(/.*?comment-([0-9]+).*/, '$1'); + el = $('#comment-' + id); + note = $('#' + action + '-undo-holder').html(); + + el.find('.check-column :checkbox').prop('checked', false); // Uncheck the row so as not to be affected by Bulk Edits. + + if ( el.siblings('#replyrow').length && commentReply.cid == id ) + commentReply.close(); + + if ( el.is('tr') ) { + n = el.children(':visible').length; + author = $('.author strong', el).text(); + h = $('' + note + ''); + } else { + author = $('.comment-author', el).text(); + h = $(''); + } + + el.before(h); + + $('strong', '#undo-' + id).text(author + ' '); + a = $('.undo a', '#undo-' + id); + a.attr('href', 'comment.php?action=un' + action + 'comment&c=' + id + '&_wpnonce=' + settings.data._ajax_nonce); + a.attr('class', 'delete:the-comment-list:comment-' + id + '::un' + action + '=1 vim-z vim-destructive'); + $('.avatar', el).clone().prependTo('#undo-' + id + ' .' + action + '-undo-inside'); + + a.click(function(){ + list.wpList.del(this); + $('#undo-' + id).css( {backgroundColor:'#ceb'} ).fadeOut(350, function(){ + $(this).remove(); + $('#comment-' + id).css('backgroundColor', '').fadeIn(300, function(){ $(this).show() }); + }); + return false; + }); + } + + return settings; + }; + + // Updates the current total (as displayed visibly) + updateTotalCount = function( total, time, setConfidentTime ) { + if ( time < lastConfidentTime ) + return; + + if ( setConfidentTime ) + lastConfidentTime = time; + + totalInput.val( total.toString() ); + $('span.total-type-count').each( function() { + updateCount( $(this), total ); + }); + }; + + dashboardTotals = function(n) { + var dash = $('#dashboard_right_now'), total, appr, totalN, apprN; + + n = n || 0; + if ( isNaN(n) || !dash.length ) + return; + + total = $('span.total-count', dash); + appr = $('span.approved-count', dash); + totalN = getCount(total); + + totalN = totalN + n; + apprN = totalN - getCount( $('span.pending-count', dash) ) - getCount( $('span.spam-count', dash) ); + updateCount(total, totalN); + updateCount(appr, apprN); + + }; + + getCount = function(el) { + var n = parseInt( el.html().replace(/[^0-9]+/g, ''), 10 ); + if ( isNaN(n) ) + return 0; + return n; + }; + + updateCount = function(el, n) { + var n1 = ''; + if ( isNaN(n) ) + return; + n = n < 1 ? '0' : n.toString(); + if ( n.length > 3 ) { + while ( n.length > 3 ) { + n1 = thousandsSeparator + n.substr(n.length - 3) + n1; + n = n.substr(0, n.length - 3); + } + n = n + n1; + } + el.html(n); + }; + + updatePending = function(n) { + $('span.pending-count').each( function() { + var a = $(this); + + if ( n < 0 ) + n = 0; + + a.closest('.awaiting-mod')[ 0 == n ? 'addClass' : 'removeClass' ]('count-0'); + updateCount(a, n); + dashboardTotals(); + }); + }; + + // In admin-ajax.php, we send back the unix time stamp instead of 1 on success + delAfter = function( r, settings ) { + var total, N, untrash = $(settings.target).parent().is('span.untrash'), + unspam = $(settings.target).parent().is('span.unspam'), spam, trash, pending, + unapproved = $('#' + settings.element).is('.unapproved'); + + function getUpdate(s) { + if ( $(settings.target).parent().is('span.' + s) ) + return 1; + else if ( $('#' + settings.element).is('.' + s) ) + return -1; + + return 0; + } + + spam = getUpdate('spam'); + trash = getUpdate('trash'); + + if ( untrash ) + trash = -1; + if ( unspam ) + spam = -1; + + pending = getCount( $('span.pending-count').eq(0) ); + + if ( $(settings.target).parent().is('span.unapprove') || ( ( untrash || unspam ) && unapproved ) ) { // we "deleted" an approved comment from the approved list by clicking "Unapprove" + pending = pending + 1; + } else if ( unapproved ) { // we deleted a formerly unapproved comment + pending = pending - 1; + } + + updatePending(pending); + + $('span.spam-count').each( function() { + var a = $(this), n = getCount(a) + spam; + updateCount(a, n); + }); + + $('span.trash-count').each( function() { + var a = $(this), n = getCount(a) + trash; + updateCount(a, n); + }); + + if ( $('#dashboard_right_now').length ) { + N = trash ? -1 * trash : 0; + dashboardTotals(N); + } else { + total = totalInput.val() ? parseInt( totalInput.val(), 10 ) : 0; + total = total - spam - trash; + if ( total < 0 ) + total = 0; + + if ( ( 'object' == typeof r ) && lastConfidentTime < settings.parsed.responses[0].supplemental.time ) { + total_items_i18n = settings.parsed.responses[0].supplemental.total_items_i18n || ''; + if ( total_items_i18n ) { + $('.displaying-num').text( total_items_i18n ); + $('.total-pages').text( settings.parsed.responses[0].supplemental.total_pages_i18n ); + $('.tablenav-pages').find('.next-page, .last-page').toggleClass('disabled', settings.parsed.responses[0].supplemental.total_pages == $('.current-page').val()); + } + updateTotalCount( total, settings.parsed.responses[0].supplemental.time, true ); + } else { + updateTotalCount( total, r, false ); + } + } + + + if ( ! theExtraList || theExtraList.size() == 0 || theExtraList.children().size() == 0 || untrash || unspam ) { + return; + } + + theList.get(0).wpList.add( theExtraList.children(':eq(0)').remove().clone() ); + + refillTheExtraList(); + }; + + refillTheExtraList = function(ev) { + var args = $.query.get(), total_pages = $('.total-pages').text(), per_page = $('input[name="_per_page"]', '#comments-form').val(); + + if (! args.paged) + args.paged = 1; + + if (args.paged > total_pages) { + return; + } + + if (ev) { + theExtraList.empty(); + args.number = Math.min(8, per_page); // see WP_Comments_List_Table::prepare_items() @ class-wp-comments-list-table.php + } else { + args.number = 1; + args.offset = Math.min(8, per_page) - 1; // fetch only the next item on the extra list + } + + args.no_placeholder = true; + + args.paged ++; + + // $.query.get() needs some correction to be sent into an ajax request + if ( true === args.comment_type ) + args.comment_type = ''; + + args = $.extend(args, { + 'action': 'fetch-list', + 'list_args': list_args, + '_ajax_fetch_list_nonce': $('#_ajax_fetch_list_nonce').val() + }); + + $.ajax({ + url: ajaxurl, + global: false, + dataType: 'json', + data: args, + success: function(response) { + theExtraList.get(0).wpList.add( response.rows ); + } + }); + }; + + theExtraList = $('#the-extra-comment-list').wpList( { alt: '', delColor: 'none', addColor: 'none' } ); + theList = $('#the-comment-list').wpList( { alt: '', delBefore: delBefore, dimAfter: dimAfter, delAfter: delAfter, addColor: 'none' } ) + .bind('wpListDelEnd', function(e, s){ + var id = s.element.replace(/[^0-9]+/g, ''); + + if ( s.target.className.indexOf(':trash=1') != -1 || s.target.className.indexOf(':spam=1') != -1 ) + $('#undo-' + id).fadeIn(300, function(){ $(this).show() }); + }); +}; + +commentReply = { + cid : '', + act : '', + + init : function() { + var row = $('#replyrow'); + + $('a.cancel', row).click(function() { return commentReply.revert(); }); + $('a.save', row).click(function() { return commentReply.send(); }); + $('input#author, input#author-email, input#author-url', row).keypress(function(e){ + if ( e.which == 13 ) { + commentReply.send(); + e.preventDefault(); + return false; + } + }); + + // add events + $('#the-comment-list .column-comment > p').dblclick(function(){ + commentReply.toggle($(this).parent()); + }); + + $('#doaction, #doaction2, #post-query-submit').click(function(e){ + if ( $('#the-comment-list #replyrow').length > 0 ) + commentReply.close(); + }); + + this.comments_listing = $('#comments-form > input[name="comment_status"]').val() || ''; + + /* $(listTable).bind('beforeChangePage', function(){ + commentReply.close(); + }); */ + }, + + addEvents : function(r) { + r.each(function() { + $(this).find('.column-comment > p').dblclick(function(){ + commentReply.toggle($(this).parent()); + }); + }); + }, + + toggle : function(el) { + if ( $(el).css('display') != 'none' ) + $(el).find('a.vim-q').click(); + }, + + revert : function() { + + if ( $('#the-comment-list #replyrow').length < 1 ) + return false; + + $('#replyrow').fadeOut('fast', function(){ + commentReply.close(); + }); + + return false; + }, + + close : function() { + var c; + + if ( this.cid ) { + c = $('#comment-' + this.cid); + + if ( this.act == 'edit-comment' ) + c.fadeIn(300, function(){ c.show() }).css('backgroundColor', ''); + + $('#replyrow').hide(); + $('#com-reply').append( $('#replyrow') ); + $('#replycontent').val(''); + $('input', '#edithead').val(''); + $('.error', '#replysubmit').html('').hide(); + $('.waiting', '#replysubmit').hide(); + + if ( $.browser.msie ) + $('#replycontainer, #replycontent').css('height', '120px'); + else + $('#replycontainer').resizable('destroy').css('height', '120px'); + + this.cid = ''; + } + }, + + open : function(id, p, a) { + var t = this, editRow, rowData, act, h, c = $('#comment-' + id), replyButton; + + t.close(); + t.cid = id; + + editRow = $('#replyrow'); + rowData = $('#inline-'+id); + act = t.act = (a == 'edit') ? 'edit-comment' : 'replyto-comment'; + + $('#action', editRow).val(act); + $('#comment_post_ID', editRow).val(p); + $('#comment_ID', editRow).val(id); + + if ( a == 'edit' ) { + $('#author', editRow).val( $('div.author', rowData).text() ); + $('#author-email', editRow).val( $('div.author-email', rowData).text() ); + $('#author-url', editRow).val( $('div.author-url', rowData).text() ); + $('#status', editRow).val( $('div.comment_status', rowData).text() ); + $('#replycontent', editRow).val( $('textarea.comment', rowData).val() ); + $('#edithead, #savebtn', editRow).show(); + $('#replyhead, #replybtn', editRow).hide(); + + h = c.height(); + if ( h > 220 ) + if ( $.browser.msie ) + $('#replycontainer, #replycontent', editRow).height(h-105); + else + $('#replycontainer', editRow).height(h-105); + + c.after( editRow ).fadeOut('fast', function(){ + $('#replyrow').fadeIn(300, function(){ $(this).show() }); + }); + } else { + replyButton = $('#replybtn', editRow); + $('#edithead, #savebtn', editRow).hide(); + $('#replyhead, #replybtn', editRow).show(); + c.after(editRow); + + if ( c.hasClass('unapproved') ) { + replyButton.text(adminCommentsL10n.replyApprove); + } else { + replyButton.text(adminCommentsL10n.reply); + } + + $('#replyrow').fadeIn(300, function(){ $(this).show() }); + } + + setTimeout(function() { + var rtop, rbottom, scrollTop, vp, scrollBottom; + + rtop = $('#replyrow').offset().top; + rbottom = rtop + $('#replyrow').height(); + scrollTop = window.pageYOffset || document.documentElement.scrollTop; + vp = document.documentElement.clientHeight || self.innerHeight || 0; + scrollBottom = scrollTop + vp; + + if ( scrollBottom - 20 < rbottom ) + window.scroll(0, rbottom - vp + 35); + else if ( rtop - 20 < scrollTop ) + window.scroll(0, rtop - 35); + + $('#replycontent').focus().keyup(function(e){ + if ( e.which == 27 ) + commentReply.revert(); // close on Escape + }); + }, 600); + + return false; + }, + + send : function() { + var post = {}; + + $('#replysubmit .error').hide(); + $('#replysubmit .waiting').show(); + + $('#replyrow input').not(':button').each(function() { + post[ $(this).attr('name') ] = $(this).val(); + }); + + post.content = $('#replycontent').val(); + post.id = post.comment_post_ID; + post.comments_listing = this.comments_listing; + post.p = $('[name="p"]').val(); + + if ( $('#comment-' + $('#comment_ID').val()).hasClass('unapproved') ) + post.approve_parent = 1; + + $.ajax({ + type : 'POST', + url : ajaxurl, + data : post, + success : function(x) { commentReply.show(x); }, + error : function(r) { commentReply.error(r); } + }); + + return false; + }, + + show : function(xml) { + var t = this, r, c, id, bg, pid; + + t.revert(); + + if ( typeof(xml) == 'string' ) { + t.error({'responseText': xml}); + return false; + } + + r = wpAjax.parseAjaxResponse(xml); + if ( r.errors ) { + t.error({'responseText': wpAjax.broken}); + return false; + } + + r = r.responses[0]; + c = r.data; + id = '#comment-' + r.id; + if ( 'edit-comment' == t.act ) + $(id).remove(); + + if ( r.supplemental.parent_approved ) { + pid = $('#comment-' + r.supplemental.parent_approved); + updatePending( getCount( $('span.pending-count').eq(0) ) - 1 ); + + if ( this.comments_listing == 'moderated' ) { + pid.animate( { 'backgroundColor':'#CCEEBB' }, 400, function(){ + pid.fadeOut(); + }); + return; + } + } + + $(c).hide() + $('#replyrow').after(c); + id = $(id); + t.addEvents(id); + bg = id.hasClass('unapproved') ? '#FFFFE0' : id.closest('.widefat').css('backgroundColor'); + + id.animate( { 'backgroundColor':'#CCEEBB' }, 300 ) + .animate( { 'backgroundColor': bg }, 300, function() { + if ( pid && pid.length ) { + pid.animate( { 'backgroundColor':'#CCEEBB' }, 300 ) + .animate( { 'backgroundColor': bg }, 300 ) + .removeClass('unapproved').addClass('approved') + .find('div.comment_status').html('1'); + } + }); + + }, + + error : function(r) { + var er = r.statusText; + + $('#replysubmit .waiting').hide(); + + if ( r.responseText ) + er = r.responseText.replace( /<.[^<>]*?>/g, '' ); + + if ( er ) + $('#replysubmit .error').html(er).show(); + + } +}; + +$(document).ready(function(){ + var make_hotkeys_redirect, edit_comment, toggle_all, make_bulk; + + setCommentsList(); + commentReply.init(); + $(document).delegate('span.delete a.delete', 'click', function(){return false;}); + + if ( typeof QTags != 'undefined' ) + ed_reply = new QTags('ed_reply', 'replycontent', 'replycontainer', 'more,fullscreen'); + + if ( typeof $.table_hotkeys != 'undefined' ) { + make_hotkeys_redirect = function(which) { + return function() { + var first_last, l; + + first_last = 'next' == which? 'first' : 'last'; + l = $('.tablenav-pages .'+which+'-page:not(.disabled)'); + if (l.length) + window.location = l[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g, '')+'&hotkeys_highlight_'+first_last+'=1'; + } + }; + + edit_comment = function(event, current_row) { + window.location = $('span.edit a', current_row).attr('href'); + }; + + toggle_all = function() { + toggleWithKeyboard = true; + $('input:checkbox', '#cb').click().prop('checked', false); + toggleWithKeyboard = false; + }; + + make_bulk = function(value) { + return function() { + var scope = $('select[name="action"]'); + $('option[value="' + value + '"]', scope).prop('selected', true); + $('#doaction').click(); + } + }; + + $.table_hotkeys( + $('table.widefat'), + ['a', 'u', 's', 'd', 'r', 'q', 'z', ['e', edit_comment], ['shift+x', toggle_all], + ['shift+a', make_bulk('approve')], ['shift+s', make_bulk('spam')], + ['shift+d', make_bulk('delete')], ['shift+t', make_bulk('trash')], + ['shift+z', make_bulk('untrash')], ['shift+u', make_bulk('unapprove')]], + { highlight_first: adminCommentsL10n.hotkeys_highlight_first, highlight_last: adminCommentsL10n.hotkeys_highlight_last, + prev_page_link_cb: make_hotkeys_redirect('prev'), next_page_link_cb: make_hotkeys_redirect('next') } + ); + } +}); + +})(jQuery); diff --git a/src/wp-admin/js/edit-comments.js b/src/wp-admin/js/edit-comments.js new file mode 100644 index 0000000..c7c417c --- /dev/null +++ b/src/wp-admin/js/edit-comments.js @@ -0,0 +1 @@ +var theList,theExtraList,toggleWithKeyboard=false,getCount,updateCount,updatePending,dashboardTotals;(function(a){setCommentsList=function(){var c,e,g,j=0,f,h,d,i,b;c=a('input[name="_total"]',"#comments-form");e=a('input[name="_per_page"]',"#comments-form");g=a('input[name="_page"]',"#comments-form");f=function(n,l){var p=a("#"+l.element),k,o,m;k=a("#replyrow");o=a("#comment_ID",k).val();m=a("#replybtn",k);if(p.is(".unapproved")){if(l.data.id==o){m.text(adminCommentsL10n.replyApprove)}p.find("div.comment_status").html("0")}else{if(l.data.id==o){m.text(adminCommentsL10n.reply)}p.find("div.comment_status").html("1")}a("span.pending-count").each(function(){var q=a(this),s,r;s=q.html().replace(/[^0-9]+/g,"");s=parseInt(s,10);if(isNaN(s)){return}r=a("#"+l.element).is("."+l.dimClass)?1:-1;s=s+r;if(s<0){s=0}q.closest(".awaiting-mod")[0==s?"addClass":"removeClass"]("count-0");updateCount(q,s);dashboardTotals()})};h=function(o,s){var u=a(o.target).attr("class"),k,l,m,r,t,q,p=false;o.data._total=c.val()||0;o.data._per_page=e.val()||0;o.data._page=g.val()||0;o.data._url=document.location.href;o.data.comment_status=a('input[name="comment_status"]',"#comments-form").val();if(u.indexOf(":trash=1")!=-1){p="trash"}else{if(u.indexOf(":spam=1")!=-1){p="spam"}}if(p){k=u.replace(/.*?comment-([0-9]+).*/,"$1");l=a("#comment-"+k);note=a("#"+p+"-undo-holder").html();l.find(".check-column :checkbox").prop("checked",false);if(l.siblings("#replyrow").length&&commentReply.cid==k){commentReply.close()}if(l.is("tr")){m=l.children(":visible").length;q=a(".author strong",l).text();r=a(''+note+"")}else{q=a(".comment-author",l).text();r=a('")}l.before(r);a("strong","#undo-"+k).text(q+" ");t=a(".undo a","#undo-"+k);t.attr("href","comment.php?action=un"+p+"comment&c="+k+"&_wpnonce="+o.data._ajax_nonce);t.attr("class","delete:the-comment-list:comment-"+k+"::un"+p+"=1 vim-z vim-destructive");a(".avatar",l).clone().prependTo("#undo-"+k+" ."+p+"-undo-inside");t.click(function(){s.wpList.del(this);a("#undo-"+k).css({backgroundColor:"#ceb"}).fadeOut(350,function(){a(this).remove();a("#comment-"+k).css("backgroundColor","").fadeIn(300,function(){a(this).show()})});return false})}return o};d=function(k,l,m){if(l3){while(m.length>3){k=thousandsSeparator+m.substr(m.length-3)+k;m=m.substr(0,m.length-3)}m=m+k}l.html(m)};updatePending=function(k){a("span.pending-count").each(function(){var l=a(this);if(k<0){k=0}l.closest(".awaiting-mod")[0==k?"addClass":"removeClass"]("count-0");updateCount(l,k);dashboardTotals()})};i=function(k,n){var q,o,u=a(n.target).parent().is("span.untrash"),m=a(n.target).parent().is("span.unspam"),t,s,l,p=a("#"+n.element).is(".unapproved");function v(r){if(a(n.target).parent().is("span."+r)){return 1}else{if(a("#"+n.element).is("."+r)){return -1}}return 0}t=v("spam");s=v("trash");if(u){s=-1}if(m){t=-1}l=getCount(a("span.pending-count").eq(0));if(a(n.target).parent().is("span.unapprove")||((u||m)&&p)){l=l+1}else{if(p){l=l-1}}updatePending(l);a("span.spam-count").each(function(){var r=a(this),w=getCount(r)+t;updateCount(r,w)});a("span.trash-count").each(function(){var r=a(this),w=getCount(r)+s;updateCount(r,w)});if(a("#dashboard_right_now").length){o=s?-1*s:0;dashboardTotals(o)}else{q=c.val()?parseInt(c.val(),10):0;q=q-t-s;if(q<0){q=0}if(("object"==typeof k)&&jk){return}if(n){theExtraList.empty();l.number=Math.min(8,m)}else{l.number=1;l.offset=Math.min(8,m)-1}l.no_placeholder=true;l.paged++;if(true===l.comment_type){l.comment_type=""}l=a.extend(l,{action:"fetch-list",list_args:list_args,_ajax_fetch_list_nonce:a("#_ajax_fetch_list_nonce").val()});a.ajax({url:ajaxurl,global:false,dataType:"json",data:l,success:function(o){theExtraList.get(0).wpList.add(o.rows)}})};theExtraList=a("#the-extra-comment-list").wpList({alt:"",delColor:"none",addColor:"none"});theList=a("#the-comment-list").wpList({alt:"",delBefore:h,dimAfter:f,delAfter:i,addColor:"none"}).bind("wpListDelEnd",function(l,k){var m=k.element.replace(/[^0-9]+/g,"");if(k.target.className.indexOf(":trash=1")!=-1||k.target.className.indexOf(":spam=1")!=-1){a("#undo-"+m).fadeIn(300,function(){a(this).show()})}})};commentReply={cid:"",act:"",init:function(){var b=a("#replyrow");a("a.cancel",b).click(function(){return commentReply.revert()});a("a.save",b).click(function(){return commentReply.send()});a("input#author, input#author-email, input#author-url",b).keypress(function(c){if(c.which==13){commentReply.send();c.preventDefault();return false}});a("#the-comment-list .column-comment > p").dblclick(function(){commentReply.toggle(a(this).parent())});a("#doaction, #doaction2, #post-query-submit").click(function(c){if(a("#the-comment-list #replyrow").length>0){commentReply.close()}});this.comments_listing=a('#comments-form > input[name="comment_status"]').val()||""},addEvents:function(b){b.each(function(){a(this).find(".column-comment > p").dblclick(function(){commentReply.toggle(a(this).parent())})})},toggle:function(b){if(a(b).css("display")!="none"){a(b).find("a.vim-q").click()}},revert:function(){if(a("#the-comment-list #replyrow").length<1){return false}a("#replyrow").fadeOut("fast",function(){commentReply.close()});return false},close:function(){var b;if(this.cid){b=a("#comment-"+this.cid);if(this.act=="edit-comment"){b.fadeIn(300,function(){b.show()}).css("backgroundColor","")}a("#replyrow").hide();a("#com-reply").append(a("#replyrow"));a("#replycontent").val("");a("input","#edithead").val("");a(".error","#replysubmit").html("").hide();a(".waiting","#replysubmit").hide();if(a.browser.msie){a("#replycontainer, #replycontent").css("height","120px")}else{a("#replycontainer").resizable("destroy").css("height","120px")}this.cid=""}},open:function(b,d,k){var m=this,e,f,i,g,j=a("#comment-"+b),l;m.close();m.cid=b;e=a("#replyrow");f=a("#inline-"+b);i=m.act=(k=="edit")?"edit-comment":"replyto-comment";a("#action",e).val(i);a("#comment_post_ID",e).val(d);a("#comment_ID",e).val(b);if(k=="edit"){a("#author",e).val(a("div.author",f).text());a("#author-email",e).val(a("div.author-email",f).text());a("#author-url",e).val(a("div.author-url",f).text());a("#status",e).val(a("div.comment_status",f).text());a("#replycontent",e).val(a("textarea.comment",f).val());a("#edithead, #savebtn",e).show();a("#replyhead, #replybtn",e).hide();g=j.height();if(g>220){if(a.browser.msie){a("#replycontainer, #replycontent",e).height(g-105)}else{a("#replycontainer",e).height(g-105)}}j.after(e).fadeOut("fast",function(){a("#replyrow").fadeIn(300,function(){a(this).show()})})}else{l=a("#replybtn",e);a("#edithead, #savebtn",e).hide();a("#replyhead, #replybtn",e).show();j.after(e);if(j.hasClass("unapproved")){l.text(adminCommentsL10n.replyApprove)}else{l.text(adminCommentsL10n.reply)}a("#replyrow").fadeIn(300,function(){a(this).show()})}setTimeout(function(){var o,h,p,c,n;o=a("#replyrow").offset().top;h=o+a("#replyrow").height();p=window.pageYOffset||document.documentElement.scrollTop;c=document.documentElement.clientHeight||self.innerHeight||0;n=p+c;if(n-20]*?>/g,"")}if(c){a("#replysubmit .error").html(c).show()}}};a(document).ready(function(){var e,b,c,d;setCommentsList();commentReply.init();a(document).delegate("span.delete a.delete","click",function(){return false});if(typeof QTags!="undefined"){ed_reply=new QTags("ed_reply","replycontent","replycontainer","more,fullscreen")}if(typeof a.table_hotkeys!="undefined"){e=function(f){return function(){var h,g;h="next"==f?"first":"last";g=a(".tablenav-pages ."+f+"-page:not(.disabled)");if(g.length){window.location=g[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g,"")+"&hotkeys_highlight_"+h+"=1"}}};b=function(g,f){window.location=a("span.edit a",f).attr("href")};c=function(){toggleWithKeyboard=true;a("input:checkbox","#cb").click().prop("checked",false);toggleWithKeyboard=false};d=function(f){return function(){var g=a('select[name="action"]');a('option[value="'+f+'"]',g).prop("selected",true);a("#doaction").click()}};a.table_hotkeys(a("table.widefat"),["a","u","s","d","r","q","z",["e",b],["shift+x",c],["shift+a",d("approve")],["shift+s",d("spam")],["shift+d",d("delete")],["shift+t",d("trash")],["shift+z",d("untrash")],["shift+u",d("unapprove")]],{highlight_first:adminCommentsL10n.hotkeys_highlight_first,highlight_last:adminCommentsL10n.hotkeys_highlight_last,prev_page_link_cb:e("prev"),next_page_link_cb:e("next")})}})})(jQuery); \ No newline at end of file diff --git a/src/wp-admin/js/editor.dev.js b/src/wp-admin/js/editor.dev.js new file mode 100644 index 0000000..2271bdb --- /dev/null +++ b/src/wp-admin/js/editor.dev.js @@ -0,0 +1,207 @@ + +jQuery(document).ready(function($){ + var h = wpCookies.getHash('TinyMCE_content_size'); + + if ( getUserSetting( 'editor' ) == 'html' ) { + if ( h ) + $('#content').css('height', h.ch - 15 + 'px'); + } else { + if ( typeof tinyMCE != 'object' ) { + $('#content').css('color', '#000'); + } else { + $('#quicktags').hide(); + } + } +}); + +var switchEditors = { + + mode : '', + + I : function(e) { + return document.getElementById(e); + }, + + _wp_Nop : function(content) { + var blocklist1, blocklist2; + + // Protect pre|script tags + if ( content.indexOf(']*>[\s\S]+?<\/\1>/g, function(a) { + a = a.replace(/
    (\r\n|\n)?/g, ''); + return a.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g, ''); + }); + } + + // Pretty it up for the source editor + blocklist1 = 'blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|div|h[1-6]|p|fieldset'; + content = content.replace(new RegExp('\\s*\\s*', 'g'), '\n'); + content = content.replace(new RegExp('\\s*<((?:'+blocklist1+')(?: [^>]*)?)>', 'g'), '\n<$1>'); + + // Mark

    if it has any attributes. + content = content.replace(/(

    ]+>.*?)<\/p>/g, '$1'); + + // Sepatate

    containing

    + content = content.replace(/]*)?>\s*

    /gi, '\n\n'); + + // Remove

    and
    + content = content.replace(/\s*

    /gi, ''); + content = content.replace(/\s*<\/p>\s*/gi, '\n\n'); + content = content.replace(/\n[\s\u00a0]+\n/g, '\n\n'); + content = content.replace(/\s*
    \s*/gi, '\n'); + + // Fix some block element newline issues + content = content.replace(/\s*

    \s*/g, '
    \n'); + content = content.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi, '\n\n[caption$1[/caption]\n\n'); + content = content.replace(/caption\]\n\n+\[caption/g, 'caption]\n\n[caption'); + + blocklist2 = 'blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|pre|fieldset'; + content = content.replace(new RegExp('\\s*<((?:'+blocklist2+')(?: [^>]*)?)\\s*>', 'g'), '\n<$1>'); + content = content.replace(new RegExp('\\s*\\s*', 'g'), '\n'); + content = content.replace(/]*)>/g, '\t'); + + if ( content.indexOf(']*)?>\s*/g, '\n\n\n\n'); + } + + if ( content.indexOf('/g, function(a){ + return a.replace(/[\r\n]+/g, ''); + }); + } + + // Unmark special paragraph closing tags + content = content.replace(/<\/p#>/g, '

    \n'); + content = content.replace(/\s*(

    ]+>[\s\S]*?<\/p>)/g, '\n$1'); + + // Trim whitespace + content = content.replace(/^\s+/, ''); + content = content.replace(/[\s\u00a0]+$/, ''); + + // put back the line breaks in pre|script + content = content.replace(//g, '\n'); + + return content; + }, + + go : function(id, mode) { + id = id || 'content'; + mode = mode || this.mode || ''; + + var ed, qt = this.I('quicktags'), H = this.I('edButtonHTML'), P = this.I('edButtonPreview'), ta = this.I(id); + + try { ed = tinyMCE.get(id); } + catch(e) { ed = false; } + + if ( 'tinymce' == mode ) { + if ( ed && ! ed.isHidden() ) + return false; + + setUserSetting( 'editor', 'tinymce' ); + this.mode = 'html'; + + P.className = 'active'; + H.className = ''; + edCloseAllTags(); // :-( + qt.style.display = 'none'; + + ta.style.color = '#FFF'; + ta.value = this.wpautop(ta.value); + + try { + if ( ed ) + ed.show(); + else + tinyMCE.execCommand("mceAddControl", false, id); + } catch(e) {} + + ta.style.color = '#000'; + } else { + setUserSetting( 'editor', 'html' ); + ta.style.color = '#000'; + this.mode = 'tinymce'; + H.className = 'active'; + P.className = ''; + + if ( ed && !ed.isHidden() ) { + ta.style.height = ed.getContentAreaContainer().offsetHeight + 24 + 'px'; + ed.hide(); + } + + qt.style.display = 'block'; + } + return false; + }, + + _wp_Autop : function(pee) { + var blocklist = 'table|thead|tfoot|tbody|tr|td|th|caption|col|colgroup|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6]|fieldset|legend|hr|noscript|menu|samp|header|footer|article|section|hgroup|nav|aside|details|summary'; + + if ( pee.indexOf('/g, function(a){ + return a.replace(/[\r\n]+/g, ''); + }); + } + + pee = pee.replace(/<[^<>]+>/g, function(a){ + return a.replace(/[\r\n]+/g, ' '); + }); + + // Protect pre|script tags + if ( pee.indexOf(']*>[\s\S]+?<\/\1>/g, function(a) { + return a.replace(/(\r\n|\n)/g, ''); + }); + } + + pee = pee + '\n\n'; + pee = pee.replace(/
    \s*
    /gi, '\n\n'); + pee = pee.replace(new RegExp('(<(?:'+blocklist+')(?: [^>]*)?>)', 'gi'), '\n$1'); + pee = pee.replace(new RegExp('()', 'gi'), '$1\n\n'); + pee = pee.replace(/]*)?>/gi, '\n\n'); // hr is self closing block element + pee = pee.replace(/\r\n|\r/g, '\n'); + pee = pee.replace(/\n\s*\n+/g, '\n\n'); + pee = pee.replace(/([\s\S]+?)\n\n/g, '

    $1

    \n'); + pee = pee.replace(/

    \s*?<\/p>/gi, ''); + pee = pee.replace(new RegExp('

    \\s*(]*)?>)\\s*

    ', 'gi'), "$1"); + pee = pee.replace(/

    (/gi, '$1'); + pee = pee.replace(/

    \s*]*)>/gi, '

    '); + pee = pee.replace(/<\/blockquote>\s*<\/p>/gi, '

    '); + pee = pee.replace(new RegExp('

    \\s*(]*)?>)', 'gi'), "$1"); + pee = pee.replace(new RegExp('(]*)?>)\\s*

    ', 'gi'), "$1"); + pee = pee.replace(/\s*\n/gi, '
    \n'); + pee = pee.replace(new RegExp('(]*>)\\s*
    ', 'gi'), "$1"); + pee = pee.replace(/
    (\s*<\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)/gi, '$1'); + pee = pee.replace(/(?:

    |
    )*\s*\[caption([^\[]+)\[\/caption\]\s*(?:<\/p>|
    )*/gi, '[caption$1[/caption]'); + + pee = pee.replace(/(<(?:div|th|td|form|fieldset|dd)[^>]*>)(.*?)<\/p>/g, function(a, b, c) { + if ( c.match(/]*)?>/) ) + return a; + + return b + '

    ' + c + '

    '; + }); + + // put back the line breaks in pre|script + pee = pee.replace(//g, '\n'); + + return pee; + }, + + pre_wpautop : function(content) { + var t = this, o = { o: t, data: content, unfiltered: content }; + + jQuery('body').trigger('beforePreWpautop', [o]); + o.data = t._wp_Nop(o.data); + jQuery('body').trigger('afterPreWpautop', [o]); + return o.data; + }, + + wpautop : function(pee) { + var t = this, o = { o: t, data: pee, unfiltered: pee }; + + jQuery('body').trigger('beforeWpautop', [o]); + o.data = t._wp_Autop(o.data); + jQuery('body').trigger('afterWpautop', [o]); + return o.data; + } +}; diff --git a/src/wp-admin/js/editor.js b/src/wp-admin/js/editor.js new file mode 100644 index 0000000..c3e342a --- /dev/null +++ b/src/wp-admin/js/editor.js @@ -0,0 +1 @@ +jQuery(document).ready(function(b){var a=wpCookies.getHash("TinyMCE_content_size");if(getUserSetting("editor")=="html"){if(a){b("#content").css("height",a.ch-15+"px")}}else{if(typeof tinyMCE!="object"){b("#content").css("color","#000")}else{b("#quicktags").hide()}}});var switchEditors={mode:"",I:function(a){return document.getElementById(a)},_wp_Nop:function(b){var c,a;if(b.indexOf("]*>[\s\S]+?<\/\1>/g,function(d){d=d.replace(/
    (\r\n|\n)?/g,"");return d.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g,"")})}c="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|div|h[1-6]|p|fieldset";b=b.replace(new RegExp("\\s*\\s*","g"),"\n");b=b.replace(new RegExp("\\s*<((?:"+c+")(?: [^>]*)?)>","g"),"\n<$1>");b=b.replace(/(

    ]+>.*?)<\/p>/g,"$1");b=b.replace(/]*)?>\s*

    /gi,"\n\n");b=b.replace(/\s*

    /gi,"");b=b.replace(/\s*<\/p>\s*/gi,"\n\n");b=b.replace(/\n[\s\u00a0]+\n/g,"\n\n");b=b.replace(/\s*
    \s*/gi,"\n");b=b.replace(/\s*

    \s*/g,"
    \n");b=b.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi,"\n\n[caption$1[/caption]\n\n");b=b.replace(/caption\]\n\n+\[caption/g,"caption]\n\n[caption");a="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|pre|fieldset";b=b.replace(new RegExp("\\s*<((?:"+a+")(?: [^>]*)?)\\s*>","g"),"\n<$1>");b=b.replace(new RegExp("\\s*\\s*","g"),"\n");b=b.replace(/]*)>/g,"\t");if(b.indexOf("]*)?>\s*/g,"\n\n\n\n")}if(b.indexOf("/g,function(d){return d.replace(/[\r\n]+/g,"")})}b=b.replace(/<\/p#>/g,"

    \n");b=b.replace(/\s*(

    ]+>[\s\S]*?<\/p>)/g,"\n$1");b=b.replace(/^\s+/,"");b=b.replace(/[\s\u00a0]+$/,"");b=b.replace(//g,"\n");return b},go:function(i,g){i=i||"content";g=g||this.mode||"";var b,h=this.I("quicktags"),c=this.I("edButtonHTML"),d=this.I("edButtonPreview"),a=this.I(i);try{b=tinyMCE.get(i)}catch(f){b=false}if("tinymce"==g){if(b&&!b.isHidden()){return false}setUserSetting("editor","tinymce");this.mode="html";d.className="active";c.className="";edCloseAllTags();h.style.display="none";a.style.color="#FFF";a.value=this.wpautop(a.value);try{if(b){b.show()}else{tinyMCE.execCommand("mceAddControl",false,i)}}catch(f){}a.style.color="#000"}else{setUserSetting("editor","html");a.style.color="#000";this.mode="tinymce";c.className="active";d.className="";if(b&&!b.isHidden()){a.style.height=b.getContentAreaContainer().offsetHeight+24+"px";b.hide()}h.style.display="block"}return false},_wp_Autop:function(a){var b="table|thead|tfoot|tbody|tr|td|th|caption|col|colgroup|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|address|math|p|h[1-6]|fieldset|legend|hr|noscript|menu|samp|header|footer|article|section|hgroup|nav|aside|details|summary";if(a.indexOf("/g,function(c){return c.replace(/[\r\n]+/g,"")})}a=a.replace(/<[^<>]+>/g,function(c){return c.replace(/[\r\n]+/g," ")});if(a.indexOf("]*>[\s\S]+?<\/\1>/g,function(c){return c.replace(/(\r\n|\n)/g,"")})}a=a+"\n\n";a=a.replace(/
    \s*
    /gi,"\n\n");a=a.replace(new RegExp("(<(?:"+b+")(?: [^>]*)?>)","gi"),"\n$1");a=a.replace(new RegExp("()","gi"),"$1\n\n");a=a.replace(/]*)?>/gi,"\n\n");a=a.replace(/\r\n|\r/g,"\n");a=a.replace(/\n\s*\n+/g,"\n\n");a=a.replace(/([\s\S]+?)\n\n/g,"

    $1

    \n");a=a.replace(/

    \s*?<\/p>/gi,"");a=a.replace(new RegExp("

    \\s*(]*)?>)\\s*

    ","gi"),"$1");a=a.replace(/

    (/gi,"$1");a=a.replace(/

    \s*]*)>/gi,"

    ");a=a.replace(/<\/blockquote>\s*<\/p>/gi,"

    ");a=a.replace(new RegExp("

    \\s*(]*)?>)","gi"),"$1");a=a.replace(new RegExp("(]*)?>)\\s*

    ","gi"),"$1");a=a.replace(/\s*\n/gi,"
    \n");a=a.replace(new RegExp("(]*>)\\s*
    ","gi"),"$1");a=a.replace(/
    (\s*<\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)/gi,"$1");a=a.replace(/(?:

    |
    )*\s*\[caption([^\[]+)\[\/caption\]\s*(?:<\/p>|
    )*/gi,"[caption$1[/caption]");a=a.replace(/(<(?:div|th|td|form|fieldset|dd)[^>]*>)(.*?)<\/p>/g,function(e,d,f){if(f.match(/]*)?>/)){return e}return d+"

    "+f+"

    "});a=a.replace(//g,"\n");return a},pre_wpautop:function(b){var a=this,c={o:a,data:b,unfiltered:b};jQuery("body").trigger("beforePreWpautop",[c]);c.data=a._wp_Nop(c.data);jQuery("body").trigger("afterPreWpautop",[c]);return c.data},wpautop:function(b){var a=this,c={o:a,data:b,unfiltered:b};jQuery("body").trigger("beforeWpautop",[c]);c.data=a._wp_Autop(c.data);jQuery("body").trigger("afterWpautop",[c]);return c.data}}; \ No newline at end of file diff --git a/src/wp-admin/js/farbtastic.js b/src/wp-admin/js/farbtastic.js new file mode 100644 index 0000000..5404fb6 --- /dev/null +++ b/src/wp-admin/js/farbtastic.js @@ -0,0 +1,276 @@ +/*! + * Farbtastic: jQuery color picker plug-in v1.3u + * + * Licensed under the GPL license: + * http://www.gnu.org/licenses/gpl.html + */ +(function($) { + +$.fn.farbtastic = function (options) { + $.farbtastic(this, options); + return this; +}; + +$.farbtastic = function (container, callback) { + var container = $(container).get(0); + return container.farbtastic || (container.farbtastic = new $._farbtastic(container, callback)); +}; + +$._farbtastic = function (container, callback) { + // Store farbtastic object + var fb = this; + + // Insert markup + $(container).html('
    '); + var e = $('.farbtastic', container); + fb.wheel = $('.wheel', container).get(0); + // Dimensions + fb.radius = 84; + fb.square = 100; + fb.width = 194; + + // Fix background PNGs in IE6 + if (navigator.appVersion.match(/MSIE [0-6]\./)) { + $('*', e).each(function () { + if (this.currentStyle.backgroundImage != 'none') { + var image = this.currentStyle.backgroundImage; + image = this.currentStyle.backgroundImage.substring(5, image.length - 2); + $(this).css({ + 'backgroundImage': 'none', + 'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')" + }); + } + }); + } + + /** + * Link to the given element(s) or callback. + */ + fb.linkTo = function (callback) { + // Unbind previous nodes + if (typeof fb.callback == 'object') { + $(fb.callback).unbind('keyup', fb.updateValue); + } + + // Reset color + fb.color = null; + + // Bind callback or elements + if (typeof callback == 'function') { + fb.callback = callback; + } + else if (typeof callback == 'object' || typeof callback == 'string') { + fb.callback = $(callback); + fb.callback.bind('keyup', fb.updateValue); + if (fb.callback.get(0).value) { + fb.setColor(fb.callback.get(0).value); + } + } + return this; + }; + fb.updateValue = function (event) { + if (this.value && this.value != fb.color) { + fb.setColor(this.value); + } + }; + + /** + * Change color with HTML syntax #123456 + */ + fb.setColor = function (color) { + var unpack = fb.unpack(color); + if (fb.color != color && unpack) { + fb.color = color; + fb.rgb = unpack; + fb.hsl = fb.RGBToHSL(fb.rgb); + fb.updateDisplay(); + } + return this; + }; + + /** + * Change color with HSL triplet [0..1, 0..1, 0..1] + */ + fb.setHSL = function (hsl) { + fb.hsl = hsl; + fb.rgb = fb.HSLToRGB(hsl); + fb.color = fb.pack(fb.rgb); + fb.updateDisplay(); + return this; + }; + + ///////////////////////////////////////////////////// + + /** + * Retrieve the coordinates of the given event relative to the center + * of the widget. + */ + fb.widgetCoords = function (event) { + var offset = $(fb.wheel).offset(); + return { x: (event.pageX - offset.left) - fb.width / 2, y: (event.pageY - offset.top) - fb.width / 2 }; + }; + + /** + * Mousedown handler + */ + fb.mousedown = function (event) { + // Capture mouse + if (!document.dragging) { + $(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup); + document.dragging = true; + } + + // Check which area is being dragged + var pos = fb.widgetCoords(event); + fb.circleDrag = Math.max(Math.abs(pos.x), Math.abs(pos.y)) * 2 > fb.square; + + // Process + fb.mousemove(event); + return false; + }; + + /** + * Mousemove handler + */ + fb.mousemove = function (event) { + // Get coordinates relative to color picker center + var pos = fb.widgetCoords(event); + + // Set new HSL parameters + if (fb.circleDrag) { + var hue = Math.atan2(pos.x, -pos.y) / 6.28; + if (hue < 0) hue += 1; + fb.setHSL([hue, fb.hsl[1], fb.hsl[2]]); + } + else { + var sat = Math.max(0, Math.min(1, -(pos.x / fb.square) + .5)); + var lum = Math.max(0, Math.min(1, -(pos.y / fb.square) + .5)); + fb.setHSL([fb.hsl[0], sat, lum]); + } + return false; + }; + + /** + * Mouseup handler + */ + fb.mouseup = function () { + // Uncapture mouse + $(document).unbind('mousemove', fb.mousemove); + $(document).unbind('mouseup', fb.mouseup); + document.dragging = false; + }; + + /** + * Update the markers and styles + */ + fb.updateDisplay = function () { + // Markers + var angle = fb.hsl[0] * 6.28; + $('.h-marker', e).css({ + left: Math.round(Math.sin(angle) * fb.radius + fb.width / 2) + 'px', + top: Math.round(-Math.cos(angle) * fb.radius + fb.width / 2) + 'px' + }); + + $('.sl-marker', e).css({ + left: Math.round(fb.square * (.5 - fb.hsl[1]) + fb.width / 2) + 'px', + top: Math.round(fb.square * (.5 - fb.hsl[2]) + fb.width / 2) + 'px' + }); + + // Saturation/Luminance gradient + $('.color', e).css('backgroundColor', fb.pack(fb.HSLToRGB([fb.hsl[0], 1, 0.5]))); + + // Linked elements or callback + if (typeof fb.callback == 'object') { + // Set background/foreground color + $(fb.callback).css({ + backgroundColor: fb.color, + color: fb.hsl[2] > 0.5 ? '#000' : '#fff' + }); + + // Change linked value + $(fb.callback).each(function() { + if (this.value && this.value != fb.color) { + this.value = fb.color; + } + }); + } + else if (typeof fb.callback == 'function') { + fb.callback.call(fb, fb.color); + } + }; + + /* Various color utility functions */ + fb.pack = function (rgb) { + var r = Math.round(rgb[0] * 255); + var g = Math.round(rgb[1] * 255); + var b = Math.round(rgb[2] * 255); + return '#' + (r < 16 ? '0' : '') + r.toString(16) + + (g < 16 ? '0' : '') + g.toString(16) + + (b < 16 ? '0' : '') + b.toString(16); + }; + + fb.unpack = function (color) { + if (color.length == 7) { + return [parseInt('0x' + color.substring(1, 3)) / 255, + parseInt('0x' + color.substring(3, 5)) / 255, + parseInt('0x' + color.substring(5, 7)) / 255]; + } + else if (color.length == 4) { + return [parseInt('0x' + color.substring(1, 2)) / 15, + parseInt('0x' + color.substring(2, 3)) / 15, + parseInt('0x' + color.substring(3, 4)) / 15]; + } + }; + + fb.HSLToRGB = function (hsl) { + var m1, m2, r, g, b; + var h = hsl[0], s = hsl[1], l = hsl[2]; + m2 = (l <= 0.5) ? l * (s + 1) : l + s - l*s; + m1 = l * 2 - m2; + return [this.hueToRGB(m1, m2, h+0.33333), + this.hueToRGB(m1, m2, h), + this.hueToRGB(m1, m2, h-0.33333)]; + }; + + fb.hueToRGB = function (m1, m2, h) { + h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h); + if (h * 6 < 1) return m1 + (m2 - m1) * h * 6; + if (h * 2 < 1) return m2; + if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6; + return m1; + }; + + fb.RGBToHSL = function (rgb) { + var min, max, delta, h, s, l; + var r = rgb[0], g = rgb[1], b = rgb[2]; + min = Math.min(r, Math.min(g, b)); + max = Math.max(r, Math.max(g, b)); + delta = max - min; + l = (min + max) / 2; + s = 0; + if (l > 0 && l < 1) { + s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l)); + } + h = 0; + if (delta > 0) { + if (max == r && max != g) h += (g - b) / delta; + if (max == g && max != b) h += (2 + (b - r) / delta); + if (max == b && max != r) h += (4 + (r - g) / delta); + h /= 6; + } + return [h, s, l]; + }; + + // Install mousedown handler (the others are set on the document on-demand) + $('*', e).mousedown(fb.mousedown); + + // Init color + fb.setColor('#000000'); + + // Set linked elements/callback + if (callback) { + fb.linkTo(callback); + } +}; + +})(jQuery); \ No newline at end of file diff --git a/src/wp-admin/js/gallery.dev.js b/src/wp-admin/js/gallery.dev.js new file mode 100644 index 0000000..1e80fd9 --- /dev/null +++ b/src/wp-admin/js/gallery.dev.js @@ -0,0 +1,197 @@ +jQuery(document).ready(function($) { + var gallerySortable, gallerySortableInit, w, desc = false; + + gallerySortableInit = function() { + gallerySortable = $('#media-items').sortable( { + items: 'div.media-item', + placeholder: 'sorthelper', + axis: 'y', + distance: 2, + handle: 'div.filename', + stop: function(e, ui) { + // When an update has occurred, adjust the order for each item + var all = $('#media-items').sortable('toArray'), len = all.length; + $.each(all, function(i, id) { + var order = desc ? (len - i) : (1 + i); + $('#' + id + ' .menu_order input').val(order); + }); + } + } ); + } + + sortIt = function() { + var all = $('.menu_order_input'), len = all.length; + all.each(function(i){ + var order = desc ? (len - i) : (1 + i); + $(this).val(order); + }); + } + + clearAll = function(c) { + c = c || 0; + $('.menu_order_input').each(function(){ + if ( this.value == '0' || c ) this.value = ''; + }); + } + + $('#asc').click(function(){desc = false; sortIt(); return false;}); + $('#desc').click(function(){desc = true; sortIt(); return false;}); + $('#clear').click(function(){clearAll(1); return false;}); + $('#showall').click(function(){ + $('#sort-buttons span a').toggle(); + $('a.describe-toggle-on').hide(); + $('a.describe-toggle-off, table.slidetoggle').show(); + return false; + }); + $('#hideall').click(function(){ + $('#sort-buttons span a').toggle(); + $('a.describe-toggle-on').show(); + $('a.describe-toggle-off, table.slidetoggle').hide(); + return false; + }); + + // initialize sortable + gallerySortableInit(); + clearAll(); + + if ( $('#media-items>*').length > 1 ) { + w = wpgallery.getWin(); + + $('#save-all, #gallery-settings').show(); + if ( typeof w.tinyMCE != 'undefined' && w.tinyMCE.activeEditor && ! w.tinyMCE.activeEditor.isHidden() ) { + wpgallery.mcemode = true; + wpgallery.init(); + } else { + $('#insert-gallery').show(); + } + } +}); + +jQuery(window).unload( function () { tinymce = tinyMCE = wpgallery = null; } ); // Cleanup + +/* gallery settings */ +var tinymce = null, tinyMCE, wpgallery; + +wpgallery = { + mcemode : false, + editor : {}, + dom : {}, + is_update : false, + el : {}, + + I : function(e) { + return document.getElementById(e); + }, + + init: function() { + var t = this, li, q, i, it, w = t.getWin(); + + if ( ! t.mcemode ) return; + + li = ('' + document.location.search).replace(/^\?/, '').split('&'); + q = {}; + for (i=0; i*").length>1){a=wpgallery.getWin();c("#save-all, #gallery-settings").show();if(typeof a.tinyMCE!="undefined"&&a.tinyMCE.activeEditor&&!a.tinyMCE.activeEditor.isHidden()){wpgallery.mcemode=true;wpgallery.init()}else{c("#insert-gallery").show()}}});jQuery(window).unload(function(){tinymce=tinyMCE=wpgallery=null});var tinymce=null,tinyMCE,wpgallery;wpgallery={mcemode:false,editor:{},dom:{},is_update:false,el:{},I:function(a){return document.getElementById(a)},init:function(){var d=this,a,f,c,e,b=d.getWin();if(!d.mcemode){return}a=(""+document.location.search).replace(/^\?/,"").split("&");f={};for(c=0;c this.hold['oh'] ) || ( w1 && w1 > this.hold['ow'] ) ) + warn.css('visibility', 'visible'); + else + warn.css('visibility', 'hidden'); + }, + + getSelRatio : function(postid) { + var x = this.hold['w'], y = this.hold['h'], + X = this.intval( $('#imgedit-crop-width-' + postid).val() ), + Y = this.intval( $('#imgedit-crop-height-' + postid).val() ); + + if ( X && Y ) + return X + ':' + Y; + + if ( x && y ) + return x + ':' + y; + + return '1:1'; + }, + + filterHistory : function(postid, setSize) { + // apply undo state to history + var history = $('#imgedit-history-' + postid).val(), pop, n, o, i, op = []; + + if ( history != '' ) { + history = JSON.parse(history); + pop = this.intval( $('#imgedit-undone-' + postid).val() ); + if ( pop > 0 ) { + while ( pop > 0 ) { + history.pop(); + pop--; + } + } + + if ( setSize ) { + if ( !history.length ) { + this.hold['w'] = this.hold['ow']; + this.hold['h'] = this.hold['oh']; + return ''; + } + + // restore + o = history[history.length - 1]; + o = o.c || o.r || o.f || false; + + if ( o ) { + this.hold['w'] = o.fw; + this.hold['h'] = o.fh; + } + } + + // filter the values + for ( n in history ) { + i = history[n]; + if ( i.hasOwnProperty('c') ) { + op[n] = { 'c': { 'x': i.c.x, 'y': i.c.y, 'w': i.c.w, 'h': i.c.h } }; + } else if ( i.hasOwnProperty('r') ) { + op[n] = { 'r': i.r.r }; + } else if ( i.hasOwnProperty('f') ) { + op[n] = { 'f': i.f.f }; + } + } + return JSON.stringify(op); + } + return ''; + }, + + refreshEditor : function(postid, nonce, callback) { + var t = this, data, img; + + t.toggleEditor(postid, 1); + data = { + 'action': 'imgedit-preview', + '_ajax_nonce': nonce, + 'postid': postid, + 'history': t.filterHistory(postid, 1), + 'rand': t.intval(Math.random() * 1000000) + }; + + img = $(''); + img.load( function() { + var max1, max2, parent = $('#imgedit-crop-' + postid), t = imageEdit; + + parent.empty().append(img); + + // w, h are the new full size dims + max1 = Math.max( t.hold.w, t.hold.h ); + max2 = Math.max( $(img).width(), $(img).height() ); + t.hold['sizer'] = max1 > max2 ? max2 / max1 : 1; + + t.initCrop(postid, img, parent); + t.setCropSelection(postid, 0); + + if ( (typeof callback != "unknown") && callback != null ) + callback(); + + if ( $('#imgedit-history-' + postid).val() && $('#imgedit-undone-' + postid).val() == 0 ) + $('input.imgedit-submit-btn', '#imgedit-panel-' + postid).removeAttr('disabled'); + else + $('input.imgedit-submit-btn', '#imgedit-panel-' + postid).prop('disabled', true); + + t.toggleEditor(postid, 0); + }).attr('src', ajaxurl + '?' + $.param(data)); + }, + + action : function(postid, nonce, action) { + var t = this, data, w, h, fw, fh; + + if ( t.notsaved(postid) ) + return false; + + data = { + 'action': 'image-editor', + '_ajax_nonce': nonce, + 'postid': postid + }; + + if ( 'scale' == action ) { + w = $('#imgedit-scale-width-' + postid), + h = $('#imgedit-scale-height-' + postid), + fw = t.intval(w.val()), + fh = t.intval(h.val()); + + if ( fw < 1 ) { + w.focus(); + return false; + } else if ( fh < 1 ) { + h.focus(); + return false; + } + + if ( fw == t.hold.ow || fh == t.hold.oh ) + return false; + + data['do'] = 'scale'; + data['fwidth'] = fw; + data['fheight'] = fh; + } else if ( 'restore' == action ) { + data['do'] = 'restore'; + } else { + return false; + } + + t.toggleEditor(postid, 1); + $.post(ajaxurl, data, function(r) { + $('#image-editor-' + postid).empty().append(r); + t.toggleEditor(postid, 0); + }); + }, + + save : function(postid, nonce) { + var data, target = this.getTarget(postid), history = this.filterHistory(postid, 0); + + if ( '' == history ) + return false; + + this.toggleEditor(postid, 1); + data = { + 'action': 'image-editor', + '_ajax_nonce': nonce, + 'postid': postid, + 'history': history, + 'target': target, + 'do': 'save' + }; + + $.post(ajaxurl, data, function(r) { + var ret = JSON.parse(r); + + if ( ret.error ) { + $('#imgedit-response-' + postid).html('

    ' + ret.error + '

    '); + imageEdit.close(postid); + return; + } + + if ( ret.fw && ret.fh ) + $('#media-dims-' + postid).html( ret.fw + ' × ' + ret.fh ); + + if ( ret.thumbnail ) + $('.thumbnail', '#thumbnail-head-' + postid).attr('src', ''+ret.thumbnail); + + if ( ret.msg ) + $('#imgedit-response-' + postid).html('

    ' + ret.msg + '

    '); + + imageEdit.close(postid); + }); + }, + + open : function(postid, nonce) { + var data, elem = $('#image-editor-' + postid), head = $('#media-head-' + postid), + btn = $('#imgedit-open-btn-' + postid), spin = btn.siblings('img'); + + btn.prop('disabled', true); + spin.css('visibility', 'visible'); + + data = { + 'action': 'image-editor', + '_ajax_nonce': nonce, + 'postid': postid, + 'do': 'open' + }; + + elem.load(ajaxurl, data, function() { + elem.fadeIn('fast'); + head.fadeOut('fast', function(){ + btn.removeAttr('disabled'); + spin.css('visibility', 'hidden'); + }); + }); + }, + + imgLoaded : function(postid) { + var img = $('#image-preview-' + postid), parent = $('#imgedit-crop-' + postid); + + this.initCrop(postid, img, parent); + this.setCropSelection(postid, 0); + this.toggleEditor(postid, 0); + }, + + initCrop : function(postid, image, parent) { + var t = this, selW = $('#imgedit-sel-width-' + postid), + selH = $('#imgedit-sel-height-' + postid); + + t.iasapi = $(image).imgAreaSelect({ + parent: parent, + instance: true, + handles: true, + keys: true, + minWidth: 3, + minHeight: 3, + + onInit: function(img, c) { + parent.children().mousedown(function(e){ + var ratio = false, sel, defRatio; + + if ( e.shiftKey ) { + sel = t.iasapi.getSelection(); + defRatio = t.getSelRatio(postid); + ratio = ( sel && sel.width && sel.height ) ? sel.width + ':' + sel.height : defRatio; + } + + t.iasapi.setOptions({ + aspectRatio: ratio + }); + }); + }, + + onSelectStart: function(img, c) { + imageEdit.setDisabled($('#imgedit-crop-sel-' + postid), 1); + }, + + onSelectEnd: function(img, c) { + imageEdit.setCropSelection(postid, c); + }, + + onSelectChange: function(img, c) { + var sizer = imageEdit.hold.sizer; + selW.val( imageEdit.round(c.width / sizer) ); + selH.val( imageEdit.round(c.height / sizer) ); + } + }); + }, + + setCropSelection : function(postid, c) { + var sel, min = $('#imgedit-minthumb-' + postid).val() || '128:128', + sizer = this.hold['sizer']; + min = min.split(':'); + c = c || 0; + + if ( !c || ( c.width < 3 && c.height < 3 ) ) { + this.setDisabled($('.imgedit-crop', '#imgedit-panel-' + postid), 0); + this.setDisabled($('#imgedit-crop-sel-' + postid), 0); + $('#imgedit-sel-width-' + postid).val(''); + $('#imgedit-sel-height-' + postid).val(''); + $('#imgedit-selection-' + postid).val(''); + return false; + } + + if ( c.width < (min[0] * sizer) && c.height < (min[1] * sizer) ) { + this.setDisabled($('.imgedit-crop', '#imgedit-panel-' + postid), 0); + $('#imgedit-selection-' + postid).val(''); + return false; + } + + sel = { 'x': c.x1, 'y': c.y1, 'w': c.width, 'h': c.height }; + this.setDisabled($('.imgedit-crop', '#imgedit-panel-' + postid), 1); + $('#imgedit-selection-' + postid).val( JSON.stringify(sel) ); + }, + + close : function(postid, warn) { + warn = warn || false; + + if ( warn && this.notsaved(postid) ) + return false; + + this.iasapi = {}; + this.hold = {}; + $('#image-editor-' + postid).fadeOut('fast', function() { + $('#media-head-' + postid).fadeIn('fast'); + $(this).empty(); + }); + }, + + notsaved : function(postid) { + var h = $('#imgedit-history-' + postid).val(), + history = (h != '') ? JSON.parse(h) : new Array(), + pop = this.intval( $('#imgedit-undone-' + postid).val() ); + + if ( pop < history.length ) { + if ( confirm( $('#imgedit-leaving-' + postid).html() ) ) + return false; + return true; + } + return false; + }, + + addStep : function(op, postid, nonce) { + var t = this, elem = $('#imgedit-history-' + postid), + history = (elem.val() != '') ? JSON.parse(elem.val()) : new Array(), + undone = $('#imgedit-undone-' + postid), + pop = t.intval(undone.val()); + + while ( pop > 0 ) { + history.pop(); + pop--; + } + undone.val(0); // reset + + history.push(op); + elem.val( JSON.stringify(history) ); + + t.refreshEditor(postid, nonce, function() { + t.setDisabled($('#image-undo-' + postid), true); + t.setDisabled($('#image-redo-' + postid), false); + }); + }, + + rotate : function(angle, postid, nonce, t) { + if ( $(t).hasClass('disabled') ) + return false; + + this.addStep({ 'r': { 'r': angle, 'fw': this.hold['h'], 'fh': this.hold['w'] }}, postid, nonce); + }, + + flip : function (axis, postid, nonce, t) { + if ( $(t).hasClass('disabled') ) + return false; + + this.addStep({ 'f': { 'f': axis, 'fw': this.hold['w'], 'fh': this.hold['h'] }}, postid, nonce); + }, + + crop : function (postid, nonce, t) { + var sel = $('#imgedit-selection-' + postid).val(), + w = this.intval( $('#imgedit-sel-width-' + postid).val() ), + h = this.intval( $('#imgedit-sel-height-' + postid).val() ); + + if ( $(t).hasClass('disabled') || sel == '' ) + return false; + + sel = JSON.parse(sel); + if ( sel.w > 0 && sel.h > 0 && w > 0 && h > 0 ) { + sel['fw'] = w; + sel['fh'] = h; + this.addStep({ 'c': sel }, postid, nonce); + } + }, + + undo : function (postid, nonce) { + var t = this, button = $('#image-undo-' + postid), elem = $('#imgedit-undone-' + postid), + pop = t.intval( elem.val() ) + 1; + + if ( button.hasClass('disabled') ) + return; + + elem.val(pop); + t.refreshEditor(postid, nonce, function() { + var elem = $('#imgedit-history-' + postid), + history = (elem.val() != '') ? JSON.parse(elem.val()) : new Array(); + + t.setDisabled($('#image-redo-' + postid), true); + t.setDisabled(button, pop < history.length); + }); + }, + + redo : function(postid, nonce) { + var t = this, button = $('#image-redo-' + postid), elem = $('#imgedit-undone-' + postid), + pop = t.intval( elem.val() ) - 1; + + if ( button.hasClass('disabled') ) + return; + + elem.val(pop); + t.refreshEditor(postid, nonce, function() { + t.setDisabled($('#image-undo-' + postid), true); + t.setDisabled(button, pop > 0); + }); + }, + + setNumSelection : function(postid) { + var sel, elX = $('#imgedit-sel-width-' + postid), elY = $('#imgedit-sel-height-' + postid), + x = this.intval( elX.val() ), y = this.intval( elY.val() ), + img = $('#image-preview-' + postid), imgh = img.height(), imgw = img.width(), + sizer = this.hold['sizer'], x1, y1, x2, y2, ias = this.iasapi; + + if ( x < 1 ) { + elX.val(''); + return false; + } + + if ( y < 1 ) { + elY.val(''); + return false; + } + + if ( x && y && ( sel = ias.getSelection() ) ) { + x2 = sel.x1 + Math.round( x * sizer ); + y2 = sel.y1 + Math.round( y * sizer ); + x1 = sel.x1; + y1 = sel.y1; + + if ( x2 > imgw ) { + x1 = 0; + x2 = imgw; + elX.val( Math.round( x2 / sizer ) ); + } + + if ( y2 > imgh ) { + y1 = 0; + y2 = imgh; + elY.val( Math.round( y2 / sizer ) ); + } + + ias.setSelection( x1, y1, x2, y2 ); + ias.update(); + this.setCropSelection(postid, ias.getSelection()); + } + }, + + round : function(num) { + var s; + num = Math.round(num); + + if ( this.hold.sizer > 0.6 ) + return num; + + s = num.toString().slice(-1); + + if ( '1' == s ) + return num - 1; + else if ( '9' == s ) + return num + 1; + + return num; + }, + + setRatioSelection : function(postid, n, el) { + var sel, r, x = this.intval( $('#imgedit-crop-width-' + postid).val() ), + y = this.intval( $('#imgedit-crop-height-' + postid).val() ), + h = $('#image-preview-' + postid).height(); + + if ( !this.intval( $(el).val() ) ) { + $(el).val(''); + return; + } + + if ( x && y ) { + this.iasapi.setOptions({ + aspectRatio: x + ':' + y + }); + + if ( sel = this.iasapi.getSelection(true) ) { + r = Math.ceil( sel.y1 + ((sel.x2 - sel.x1) / (x / y)) ); + + if ( r > h ) { + r = h; + if ( n ) + $('#imgedit-crop-height-' + postid).val(''); + else + $('#imgedit-crop-width-' + postid).val(''); + } + + this.iasapi.setSelection( sel.x1, sel.y1, sel.x2, r ); + this.iasapi.update(); + } + } + } +} +})(jQuery); diff --git a/src/wp-admin/js/image-edit.js b/src/wp-admin/js/image-edit.js new file mode 100644 index 0000000..27a2d04 --- /dev/null +++ b/src/wp-admin/js/image-edit.js @@ -0,0 +1 @@ +var imageEdit;(function(a){imageEdit={iasapi:{},hold:{},postid:"",intval:function(b){return b|0},setDisabled:function(c,b){if(b){c.removeClass("disabled");a("input",c).removeAttr("disabled")}else{c.addClass("disabled");a("input",c).prop("disabled",true)}},init:function(g,e){var d=this,c=a("#image-editor-"+d.postid),b=d.intval(a("#imgedit-x-"+g).val()),f=d.intval(a("#imgedit-y-"+g).val());if(d.postid!=g&&c.length){d.close(d.postid)}d.hold.w=d.hold.ow=b;d.hold.h=d.hold.oh=f;d.hold.xy_ratio=b/f;d.hold.sizer=parseFloat(a("#imgedit-sizer-"+g).val());d.postid=g;a("#imgedit-response-"+g).empty();a('input[type="text"]',"#imgedit-panel-"+g).keypress(function(i){var h=i.keyCode;if(36this.hold.oh)||(c&&c>this.hold.ow)){g.css("visibility","visible")}else{g.css("visibility","hidden")}},getSelRatio:function(f){var b=this.hold.w,e=this.hold.h,d=this.intval(a("#imgedit-crop-width-"+f).val()),c=this.intval(a("#imgedit-crop-height-"+f).val());if(d&&c){return d+":"+c}if(b&&e){return b+":"+e}return"1:1"},filterHistory:function(j,f){var d=a("#imgedit-history-"+j).val(),b,h,e,c,g=[];if(d!=""){d=JSON.parse(d);b=this.intval(a("#imgedit-undone-"+j).val());if(b>0){while(b>0){d.pop();b--}}if(f){if(!d.length){this.hold.w=this.hold.ow;this.hold.h=this.hold.oh;return""}e=d[d.length-1];e=e.c||e.r||e.f||false;if(e){this.hold.w=e.fw;this.hold.h=e.fh}}for(h in d){c=d[h];if(c.hasOwnProperty("c")){g[h]={c:{x:c.c.x,y:c.c.y,w:c.c.w,h:c.c.h}}}else{if(c.hasOwnProperty("r")){g[h]={r:c.r.r}}else{if(c.hasOwnProperty("f")){g[h]={f:c.f.f}}}}}return JSON.stringify(g)}return""},refreshEditor:function(g,d,f){var c=this,e,b;c.toggleEditor(g,1);e={action:"imgedit-preview",_ajax_nonce:d,postid:g,history:c.filterHistory(g,1),rand:c.intval(Math.random()*1000000)};b=a('');b.load(function(){var i,h,k=a("#imgedit-crop-"+g),j=imageEdit;k.empty().append(b);i=Math.max(j.hold.w,j.hold.h);h=Math.max(a(b).width(),a(b).height());j.hold.sizer=i>h?h/i:1;j.initCrop(g,b,k);j.setCropSelection(g,0);if((typeof f!="unknown")&&f!=null){f()}if(a("#imgedit-history-"+g).val()&&a("#imgedit-undone-"+g).val()==0){a("input.imgedit-submit-btn","#imgedit-panel-"+g).removeAttr("disabled")}else{a("input.imgedit-submit-btn","#imgedit-panel-"+g).prop("disabled",true)}j.toggleEditor(g,0)}).attr("src",ajaxurl+"?"+a.param(e))},action:function(b,g,c){var j=this,e,i,f,d,k;if(j.notsaved(b)){return false}e={action:"image-editor",_ajax_nonce:g,postid:b};if("scale"==c){i=a("#imgedit-scale-width-"+b),f=a("#imgedit-scale-height-"+b),d=j.intval(i.val()),k=j.intval(f.val());if(d<1){i.focus();return false}else{if(k<1){f.focus();return false}}if(d==j.hold.ow||k==j.hold.oh){return false}e["do"]="scale";e.fwidth=d;e.fheight=k}else{if("restore"==c){e["do"]="restore"}else{return false}}j.toggleEditor(b,1);a.post(ajaxurl,e,function(h){a("#image-editor-"+b).empty().append(h);j.toggleEditor(b,0)})},save:function(f,b){var c,e=this.getTarget(f),d=this.filterHistory(f,0);if(""==d){return false}this.toggleEditor(f,1);c={action:"image-editor",_ajax_nonce:b,postid:f,history:d,target:e,"do":"save"};a.post(ajaxurl,c,function(h){var g=JSON.parse(h);if(g.error){a("#imgedit-response-"+f).html('

    '+g.error+"

    ");imageEdit.close(f);return}if(g.fw&&g.fh){a("#media-dims-"+f).html(g.fw+" × "+g.fh)}if(g.thumbnail){a(".thumbnail","#thumbnail-head-"+f).attr("src",""+g.thumbnail)}if(g.msg){a("#imgedit-response-"+f).html('

    '+g.msg+"

    ")}imageEdit.close(f)})},open:function(h,d){var f,e=a("#image-editor-"+h),c=a("#media-head-"+h),b=a("#imgedit-open-btn-"+h),g=b.siblings("img");b.prop("disabled",true);g.css("visibility","visible");f={action:"image-editor",_ajax_nonce:d,postid:h,"do":"open"};e.load(ajaxurl,f,function(){e.fadeIn("fast");c.fadeOut("fast",function(){b.removeAttr("disabled");g.css("visibility","hidden")})})},imgLoaded:function(d){var b=a("#image-preview-"+d),c=a("#imgedit-crop-"+d);this.initCrop(d,b,c);this.setCropSelection(d,0);this.toggleEditor(d,0)},initCrop:function(g,e,c){var b=this,d=a("#imgedit-sel-width-"+g),f=a("#imgedit-sel-height-"+g);b.iasapi=a(e).imgAreaSelect({parent:c,instance:true,handles:true,keys:true,minWidth:3,minHeight:3,onInit:function(h,i){c.children().mousedown(function(m){var k=false,l,j;if(m.shiftKey){l=b.iasapi.getSelection();j=b.getSelRatio(g);k=(l&&l.width&&l.height)?l.width+":"+l.height:j}b.iasapi.setOptions({aspectRatio:k})})},onSelectStart:function(h,i){imageEdit.setDisabled(a("#imgedit-crop-sel-"+g),1)},onSelectEnd:function(h,i){imageEdit.setCropSelection(g,i)},onSelectChange:function(h,j){var i=imageEdit.hold.sizer;d.val(imageEdit.round(j.width/i));f.val(imageEdit.round(j.height/i))}})},setCropSelection:function(g,f){var e,b=a("#imgedit-minthumb-"+g).val()||"128:128",d=this.hold.sizer;b=b.split(":");f=f||0;if(!f||(f.width<3&&f.height<3)){this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+g),0);this.setDisabled(a("#imgedit-crop-sel-"+g),0);a("#imgedit-sel-width-"+g).val("");a("#imgedit-sel-height-"+g).val("");a("#imgedit-selection-"+g).val("");return false}if(f.width<(b[0]*d)&&f.height<(b[1]*d)){this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+g),0);a("#imgedit-selection-"+g).val("");return false}e={x:f.x1,y:f.y1,w:f.width,h:f.height};this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+g),1);a("#imgedit-selection-"+g).val(JSON.stringify(e))},close:function(c,b){b=b||false;if(b&&this.notsaved(c)){return false}this.iasapi={};this.hold={};a("#image-editor-"+c).fadeOut("fast",function(){a("#media-head-"+c).fadeIn("fast");a(this).empty()})},notsaved:function(e){var c=a("#imgedit-history-"+e).val(),d=(c!="")?JSON.parse(c):new Array(),b=this.intval(a("#imgedit-undone-"+e).val());if(b0){g.pop();b--}f.val(0);g.push(i);e.val(JSON.stringify(g));c.refreshEditor(h,d,function(){c.setDisabled(a("#image-undo-"+h),true);c.setDisabled(a("#image-redo-"+h),false)})},rotate:function(d,e,c,b){if(a(b).hasClass("disabled")){return false}this.addStep({r:{r:d,fw:this.hold.h,fh:this.hold.w}},e,c)},flip:function(d,e,c,b){if(a(b).hasClass("disabled")){return false}this.addStep({f:{f:d,fw:this.hold.w,fh:this.hold.h}},e,c)},crop:function(g,e,c){var f=a("#imgedit-selection-"+g).val(),b=this.intval(a("#imgedit-sel-width-"+g).val()),d=this.intval(a("#imgedit-sel-height-"+g).val());if(a(c).hasClass("disabled")||f==""){return false}f=JSON.parse(f);if(f.w>0&&f.h>0&&b>0&&d>0){f.fw=b;f.fh=d;this.addStep({c:f},g,e)}},undo:function(g,e){var d=this,c=a("#image-undo-"+g),f=a("#imgedit-undone-"+g),b=d.intval(f.val())+1;if(c.hasClass("disabled")){return}f.val(b);d.refreshEditor(g,e,function(){var h=a("#imgedit-history-"+g),i=(h.val()!="")?JSON.parse(h.val()):new Array();d.setDisabled(a("#image-redo-"+g),true);d.setDisabled(c,b0)})},setNumSelection:function(c){var g,k=a("#imgedit-sel-width-"+c),j=a("#imgedit-sel-height-"+c),o=this.intval(k.val()),m=this.intval(j.val()),i=a("#image-preview-"+c),p=i.height(),h=i.width(),b=this.hold.sizer,f,n,e,l,d=this.iasapi;if(o<1){k.val("");return false}if(m<1){j.val("");return false}if(o&&m&&(g=d.getSelection())){e=g.x1+Math.round(o*b);l=g.y1+Math.round(m*b);f=g.x1;n=g.y1;if(e>h){f=0;e=h;k.val(Math.round(e/b))}if(l>p){n=0;l=p;j.val(Math.round(l/b))}d.setSelection(f,n,e,l);d.update();this.setCropSelection(c,d.getSelection())}},round:function(b){var c;b=Math.round(b);if(this.hold.sizer>0.6){return b}c=b.toString().slice(-1);if("1"==c){return b-1}else{if("9"==c){return b+1}}return b},setRatioSelection:function(j,i,d){var f,e,b=this.intval(a("#imgedit-crop-width-"+j).val()),g=this.intval(a("#imgedit-crop-height-"+j).val()),c=a("#image-preview-"+j).height();if(!this.intval(a(d).val())){a(d).val("");return}if(b&&g){this.iasapi.setOptions({aspectRatio:b+":"+g});if(f=this.iasapi.getSelection(true)){e=Math.ceil(f.y1+((f.x2-f.x1)/(b/g)));if(e>c){e=c;if(i){a("#imgedit-crop-height-"+j).val("")}else{a("#imgedit-crop-width-"+j).val("")}}this.iasapi.setSelection(f.x1,f.y1,f.x2,e);this.iasapi.update()}}}}})(jQuery); \ No newline at end of file diff --git a/src/wp-admin/js/inline-edit-post.dev.js b/src/wp-admin/js/inline-edit-post.dev.js new file mode 100644 index 0000000..b470c33 --- /dev/null +++ b/src/wp-admin/js/inline-edit-post.dev.js @@ -0,0 +1,290 @@ +(function($) { +inlineEditPost = { + + init : function(){ + var t = this, qeRow = $('#inline-edit'), bulkRow = $('#bulk-edit'); + + t.type = $('table.widefat').hasClass('pages') ? 'page' : 'post'; + t.what = '#post-'; + + // prepare the edit rows + qeRow.keyup(function(e){ + if (e.which == 27) + return inlineEditPost.revert(); + }); + bulkRow.keyup(function(e){ + if (e.which == 27) + return inlineEditPost.revert(); + }); + + $('a.cancel', qeRow).click(function(){ + return inlineEditPost.revert(); + }); + $('a.save', qeRow).click(function(){ + return inlineEditPost.save(this); + }); + $('td', qeRow).keydown(function(e){ + if ( e.which == 13 ) + return inlineEditPost.save(this); + }); + + $('a.cancel', bulkRow).click(function(){ + return inlineEditPost.revert(); + }); + + $('#inline-edit .inline-edit-private input[value="private"]').click( function(){ + var pw = $('input.inline-edit-password-input'); + if ( $(this).prop('checked') ) { + pw.val('').prop('disabled', true); + } else { + pw.prop('disabled', false); + } + }); + + // add events + $('a.editinline').live('click', function(){ + inlineEditPost.edit(this); + return false; + }); + + $('#bulk-title-div').parents('fieldset').after( + $('#inline-edit fieldset.inline-edit-categories').clone() + ).siblings( 'fieldset:last' ).prepend( + $('#inline-edit label.inline-edit-tags').clone() + ); + + // hiearchical taxonomies expandable? + $('span.catshow').click(function(){ + $(this).hide().next().show().parent().next().addClass("cat-hover"); + }); + + $('span.cathide').click(function(){ + $(this).hide().prev().show().parent().next().removeClass("cat-hover"); + }); + + $('select[name="_status"] option[value="future"]', bulkRow).remove(); + + $('#doaction, #doaction2').click(function(e){ + var n = $(this).attr('id').substr(2); + if ( $('select[name="'+n+'"]').val() == 'edit' ) { + e.preventDefault(); + t.setBulk(); + } else if ( $('form#posts-filter tr.inline-editor').length > 0 ) { + t.revert(); + } + }); + + $('#post-query-submit').mousedown(function(e){ + t.revert(); + $('select[name^="action"]').val('-1'); + }); + }, + + toggle : function(el){ + var t = this; + $(t.what+t.getId(el)).css('display') == 'none' ? t.revert() : t.edit(el); + }, + + setBulk : function(){ + var te = '', type = this.type, tax, c = true; + this.revert(); + + $('#bulk-edit td').attr('colspan', $('.widefat:first thead th:visible').length); + $('table.widefat tbody').prepend( $('#bulk-edit') ); + $('#bulk-edit').addClass('inline-editor').show(); + + $('tbody th.check-column input[type="checkbox"]').each(function(i){ + if ( $(this).prop('checked') ) { + c = false; + var id = $(this).val(), theTitle; + theTitle = $('#inline_'+id+' .post_title').text() || inlineEditL10n.notitle; + te += '
    X'+theTitle+'
    '; + } + }); + + if ( c ) + return this.revert(); + + $('#bulk-titles').html(te); + $('#bulk-titles a').click(function(){ + var id = $(this).attr('id').substr(1); + + $('table.widefat input[value="' + id + '"]').prop('checked', false); + $('#ttle'+id).remove(); + }); + + // enable autocomplete for tags + if ( 'post' == type ) { + // support multi taxonomies? + tax = 'post_tag'; + $('tr.inline-editor textarea[name="tags_input"]').suggest( 'admin-ajax.php?action=ajax-tag-search&tax='+tax, { delay: 500, minchars: 2, multiple: true, multipleSep: ", " } ); + } + $('html, body').animate( { scrollTop: 0 }, 'fast' ); + }, + + edit : function(id) { + var t = this, fields, editRow, rowData, cats, status, pageOpt, pageLevel, nextPage, pageLoop = true, nextLevel, tax; + t.revert(); + + if ( typeof(id) == 'object' ) + id = t.getId(id); + + fields = ['post_title', 'post_name', 'post_author', '_status', 'jj', 'mm', 'aa', 'hh', 'mn', 'ss', 'post_password']; + if ( t.type == 'page' ) + fields.push('post_parent', 'menu_order', 'page_template'); + + // add the new blank row + editRow = $('#inline-edit').clone(true); + $('td', editRow).attr('colspan', $('.widefat:first thead th:visible').length); + + if ( $(t.what+id).hasClass('alternate') ) + $(editRow).addClass('alternate'); + $(t.what+id).hide().after(editRow); + + // populate the data + rowData = $('#inline_'+id); + if ( !$(':input[name="post_author"] option[value="' + $('.post_author', rowData).text() + '"]', editRow).val() ) { + // author no longer has edit caps, so we need to add them to the list of authors + $(':input[name="post_author"]', editRow).prepend(''); + } + if ( $(':input[name="post_author"] option', editRow).length == 1 ) { + $('label.inline-edit-author', editRow).hide(); + } + + for ( var f = 0; f < fields.length; f++ ) { + $(':input[name="' + fields[f] + '"]', editRow).val( $('.'+fields[f], rowData).text() ); + } + + if ( $('.comment_status', rowData).text() == 'open' ) + $('input[name="comment_status"]', editRow).prop("checked", true); + if ( $('.ping_status', rowData).text() == 'open' ) + $('input[name="ping_status"]', editRow).prop("checked", true); + if ( $('.sticky', rowData).text() == 'sticky' ) + $('input[name="sticky"]', editRow).prop("checked", true); + + // hierarchical taxonomies + $('.post_category', rowData).each(function(){ + var term_ids = $(this).text(); + + if ( term_ids ) { + taxname = $(this).attr('id').replace('_'+id, ''); + $('ul.'+taxname+'-checklist :checkbox', editRow).val(term_ids.split(',')); + } + }); + //flat taxonomies + $('.tags_input', rowData).each(function(){ + var terms = $(this).text(); + + if ( terms ) { + taxname = $(this).attr('id').replace('_'+id, ''); + $('textarea.tax_input_'+taxname, editRow).val(terms); + $('textarea.tax_input_'+taxname, editRow).suggest( 'admin-ajax.php?action=ajax-tag-search&tax='+taxname, { delay: 500, minchars: 2, multiple: true, multipleSep: ", " } ); + } + }); + + + // handle the post status + status = $('._status', rowData).text(); + if ( 'future' != status ) + $('select[name="_status"] option[value="future"]', editRow).remove(); + + if ( 'private' == status ) { + $('input[name="keep_private"]', editRow).prop("checked", true); + $('input.inline-edit-password-input').val('').prop('disabled', true); + } + + // remove the current page and children from the parent dropdown + pageOpt = $('select[name="post_parent"] option[value="' + id + '"]', editRow); + if ( pageOpt.length > 0 ) { + pageLevel = pageOpt[0].className.split('-')[1]; + nextPage = pageOpt; + while ( pageLoop ) { + nextPage = nextPage.next('option'); + if (nextPage.length == 0) break; + nextLevel = nextPage[0].className.split('-')[1]; + if ( nextLevel <= pageLevel ) { + pageLoop = false; + } else { + nextPage.remove(); + nextPage = pageOpt; + } + } + pageOpt.remove(); + } + + $(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show(); + $('.ptitle', editRow).focus(); + + return false; + }, + + save : function(id) { + var params, fields, page = $('.post_status_page').val() || ''; + + if ( typeof(id) == 'object' ) + id = this.getId(id); + + $('table.widefat .inline-edit-save .waiting').show(); + + params = { + action: 'inline-save', + post_type: typenow, + post_ID: id, + edit_date: 'true', + post_status: page + }; + + fields = $('#edit-'+id+' :input').serialize(); + params = fields + '&' + $.param(params); + + // make ajax request + $.post('admin-ajax.php', params, + function(r) { + $('table.widefat .inline-edit-save .waiting').hide(); + + if (r) { + if ( -1 != r.indexOf(']*?>/g, '' ); + $('#edit-'+id+' .inline-edit-save .error').html(r).show(); + } + } else { + $('#edit-'+id+' .inline-edit-save .error').html(inlineEditL10n.error).show(); + } + } + , 'html'); + return false; + }, + + revert : function(){ + var id = $('table.widefat tr.inline-editor').attr('id'); + + if ( id ) { + $('table.widefat .inline-edit-save .waiting').hide(); + + if ( 'bulk-edit' == id ) { + $('table.widefat #bulk-edit').removeClass('inline-editor').hide(); + $('#bulk-titles').html(''); + $('#inlineedit').append( $('#bulk-edit') ); + } else { + $('#'+id).remove(); + id = id.substr( id.lastIndexOf('-') + 1 ); + $(this.what+id).show(); + } + } + + return false; + }, + + getId : function(o) { + var id = $(o).closest('tr').attr('id'), + parts = id.split('-'); + return parts[parts.length - 1]; + } +}; + +$(document).ready(function(){inlineEditPost.init();}); +})(jQuery); diff --git a/src/wp-admin/js/inline-edit-post.js b/src/wp-admin/js/inline-edit-post.js new file mode 100644 index 0000000..b72bd87 --- /dev/null +++ b/src/wp-admin/js/inline-edit-post.js @@ -0,0 +1 @@ +(function(a){inlineEditPost={init:function(){var c=this,d=a("#inline-edit"),b=a("#bulk-edit");c.type=a("table.widefat").hasClass("pages")?"page":"post";c.what="#post-";d.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});b.keyup(function(f){if(f.which==27){return inlineEditPost.revert()}});a("a.cancel",d).click(function(){return inlineEditPost.revert()});a("a.save",d).click(function(){return inlineEditPost.save(this)});a("td",d).keydown(function(f){if(f.which==13){return inlineEditPost.save(this)}});a("a.cancel",b).click(function(){return inlineEditPost.revert()});a('#inline-edit .inline-edit-private input[value="private"]').click(function(){var e=a("input.inline-edit-password-input");if(a(this).prop("checked")){e.val("").prop("disabled",true)}else{e.prop("disabled",false)}});a("a.editinline").live("click",function(){inlineEditPost.edit(this);return false});a("#bulk-title-div").parents("fieldset").after(a("#inline-edit fieldset.inline-edit-categories").clone()).siblings("fieldset:last").prepend(a("#inline-edit label.inline-edit-tags").clone());a("span.catshow").click(function(){a(this).hide().next().show().parent().next().addClass("cat-hover")});a("span.cathide").click(function(){a(this).hide().prev().show().parent().next().removeClass("cat-hover")});a('select[name="_status"] option[value="future"]',b).remove();a("#doaction, #doaction2").click(function(f){var g=a(this).attr("id").substr(2);if(a('select[name="'+g+'"]').val()=="edit"){f.preventDefault();c.setBulk()}else{if(a("form#posts-filter tr.inline-editor").length>0){c.revert()}}});a("#post-query-submit").mousedown(function(f){c.revert();a('select[name^="action"]').val("-1")})},toggle:function(c){var b=this;a(b.what+b.getId(c)).css("display")=="none"?b.revert():b.edit(c)},setBulk:function(){var e="",d=this.type,b,f=true;this.revert();a("#bulk-edit td").attr("colspan",a(".widefat:first thead th:visible").length);a("table.widefat tbody").prepend(a("#bulk-edit"));a("#bulk-edit").addClass("inline-editor").show();a('tbody th.check-column input[type="checkbox"]').each(function(g){if(a(this).prop("checked")){f=false;var h=a(this).val(),c;c=a("#inline_"+h+" .post_title").text()||inlineEditL10n.notitle;e+='
    X'+c+"
    "}});if(f){return this.revert()}a("#bulk-titles").html(e);a("#bulk-titles a").click(function(){var c=a(this).attr("id").substr(1);a('table.widefat input[value="'+c+'"]').prop("checked",false);a("#ttle"+c).remove()});if("post"==d){b="post_tag";a('tr.inline-editor textarea[name="tags_input"]').suggest("admin-ajax.php?action=ajax-tag-search&tax="+b,{delay:500,minchars:2,multiple:true,multipleSep:", "})}a("html, body").animate({scrollTop:0},"fast")},edit:function(b){var o=this,j,d,g,n,i,h,m,l,c=true,p,e;o.revert();if(typeof(b)=="object"){b=o.getId(b)}j=["post_title","post_name","post_author","_status","jj","mm","aa","hh","mn","ss","post_password"];if(o.type=="page"){j.push("post_parent","menu_order","page_template")}d=a("#inline-edit").clone(true);a("td",d).attr("colspan",a(".widefat:first thead th:visible").length);if(a(o.what+b).hasClass("alternate")){a(d).addClass("alternate")}a(o.what+b).hide().after(d);g=a("#inline_"+b);if(!a(':input[name="post_author"] option[value="'+a(".post_author",g).text()+'"]',d).val()){a(':input[name="post_author"]',d).prepend('")}if(a(':input[name="post_author"] option',d).length==1){a("label.inline-edit-author",d).hide()}for(var k=0;k0){m=h[0].className.split("-")[1];l=h;while(c){l=l.next("option");if(l.length==0){break}p=l[0].className.split("-")[1];if(p<=m){c=false}else{l.remove();l=h}}h.remove()}a(d).attr("id","edit-"+b).addClass("inline-editor").show();a(".ptitle",d).focus();return false},save:function(e){var d,b,c=a(".post_status_page").val()||"";if(typeof(e)=="object"){e=this.getId(e)}a("table.widefat .inline-edit-save .waiting").show();d={action:"inline-save",post_type:typenow,post_ID:e,edit_date:"true",post_status:c};b=a("#edit-"+e+" :input").serialize();d=b+"&"+a.param(d);a.post("admin-ajax.php",d,function(f){a("table.widefat .inline-edit-save .waiting").hide();if(f){if(-1!=f.indexOf("]*?>/g,"");a("#edit-"+e+" .inline-edit-save .error").html(f).show()}}else{a("#edit-"+e+" .inline-edit-save .error").html(inlineEditL10n.error).show()}},"html");return false},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");if(b){a("table.widefat .inline-edit-save .waiting").hide();if("bulk-edit"==b){a("table.widefat #bulk-edit").removeClass("inline-editor").hide();a("#bulk-titles").html("");a("#inlineedit").append(a("#bulk-edit"))}else{a("#"+b).remove();b=b.substr(b.lastIndexOf("-")+1);a(this.what+b).show()}}return false},getId:function(c){var d=a(c).closest("tr").attr("id"),b=d.split("-");return b[b.length-1]}};a(document).ready(function(){inlineEditPost.init()})})(jQuery); \ No newline at end of file diff --git a/src/wp-admin/js/inline-edit-tax.dev.js b/src/wp-admin/js/inline-edit-tax.dev.js new file mode 100644 index 0000000..333bf6b --- /dev/null +++ b/src/wp-admin/js/inline-edit-tax.dev.js @@ -0,0 +1,118 @@ + +(function($) { +inlineEditTax = { + + init : function() { + var t = this, row = $('#inline-edit'); + + t.type = $('#the-list').attr('class').substr(5); + t.what = '#'+t.type+'-'; + + $('.editinline').live('click', function(){ + inlineEditTax.edit(this); + return false; + }); + + // prepare the edit row + row.keyup(function(e) { if(e.which == 27) return inlineEditTax.revert(); }); + + $('a.cancel', row).click(function() { return inlineEditTax.revert(); }); + $('a.save', row).click(function() { return inlineEditTax.save(this); }); + $('input, select', row).keydown(function(e) { if(e.which == 13) return inlineEditTax.save(this); }); + + $('#posts-filter input[type="submit"]').mousedown(function(e){ + t.revert(); + }); + }, + + toggle : function(el) { + var t = this; + $(t.what+t.getId(el)).css('display') == 'none' ? t.revert() : t.edit(el); + }, + + edit : function(id) { + var t = this, editRow; + t.revert(); + + if ( typeof(id) == 'object' ) + id = t.getId(id); + + editRow = $('#inline-edit').clone(true), rowData = $('#inline_'+id); + $('td', editRow).attr('colspan', $('.widefat:first thead th:visible').length); + + if ( $(t.what+id).hasClass('alternate') ) + $(editRow).addClass('alternate'); + + $(t.what+id).hide().after(editRow); + + $(':input[name="name"]', editRow).val( $('.name', rowData).text() ); + $(':input[name="slug"]', editRow).val( $('.slug', rowData).text() ); + + $(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show(); + $('.ptitle', editRow).eq(0).focus(); + + return false; + }, + + save : function(id) { + var params, fields, tax = $('input[name="taxonomy"]').val() || ''; + + if( typeof(id) == 'object' ) + id = this.getId(id); + + $('table.widefat .inline-edit-save .waiting').show(); + + params = { + action: 'inline-save-tax', + tax_type: this.type, + tax_ID: id, + taxonomy: tax + }; + + fields = $('#edit-'+id+' :input').serialize(); + params = fields + '&' + $.param(params); + + // make ajax request + $.post('admin-ajax.php', params, + function(r) { + var row, new_id; + $('table.widefat .inline-edit-save .waiting').hide(); + + if (r) { + if ( -1 != r.indexOf('' ).text( name ); + } ); + } ); + }; + + $('#categorychecklist').wpList( { + alt: '', + what: 'link-category', + response: 'category-ajax-response', + addAfter: catAddAfter + } ); + + $('a[href="#categories-all"]').click(function(){deleteUserSetting('cats');}); + $('a[href="#categories-pop"]').click(function(){setUserSetting('cats','pop');}); + if ( 'pop' == getUserSetting('cats') ) + $('a[href="#categories-pop"]').click(); + + $('#category-add-toggle').click( function() { + $(this).parents('div:first').toggleClass( 'wp-hidden-children' ); + $('#category-tabs a[href="#categories-all"]').click(); + $('#newcategory').focus(); + return false; + } ); + + $('.categorychecklist :checkbox').change( syncChecks ).filter( ':checked' ).change(); +}); diff --git a/src/wp-admin/js/link.js b/src/wp-admin/js/link.js new file mode 100644 index 0000000..3feeaeb --- /dev/null +++ b/src/wp-admin/js/link.js @@ -0,0 +1 @@ +jQuery(document).ready(function(c){var b,a=false,d,e;c("#link_name").focus();postboxes.add_postbox_toggles("link");c("#category-tabs a").click(function(){var f=c(this).attr("href");c(this).parent().addClass("tabs").siblings("li").removeClass("tabs");c(".tabs-panel").hide();c(f).show();if("#categories-all"==f){deleteUserSetting("cats")}else{setUserSetting("cats","pop")}return false});if(getUserSetting("cats")){c('#category-tabs a[href="#categories-pop"]').click()}b=c("#newcat").one("focus",function(){c(this).val("").removeClass("form-input-tip")});c("#category-add-submit").click(function(){b.focus()});d=function(){if(a){return}a=true;var f=c(this),h=f.is(":checked"),g=f.val().toString();c("#in-link-category-"+g+", #in-popular-category-"+g).prop("checked",h);a=false};e=function(g,f){c(f.what+" response_data",g).each(function(){var h=c(c(this).text());h.find("label").each(function(){var j=c(this),l=j.find("input").val(),m=j.find("input")[0].id,i=c.trim(j.text()),k;c("#"+m).change(d);k=c('').text(i)})})};c("#categorychecklist").wpList({alt:"",what:"link-category",response:"category-ajax-response",addAfter:e});c('a[href="#categories-all"]').click(function(){deleteUserSetting("cats")});c('a[href="#categories-pop"]').click(function(){setUserSetting("cats","pop")});if("pop"==getUserSetting("cats")){c('a[href="#categories-pop"]').click()}c("#category-add-toggle").click(function(){c(this).parents("div:first").toggleClass("wp-hidden-children");c('#category-tabs a[href="#categories-all"]').click();c("#newcategory").focus();return false});c(".categorychecklist :checkbox").change(d).filter(":checked").change()}); \ No newline at end of file diff --git a/src/wp-admin/js/media-upload.dev.js b/src/wp-admin/js/media-upload.dev.js new file mode 100644 index 0000000..b19f292 --- /dev/null +++ b/src/wp-admin/js/media-upload.dev.js @@ -0,0 +1,72 @@ +// send html to the post editor +function send_to_editor(h) { + var ed; + + if ( typeof tinyMCE != 'undefined' && ( ed = tinyMCE.activeEditor ) && !ed.isHidden() ) { + // restore caret position on IE + if ( tinymce.isIE && ed.windowManager.insertimagebookmark ) + ed.selection.moveToBookmark(ed.windowManager.insertimagebookmark); + + if ( h.indexOf('[caption') === 0 ) { + if ( ed.plugins.wpeditimage ) + h = ed.plugins.wpeditimage._do_shcode(h); + } else if ( h.indexOf('[gallery') === 0 ) { + if ( ed.plugins.wpgallery ) + h = ed.plugins.wpgallery._do_gallery(h); + } else if ( h.indexOf('[embed') === 0 ) { + if ( ed.plugins.wordpress ) + h = ed.plugins.wordpress._setEmbed(h); + } + + ed.execCommand('mceInsertContent', false, h); + + } else if ( typeof edInsertContent == 'function' ) { + edInsertContent(edCanvas, h); + } else { + jQuery( edCanvas ).val( jQuery( edCanvas ).val() + h ); + } + + tb_remove(); +} + +// thickbox settings +var tb_position; +(function($) { + tb_position = function() { + var tbWindow = $('#TB_window'), width = $(window).width(), H = $(window).height(), W = ( 720 < width ) ? 720 : width, adminbar_height = 0; + + if ( $('body.admin-bar').length ) + adminbar_height = 28; + + if ( tbWindow.size() ) { + tbWindow.width( W - 50 ).height( H - 45 - adminbar_height ); + $('#TB_iframeContent').width( W - 50 ).height( H - 75 - adminbar_height ); + tbWindow.css({'margin-left': '-' + parseInt((( W - 50 ) / 2),10) + 'px'}); + if ( typeof document.body.style.maxWidth != 'undefined' ) + tbWindow.css({'top': 20 + adminbar_height + 'px','margin-top':'0'}); + }; + + return $('a.thickbox').each( function() { + var href = $(this).attr('href'); + if ( ! href ) return; + href = href.replace(/&width=[0-9]+/g, ''); + href = href.replace(/&height=[0-9]+/g, ''); + $(this).attr( 'href', href + '&width=' + ( W - 80 ) + '&height=' + ( H - 85 - adminbar_height ) ); + }); + }; + + $(window).resize(function(){ tb_position(); }); + + // store caret position in IE + $(document).ready(function($){ + $('a.thickbox').click(function(){ + var ed; + + if ( typeof tinyMCE != 'undefined' && tinymce.isIE && ( ed = tinyMCE.activeEditor ) && !ed.isHidden() ) { + ed.focus(); + ed.windowManager.insertimagebookmark = ed.selection.getBookmark(); + } + }); + }); + +})(jQuery); diff --git a/src/wp-admin/js/media-upload.js b/src/wp-admin/js/media-upload.js new file mode 100644 index 0000000..201f6ab --- /dev/null +++ b/src/wp-admin/js/media-upload.js @@ -0,0 +1 @@ +function send_to_editor(b){var a;if(typeof tinyMCE!="undefined"&&(a=tinyMCE.activeEditor)&&!a.isHidden()){if(tinymce.isIE&&a.windowManager.insertimagebookmark){a.selection.moveToBookmark(a.windowManager.insertimagebookmark)}if(b.indexOf("[caption")===0){if(a.plugins.wpeditimage){b=a.plugins.wpeditimage._do_shcode(b)}}else{if(b.indexOf("[gallery")===0){if(a.plugins.wpgallery){b=a.plugins.wpgallery._do_gallery(b)}}else{if(b.indexOf("[embed")===0){if(a.plugins.wordpress){b=a.plugins.wordpress._setEmbed(b)}}}}a.execCommand("mceInsertContent",false,b)}else{if(typeof edInsertContent=="function"){edInsertContent(edCanvas,b)}else{jQuery(edCanvas).val(jQuery(edCanvas).val()+b)}}tb_remove()}var tb_position;(function(a){tb_position=function(){var f=a("#TB_window"),e=a(window).width(),d=a(window).height(),c=(720]*?>/g, '' ); + } + if ( er ) { + $('#find-posts-response').html(er); + } + } + }; + + $(document).ready(function() { + $('#find-posts-submit').click(function(e) { + if ( '' == $('#find-posts-response').html() ) + e.preventDefault(); + }); + $( '#find-posts .find-box-search :input' ).keypress( function( event ) { + if ( 13 == event.which ) { + findPosts.send(); + return false; + } + } ); + $( '#find-posts-search' ).click( findPosts.send ); + $( '#find-posts-close' ).click( findPosts.close ); + $('#doaction, #doaction2').click(function(e){ + $('select[name^="action"]').each(function(){ + if ( $(this).val() == 'attach' ) { + e.preventDefault(); + findPosts.open(); + } + }); + }); + }); +})(jQuery); diff --git a/src/wp-admin/js/media.js b/src/wp-admin/js/media.js new file mode 100644 index 0000000..d5bd85b --- /dev/null +++ b/src/wp-admin/js/media.js @@ -0,0 +1 @@ +var findPosts;(function(a){findPosts={open:function(d,c){var b=document.documentElement.scrollTop||a(document).scrollTop();if(d&&c){a("#affected").attr("name",d).val(c)}a("#find-posts").show().draggable({handle:"#find-posts-head"}).css({top:b+50+"px",left:"50%",marginLeft:"-250px"});a("#find-posts-input").focus().keyup(function(f){if(f.which==27){findPosts.close()}});return false},close:function(){a("#find-posts-response").html("");a("#find-posts").draggable("destroy").hide()},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val()};var c;a("input[@name='itemSelect[]']:checked").each(function(){c=a(this).val()});b.post_type=c;a.ajax({type:"POST",url:ajaxurl,data:b,success:function(d){findPosts.show(d)},error:function(d){findPosts.error(d)}})},show:function(b){if(typeof(b)=="string"){this.error({responseText:b});return}var c=wpAjax.parseAjaxResponse(b);if(c.errors){this.error({responseText:wpAjax.broken})}c=c.responses[0];a("#find-posts-response").html(c.data)},error:function(b){var c=b.statusText;if(b.responseText){c=b.responseText.replace(/<.[^<>]*?>/g,"")}if(c){a("#find-posts-response").html(c)}}};a(document).ready(function(){a("#find-posts-submit").click(function(b){if(""==a("#find-posts-response").html()){b.preventDefault()}});a("#find-posts .find-box-search :input").keypress(function(b){if(13==b.which){findPosts.send();return false}});a("#find-posts-search").click(findPosts.send);a("#find-posts-close").click(findPosts.close);a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){if(a(this).val()=="attach"){b.preventDefault();findPosts.open()}})})})})(jQuery); \ No newline at end of file diff --git a/src/wp-admin/js/nav-menu.dev.js b/src/wp-admin/js/nav-menu.dev.js new file mode 100644 index 0000000..33cc6cf --- /dev/null +++ b/src/wp-admin/js/nav-menu.dev.js @@ -0,0 +1,959 @@ +/** + * WordPress Administration Navigation Menu + * Interface JS functions + * + * @version 2.0.0 + * + * @package WordPress + * @subpackage Administration + */ + +var wpNavMenu; + +(function($) { + + var api = wpNavMenu = { + + options : { + menuItemDepthPerLevel : 30, // Do not use directly. Use depthToPx and pxToDepth instead. + globalMaxDepth : 11 + }, + + menuList : undefined, // Set in init. + targetList : undefined, // Set in init. + menusChanged : false, + isRTL: !! ( 'undefined' != typeof isRtl && isRtl ), + negateIfRTL: ( 'undefined' != typeof isRtl && isRtl ) ? -1 : 1, + + // Functions that run on init. + init : function() { + api.menuList = $('#menu-to-edit'); + api.targetList = api.menuList; + + this.jQueryExtensions(); + + this.attachMenuEditListeners(); + + this.setupInputWithDefaultTitle(); + this.attachQuickSearchListeners(); + this.attachThemeLocationsListeners(); + + this.attachTabsPanelListeners(); + + this.attachUnsavedChangesListener(); + + if( api.menuList.length ) // If no menu, we're in the + tab. + this.initSortables(); + + this.initToggles(); + + this.initTabManager(); + }, + + jQueryExtensions : function() { + // jQuery extensions + $.fn.extend({ + menuItemDepth : function() { + var margin = api.isRTL ? this.eq(0).css('margin-right') : this.eq(0).css('margin-left'); + return api.pxToDepth( margin && -1 != margin.indexOf('px') ? margin.slice(0, -2) : 0 ); + }, + updateDepthClass : function(current, prev) { + return this.each(function(){ + var t = $(this); + prev = prev || t.menuItemDepth(); + $(this).removeClass('menu-item-depth-'+ prev ) + .addClass('menu-item-depth-'+ current ); + }); + }, + shiftDepthClass : function(change) { + return this.each(function(){ + var t = $(this), + depth = t.menuItemDepth(); + $(this).removeClass('menu-item-depth-'+ depth ) + .addClass('menu-item-depth-'+ (depth + change) ); + }); + }, + childMenuItems : function() { + var result = $(); + this.each(function(){ + var t = $(this), depth = t.menuItemDepth(), next = t.next(); + while( next.length && next.menuItemDepth() > depth ) { + result = result.add( next ); + next = next.next(); + } + }); + return result; + }, + updateParentMenuItemDBId : function() { + return this.each(function(){ + var item = $(this), + input = item.find('.menu-item-data-parent-id'), + depth = item.menuItemDepth(), + parent = item.prev(); + + if( depth == 0 ) { // Item is on the top level, has no parent + input.val(0); + } else { // Find the parent item, and retrieve its object id. + while( ! parent[0] || ! parent[0].className || -1 == parent[0].className.indexOf('menu-item') || ( parent.menuItemDepth() != depth - 1 ) ) + parent = parent.prev(); + input.val( parent.find('.menu-item-data-db-id').val() ); + } + }); + }, + hideAdvancedMenuItemFields : function() { + return this.each(function(){ + var that = $(this); + $('.hide-column-tog').not(':checked').each(function(){ + that.find('.field-' + $(this).val() ).addClass('hidden-field'); + }); + }); + }, + /** + * Adds selected menu items to the menu. + * + * @param jQuery metabox The metabox jQuery object. + */ + addSelectedToMenu : function(processMethod) { + if ( 0 == $('#menu-to-edit').length ) { + return false; + } + + return this.each(function() { + var t = $(this), menuItems = {}, + checkboxes = t.find('.tabs-panel-active .categorychecklist li input:checked'), + re = new RegExp('menu-item\\[(\[^\\]\]*)'); + + processMethod = processMethod || api.addMenuItemToBottom; + + // If no items are checked, bail. + if ( !checkboxes.length ) + return false; + + // Show the ajax spinner + t.find('img.waiting').show(); + + // Retrieve menu item data + $(checkboxes).each(function(){ + var t = $(this), + listItemDBIDMatch = re.exec( t.attr('name') ), + listItemDBID = 'undefined' == typeof listItemDBIDMatch[1] ? 0 : parseInt(listItemDBIDMatch[1], 10); + if ( this.className && -1 != this.className.indexOf('add-to-top') ) + processMethod = api.addMenuItemToTop; + menuItems[listItemDBID] = t.closest('li').getItemData( 'add-menu-item', listItemDBID ); + }); + + // Add the items + api.addItemToMenu(menuItems, processMethod, function(){ + // Deselect the items and hide the ajax spinner + checkboxes.removeAttr('checked'); + t.find('img.waiting').hide(); + }); + }); + }, + getItemData : function( itemType, id ) { + itemType = itemType || 'menu-item'; + + var itemData = {}, i, + fields = [ + 'menu-item-db-id', + 'menu-item-object-id', + 'menu-item-object', + 'menu-item-parent-id', + 'menu-item-position', + 'menu-item-type', + 'menu-item-title', + 'menu-item-url', + 'menu-item-description', + 'menu-item-attr-title', + 'menu-item-target', + 'menu-item-classes', + 'menu-item-xfn' + ]; + + if( !id && itemType == 'menu-item' ) { + id = this.find('.menu-item-data-db-id').val(); + } + + if( !id ) return itemData; + + this.find('input').each(function() { + var field; + i = fields.length; + while ( i-- ) { + if( itemType == 'menu-item' ) + field = fields[i] + '[' + id + ']'; + else if( itemType == 'add-menu-item' ) + field = 'menu-item[' + id + '][' + fields[i] + ']'; + + if ( + this.name && + field == this.name + ) { + itemData[fields[i]] = this.value; + } + } + }); + + return itemData; + }, + setItemData : function( itemData, itemType, id ) { // Can take a type, such as 'menu-item', or an id. + itemType = itemType || 'menu-item'; + + if( !id && itemType == 'menu-item' ) { + id = $('.menu-item-data-db-id', this).val(); + } + + if( !id ) return this; + + this.find('input').each(function() { + var t = $(this), field; + $.each( itemData, function( attr, val ) { + if( itemType == 'menu-item' ) + field = attr + '[' + id + ']'; + else if( itemType == 'add-menu-item' ) + field = 'menu-item[' + id + '][' + attr + ']'; + + if ( field == t.attr('name') ) { + t.val( val ); + } + }); + }); + return this; + } + }); + }, + + initToggles : function() { + // init postboxes + postboxes.add_postbox_toggles('nav-menus'); + + // adjust columns functions for menus UI + columns.useCheckboxesForHidden(); + columns.checked = function(field) { + $('.field-' + field).removeClass('hidden-field'); + } + columns.unchecked = function(field) { + $('.field-' + field).addClass('hidden-field'); + } + // hide fields + api.menuList.hideAdvancedMenuItemFields(); + }, + + initSortables : function() { + var currentDepth = 0, originalDepth, minDepth, maxDepth, + prev, next, prevBottom, nextThreshold, helperHeight, transport, + menuEdge = api.menuList.offset().left, + body = $('body'), maxChildDepth, + menuMaxDepth = initialMenuMaxDepth(); + + // Use the right edge if RTL. + menuEdge += api.isRTL ? api.menuList.width() : 0; + + api.menuList.sortable({ + handle: '.menu-item-handle', + placeholder: 'sortable-placeholder', + start: function(e, ui) { + var height, width, parent, children, tempHolder; + + // handle placement for rtl orientation + if ( api.isRTL ) + ui.item[0].style.right = 'auto'; + + transport = ui.item.children('.menu-item-transport'); + + // Set depths. currentDepth must be set before children are located. + originalDepth = ui.item.menuItemDepth(); + updateCurrentDepth(ui, originalDepth); + + // Attach child elements to parent + // Skip the placeholder + parent = ( ui.item.next()[0] == ui.placeholder[0] ) ? ui.item.next() : ui.item; + children = parent.childMenuItems(); + transport.append( children ); + + // Update the height of the placeholder to match the moving item. + height = transport.outerHeight(); + // If there are children, account for distance between top of children and parent + height += ( height > 0 ) ? (ui.placeholder.css('margin-top').slice(0, -2) * 1) : 0; + height += ui.helper.outerHeight(); + helperHeight = height; + height -= 2; // Subtract 2 for borders + ui.placeholder.height(height); + + // Update the width of the placeholder to match the moving item. + maxChildDepth = originalDepth; + children.each(function(){ + var depth = $(this).menuItemDepth(); + maxChildDepth = (depth > maxChildDepth) ? depth : maxChildDepth; + }); + width = ui.helper.find('.menu-item-handle').outerWidth(); // Get original width + width += api.depthToPx(maxChildDepth - originalDepth); // Account for children + width -= 2; // Subtract 2 for borders + ui.placeholder.width(width); + + // Update the list of menu items. + tempHolder = ui.placeholder.next(); + tempHolder.css( 'margin-top', helperHeight + 'px' ); // Set the margin to absorb the placeholder + ui.placeholder.detach(); // detach or jQuery UI will think the placeholder is a menu item + $(this).sortable( "refresh" ); // The children aren't sortable. We should let jQ UI know. + ui.item.after( ui.placeholder ); // reattach the placeholder. + tempHolder.css('margin-top', 0); // reset the margin + + // Now that the element is complete, we can update... + updateSharedVars(ui); + }, + stop: function(e, ui) { + var children, depthChange = currentDepth - originalDepth; + + // Return child elements to the list + children = transport.children().insertAfter(ui.item); + + // Update depth classes + if( depthChange != 0 ) { + ui.item.updateDepthClass( currentDepth ); + children.shiftDepthClass( depthChange ); + updateMenuMaxDepth( depthChange ); + } + // Register a change + api.registerChange(); + // Update the item data. + ui.item.updateParentMenuItemDBId(); + + // address sortable's incorrectly-calculated top in opera + ui.item[0].style.top = 0; + + // handle drop placement for rtl orientation + if ( api.isRTL ) { + ui.item[0].style.left = 'auto'; + ui.item[0].style.right = 0; + } + + // The width of the tab bar might have changed. Just in case. + api.refreshMenuTabs( true ); + }, + change: function(e, ui) { + // Make sure the placeholder is inside the menu. + // Otherwise fix it, or we're in trouble. + if( ! ui.placeholder.parent().hasClass('menu') ) + (prev.length) ? prev.after( ui.placeholder ) : api.menuList.prepend( ui.placeholder ); + + updateSharedVars(ui); + }, + sort: function(e, ui) { + var offset = ui.helper.offset(), + edge = api.isRTL ? offset.left + ui.helper.width() : offset.left, + depth = api.negateIfRTL * api.pxToDepth( edge - menuEdge ); + // Check and correct if depth is not within range. + // Also, if the dragged element is dragged upwards over + // an item, shift the placeholder to a child position. + if ( depth > maxDepth || offset.top < prevBottom ) depth = maxDepth; + else if ( depth < minDepth ) depth = minDepth; + + if( depth != currentDepth ) + updateCurrentDepth(ui, depth); + + // If we overlap the next element, manually shift downwards + if( nextThreshold && offset.top + helperHeight > nextThreshold ) { + next.after( ui.placeholder ); + updateSharedVars( ui ); + $(this).sortable( "refreshPositions" ); + } + } + }); + + function updateSharedVars(ui) { + var depth; + + prev = ui.placeholder.prev(); + next = ui.placeholder.next(); + + // Make sure we don't select the moving item. + if( prev[0] == ui.item[0] ) prev = prev.prev(); + if( next[0] == ui.item[0] ) next = next.next(); + + prevBottom = (prev.length) ? prev.offset().top + prev.height() : 0; + nextThreshold = (next.length) ? next.offset().top + next.height() / 3 : 0; + minDepth = (next.length) ? next.menuItemDepth() : 0; + + if( prev.length ) + maxDepth = ( (depth = prev.menuItemDepth() + 1) > api.options.globalMaxDepth ) ? api.options.globalMaxDepth : depth; + else + maxDepth = 0; + } + + function updateCurrentDepth(ui, depth) { + ui.placeholder.updateDepthClass( depth, currentDepth ); + currentDepth = depth; + } + + function initialMenuMaxDepth() { + if( ! body[0].className ) return 0; + var match = body[0].className.match(/menu-max-depth-(\d+)/); + return match && match[1] ? parseInt(match[1]) : 0; + } + + function updateMenuMaxDepth( depthChange ) { + var depth, newDepth = menuMaxDepth; + if ( depthChange === 0 ) { + return; + } else if ( depthChange > 0 ) { + depth = maxChildDepth + depthChange; + if( depth > menuMaxDepth ) + newDepth = depth; + } else if ( depthChange < 0 && maxChildDepth == menuMaxDepth ) { + while( ! $('.menu-item-depth-' + newDepth, api.menuList).length && newDepth > 0 ) + newDepth--; + } + // Update the depth class. + body.removeClass( 'menu-max-depth-' + menuMaxDepth ).addClass( 'menu-max-depth-' + newDepth ); + menuMaxDepth = newDepth; + } + }, + + attachMenuEditListeners : function() { + var that = this; + $('#update-nav-menu').bind('click', function(e) { + if ( e.target && e.target.className ) { + if ( -1 != e.target.className.indexOf('item-edit') ) { + return that.eventOnClickEditLink(e.target); + } else if ( -1 != e.target.className.indexOf('menu-save') ) { + return that.eventOnClickMenuSave(e.target); + } else if ( -1 != e.target.className.indexOf('menu-delete') ) { + return that.eventOnClickMenuDelete(e.target); + } else if ( -1 != e.target.className.indexOf('item-delete') ) { + return that.eventOnClickMenuItemDelete(e.target); + } else if ( -1 != e.target.className.indexOf('item-cancel') ) { + return that.eventOnClickCancelLink(e.target); + } + } + }); + }, + + /** + * An interface for managing default values for input elements + * that is both JS and accessibility-friendly. + * + * Input elements that add the class 'input-with-default-title' + * will have their values set to the provided HTML title when empty. + */ + setupInputWithDefaultTitle : function() { + var name = 'input-with-default-title'; + + $('.' + name).each( function(){ + var $t = $(this), title = $t.attr('title'), val = $t.val(); + $t.data( name, title ); + + if( '' == val ) $t.val( title ); + else if ( title == val ) return; + else $t.removeClass( name ); + }).focus( function(){ + var $t = $(this); + if( $t.val() == $t.data(name) ) + $t.val('').removeClass( name ); + }).blur( function(){ + var $t = $(this); + if( '' == $t.val() ) + $t.addClass( name ).val( $t.data(name) ); + }); + }, + + attachThemeLocationsListeners : function() { + var loc = $('#nav-menu-theme-locations'), params = {}; + params['action'] = 'menu-locations-save'; + params['menu-settings-column-nonce'] = $('#menu-settings-column-nonce').val(); + loc.find('input[type="submit"]').click(function() { + loc.find('select').each(function() { + params[this.name] = $(this).val(); + }); + loc.find('.waiting').show(); + $.post( ajaxurl, params, function(r) { + loc.find('.waiting').hide(); + }); + return false; + }); + }, + + attachQuickSearchListeners : function() { + var searchTimer; + + $('.quick-search').keypress(function(e){ + var t = $(this); + + if( 13 == e.which ) { + api.updateQuickSearchResults( t ); + return false; + } + + if( searchTimer ) clearTimeout(searchTimer); + + searchTimer = setTimeout(function(){ + api.updateQuickSearchResults( t ); + }, 400); + }).attr('autocomplete','off'); + }, + + updateQuickSearchResults : function(input) { + var panel, params, + minSearchLength = 2, + q = input.val(); + + if( q.length < minSearchLength ) return; + + panel = input.parents('.tabs-panel'); + params = { + 'action': 'menu-quick-search', + 'response-format': 'markup', + 'menu': $('#menu').val(), + 'menu-settings-column-nonce': $('#menu-settings-column-nonce').val(), + 'q': q, + 'type': input.attr('name') + }; + + $('img.waiting', panel).show(); + + $.post( ajaxurl, params, function(menuMarkup) { + api.processQuickSearchQueryResponse(menuMarkup, params, panel); + }); + }, + + addCustomLink : function( processMethod ) { + var url = $('#custom-menu-item-url').val(), + label = $('#custom-menu-item-name').val(); + + processMethod = processMethod || api.addMenuItemToBottom; + + if ( '' == url || 'http://' == url ) + return false; + + // Show the ajax spinner + $('.customlinkdiv img.waiting').show(); + this.addLinkToMenu( url, label, processMethod, function() { + // Remove the ajax spinner + $('.customlinkdiv img.waiting').hide(); + // Set custom link form back to defaults + $('#custom-menu-item-name').val('').blur(); + $('#custom-menu-item-url').val('http://'); + }); + }, + + addLinkToMenu : function(url, label, processMethod, callback) { + processMethod = processMethod || api.addMenuItemToBottom; + callback = callback || function(){}; + + api.addItemToMenu({ + '-1': { + 'menu-item-type': 'custom', + 'menu-item-url': url, + 'menu-item-title': label + } + }, processMethod, callback); + }, + + addItemToMenu : function(menuItem, processMethod, callback) { + var menu = $('#menu').val(), + nonce = $('#menu-settings-column-nonce').val(); + + processMethod = processMethod || function(){}; + callback = callback || function(){}; + + params = { + 'action': 'add-menu-item', + 'menu': menu, + 'menu-settings-column-nonce': nonce, + 'menu-item': menuItem + }; + + $.post( ajaxurl, params, function(menuMarkup) { + var ins = $('#menu-instructions'); + processMethod(menuMarkup, params); + if( ! ins.hasClass('menu-instructions-inactive') && ins.siblings().length ) + ins.addClass('menu-instructions-inactive'); + callback(); + }); + }, + + /** + * Process the add menu item request response into menu list item. + * + * @param string menuMarkup The text server response of menu item markup. + * @param object req The request arguments. + */ + addMenuItemToBottom : function( menuMarkup, req ) { + $(menuMarkup).hideAdvancedMenuItemFields().appendTo( api.targetList ); + }, + + addMenuItemToTop : function( menuMarkup, req ) { + $(menuMarkup).hideAdvancedMenuItemFields().prependTo( api.targetList ); + }, + + attachUnsavedChangesListener : function() { + $('#menu-management input, #menu-management select, #menu-management, #menu-management textarea').change(function(){ + api.registerChange(); + }); + + if ( 0 != $('#menu-to-edit').length ) { + window.onbeforeunload = function(){ + if ( api.menusChanged ) + return navMenuL10n.saveAlert; + }; + } else { + // Make the post boxes read-only, as they can't be used yet + $('#menu-settings-column').find('input,select').prop('disabled', true).end().find('a').attr('href', '#').unbind('click'); + } + }, + + registerChange : function() { + api.menusChanged = true; + }, + + attachTabsPanelListeners : function() { + $('#menu-settings-column').bind('click', function(e) { + var selectAreaMatch, panelId, wrapper, items, + target = $(e.target); + + if ( target.hasClass('nav-tab-link') ) { + panelId = /#(.*)$/.exec(e.target.href); + if ( panelId && panelId[1] ) + panelId = panelId[1] + else + return false; + + wrapper = target.parents('.inside').first(); + + // upon changing tabs, we want to uncheck all checkboxes + $('input', wrapper).removeAttr('checked'); + + $('.tabs-panel-active', wrapper).removeClass('tabs-panel-active').addClass('tabs-panel-inactive'); + $('#' + panelId, wrapper).removeClass('tabs-panel-inactive').addClass('tabs-panel-active'); + + $('.tabs', wrapper).removeClass('tabs'); + target.parent().addClass('tabs'); + + // select the search bar + $('.quick-search', wrapper).focus(); + + return false; + } else if ( target.hasClass('select-all') ) { + selectAreaMatch = /#(.*)$/.exec(e.target.href); + if ( selectAreaMatch && selectAreaMatch[1] ) { + items = $('#' + selectAreaMatch[1] + ' .tabs-panel-active .menu-item-title input'); + if( items.length === items.filter(':checked').length ) + items.removeAttr('checked'); + else + items.prop('checked', true); + return false; + } + } else if ( target.hasClass('submit-add-to-menu') ) { + api.registerChange(); + + if ( e.target.id && 'submit-customlinkdiv' == e.target.id ) + api.addCustomLink( api.addMenuItemToBottom ); + else if ( e.target.id && -1 != e.target.id.indexOf('submit-') ) + $('#' + e.target.id.replace(/submit-/, '')).addSelectedToMenu( api.addMenuItemToBottom ); + return false; + } else if ( target.hasClass('page-numbers') ) { + $.post( ajaxurl, e.target.href.replace(/.*\?/, '').replace(/action=([^&]*)/, '') + '&action=menu-get-metabox', + function( resp ) { + if ( -1 == resp.indexOf('replace-id') ) + return; + + var metaBoxData = $.parseJSON(resp), + toReplace = document.getElementById(metaBoxData['replace-id']), + placeholder = document.createElement('div'), + wrap = document.createElement('div'); + + if ( ! metaBoxData['markup'] || ! toReplace ) + return; + + wrap.innerHTML = metaBoxData['markup'] ? metaBoxData['markup'] : ''; + + toReplace.parentNode.insertBefore( placeholder, toReplace ); + placeholder.parentNode.removeChild( toReplace ); + + placeholder.parentNode.insertBefore( wrap, placeholder ); + + placeholder.parentNode.removeChild( placeholder ); + + } + ); + + return false; + } + }); + }, + + initTabManager : function() { + var fixed = $('.nav-tabs-wrapper'), + fluid = fixed.children('.nav-tabs'), + active = fluid.children('.nav-tab-active'), + tabs = fluid.children('.nav-tab'), + tabsWidth = 0, + fixedRight, fixedLeft, + arrowLeft, arrowRight, resizeTimer, css = {}, + marginFluid = api.isRTL ? 'margin-right' : 'margin-left', + marginFixed = api.isRTL ? 'margin-left' : 'margin-right', + msPerPx = 2; + + /** + * Refreshes the menu tabs. + * Will show and hide arrows where necessary. + * Scrolls to the active tab by default. + * + * @param savePosition {boolean} Optional. Prevents scrolling so + * that the current position is maintained. Default false. + **/ + api.refreshMenuTabs = function( savePosition ) { + var fixedWidth = fixed.width(), + margin = 0, css = {}; + fixedLeft = fixed.offset().left; + fixedRight = fixedLeft + fixedWidth; + + if( !savePosition ) + active.makeTabVisible(); + + // Prevent space from building up next to the last tab if there's more to show + if( tabs.last().isTabVisible() ) { + margin = fixed.width() - tabsWidth; + margin = margin > 0 ? 0 : margin; + css[marginFluid] = margin + 'px'; + fluid.animate( css, 100, "linear" ); + } + + // Show the arrows only when necessary + if( fixedWidth > tabsWidth ) + arrowLeft.add( arrowRight ).hide(); + else + arrowLeft.add( arrowRight ).show(); + } + + $.fn.extend({ + makeTabVisible : function() { + var t = this.eq(0), left, right, css = {}, shift = 0; + + if( ! t.length ) return this; + + left = t.offset().left; + right = left + t.outerWidth(); + + if( right > fixedRight ) + shift = fixedRight - right; + else if ( left < fixedLeft ) + shift = fixedLeft - left; + + if( ! shift ) return this; + + css[marginFluid] = "+=" + api.negateIfRTL * shift + 'px'; + fluid.animate( css, Math.abs( shift ) * msPerPx, "linear" ); + return this; + }, + isTabVisible : function() { + var t = this.eq(0), + left = t.offset().left, + right = left + t.outerWidth(); + return ( right <= fixedRight && left >= fixedLeft ) ? true : false; + } + }); + + // Find the width of all tabs + tabs.each(function(){ + tabsWidth += $(this).outerWidth(true); + }); + + // Set up fixed margin for overflow, unset padding + css['padding'] = 0; + css[marginFixed] = (-1 * tabsWidth) + 'px'; + fluid.css( css ); + + // Build tab navigation + arrowLeft = $(''); + arrowRight = $(''); + // Attach to the document + fixed.wrap(''; + include( ABSPATH . 'wp-admin/admin-footer.php' ); + die(); + } + + echo '
    '; + + wp_nonce_field( 'install-network-1' ); + + $error_codes = array(); + if ( is_wp_error( $errors ) ) { + echo '

    ' . __( 'ERROR: The network could not be created.' ) . '

    '; + foreach ( $errors->get_error_messages() as $error ) + echo "

    $error

    "; + echo '
    '; + $error_codes = $errors->get_error_codes(); + } + + if ( WP_CONTENT_DIR != ABSPATH . 'wp-content' ) + echo '

    ' . __('Warning!') . ' ' . __( 'Networks may not be fully compatible with custom wp-content directories.' ) . '

    '; + + $site_name = ( ! empty( $_POST['sitename'] ) && ! in_array( 'empty_sitename', $error_codes ) ) ? $_POST['sitename'] : sprintf( _x('%s Sites', 'Default network name' ), get_option( 'blogname' ) ); + $admin_email = ( ! empty( $_POST['email'] ) && ! in_array( 'invalid_email', $error_codes ) ) ? $_POST['email'] : get_option( 'admin_email' ); + ?> +

    +

    +

    ' . __( 'Note:' ) . ' ' . __( 'Please make sure the Apache mod_rewrite module is installed as it will be used at the end of this installation.' ) . '

    '; + elseif ( $is_apache ) + echo '

    ' . __( 'Warning!' ) . ' ' . __( 'It looks like the Apache mod_rewrite module is not installed.' ) . '

    '; + if ( $got_mod_rewrite || $is_apache ) // Protect against mod_rewrite mimicry (but ! Apache) + echo '

    ' . __( 'If mod_rewrite is disabled, ask your administrator to enable that module, or look at the Apache documentation or elsewhere for help setting it up.' ) . '

    '; + } + + if ( allow_subdomain_install() && allow_subdirectory_install() ) : ?> +

    +

    You cannot change this later.' ); ?>

    +

    + + + + + + + + + + +
    site1.%1$s and site2.%1$s', 'subdomain examples' ), $hostname ); ?>
    %1$s/site1 and %1$s/site2', 'subdirectory examples' ), $hostname ); ?>
    + + +

    +

    %1$s before enabling the network feature. It will still be possible to visit your site using the www prefix with an address like %2$s but any links will not have the www prefix.' ), substr( $hostname, 4 ), $hostname ); ?> + + + + + +
    + %s.' ), $hostname ); ?> +
    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    localhost, the sites in your WordPress network must use sub-directories. Consider using localhost.localdomain if you wish to use sub-domains.' ); + // Uh oh: + if ( !allow_subdirectory_install() ) + echo ' ' . __( 'Warning!' ) . ' ' . __( 'The main site in a sub-directory install will need to use a modified permalink structure, potentially breaking existing links.' ) . ''; + ?>
    ' . __( 'Warning!' ) . ' ' . __( 'The main site in a sub-directory install will need to use a modified permalink structure, potentially breaking existing links.' ) . ''; + ?>
    ' . __( 'The main site in a sub-directory install will need to use a modified permalink structure, potentially breaking existing links.' ) . ''; + ?>
    + %s.' ), $hostname ); ?> +
    + +
    +
    + +
    +
    + +
    + ' . $errors->get_error_message() . '
    '; + + if ( $_POST ) { + if ( allow_subdomain_install() ) + $subdomain_install = allow_subdirectory_install() ? ! empty( $_POST['subdomain_install'] ) : true; + else + $subdomain_install = false; + } else { + if ( is_multisite() ) { + $subdomain_install = is_subdomain_install(); +?> +

    +get_var( "SELECT meta_value FROM $wpdb->sitemeta WHERE site_id = 1 AND meta_key = 'subdomain_install'" ); +?> +

    +

    + +

    +

    +

    Caution: We recommend you back up your existing wp-config.php and %s files.' ), '.htaccess' ); + elseif ( file_exists( ABSPATH . 'web.config' ) ) + printf( __( 'Caution: We recommend you back up your existing wp-config.php and %s files.' ), 'web.config' ); + else + _e( 'Caution: We recommend you back up your existing wp-config.php file.' ); + ?>

    + +
      +
    1. blogs.dir directory at %s/blogs.dir. This directory is used to store uploaded media for your additional sites and must be writeable by the web server.' ), WP_CONTENT_DIR ); + if ( WP_CONTENT_DIR != ABSPATH . 'wp-content' ) + echo ' ' . __('Warning:') . ' ' . __( 'Networks may not be fully compatible with custom wp-content directories.' ) . '

    2. +
    3. wp-config.php file in %s above the line reading /* That’s all, stop editing! Happy blogging. */:' ), ABSPATH ); ?>

      + + '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '' ); + foreach ( $keys_salts as $c => $v ) { + if ( defined( $c ) ) + unset( $keys_salts[ $c ] ); + } + if ( ! empty( $keys_salts ) ) { + $keys_salts_str = ''; + $from_api = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' ); + if ( is_wp_error( $from_api ) ) { + foreach ( $keys_salts as $c => $v ) { + $keys_salts_str .= "\ndefine( '$c', '" . wp_generate_password( 64, true, true ) . "' );"; + } + } else { + $from_api = explode( "\n", wp_remote_retrieve_body( $from_api ) ); + foreach ( $keys_salts as $c => $v ) { + $keys_salts_str .= "\ndefine( '$c', '" . substr( array_shift( $from_api ), 28, 64 ) . "' );"; + } + } + $num_keys_salts = count( $keys_salts ); +?> +

      wp-config.php file.', 'These unique authentication keys are also missing from your wp-config.php file.', $num_keys_salts ); ?>

      + + +
    4. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +'; + } else { + $web_config_file = +' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +'; + } + ?> +
    5. web.config file in %s, replacing other WordPress rules:' ), ABSPATH ); ?>

      +
    6. +
    + + +
  • .htaccess file in %s, replacing other WordPress rules:' ), ABSPATH ); ?>

    +
  • + + + +

    +get_error_codes() ) && 'no_wildcard_dns' == $result->get_error_code() ) + network_step2( $result ); + else + network_step1( $result ); + } else { + network_step2(); + } + } else { + network_step2(); + } +} elseif ( is_multisite() || network_domain_check() ) { + network_step2(); +} else { + network_step1(); +} +?> +
    + + diff --git a/src/wp-admin/network/admin.php b/src/wp-admin/network/admin.php new file mode 100644 index 0000000..d6de38d --- /dev/null +++ b/src/wp-admin/network/admin.php @@ -0,0 +1,25 @@ +domain != $current_site->domain ) || ( $current_blog->path != $current_site->path ) ); +$redirect_network_admin_request = apply_filters( 'redirect_network_admin_request', $redirect_network_admin_request ); +if ( $redirect_network_admin_request ) { + wp_redirect( network_admin_url() ); + exit; +} +unset( $redirect_network_admin_request ); +?> diff --git a/src/wp-admin/network/edit.php b/src/wp-admin/network/edit.php new file mode 100644 index 0000000..2d3f952 --- /dev/null +++ b/src/wp-admin/network/edit.php @@ -0,0 +1,482 @@ + +

    +

    +
    + + ID'>$current_user->user_login"; + + foreach ( ( $allusers = (array) $_POST['allusers'] ) as $key => $val ) { + if ( $val != '' && $val != '0' ) { + $delete_user = new WP_User( $val ); + + if ( ! current_user_can( 'delete_user', $delete_user->ID ) ) + wp_die( sprintf( __( 'Warning! User %s cannot be deleted.' ), $delete_user->user_login ) ); + + if ( in_array( $delete_user->user_login, $site_admins ) ) + wp_die( sprintf( __( 'Warning! User cannot be deleted. The user %s is a network admnistrator.' ), $delete_user->user_login ) ); + + echo "\n"; + $blogs = get_blogs_of_user( $val, true ); + + if ( !empty( $blogs ) ) { + ?> +

    %s?" ), $delete_user->user_login ); ?>

    + $details ) { + $blog_users = get_users( array( 'blog_id' => $details->userblog_id ) ); + if ( is_array( $blog_users ) && !empty( $blog_users ) ) { + $user_site = "{$details->blogname}"; + $user_dropdown = "\n"; + ?> +
      +
    • +
    • +
    • +
    + "; + } + } + } + + submit_button( __('Confirm Deletion'), 'delete' ); + ?> + + options page.' ), esc_url( admin_url( 'settings.php' ) ) ) ); + + if ( isset($_POST['WPLANG']) && ( '' === $_POST['WPLANG'] || in_array( $_POST['WPLANG'], get_available_languages() ) ) ) + update_site_option( 'WPLANG', $_POST['WPLANG'] ); + + if ( is_email( $_POST['admin_email'] ) ) + update_site_option( 'admin_email', $_POST['admin_email'] ); + + $illegal_names = split( ' ', $_POST['illegal_names'] ); + foreach ( (array) $illegal_names as $name ) { + $name = trim( $name ); + if ( $name != '' ) + $names[] = trim( $name ); + } + update_site_option( 'illegal_names', $names ); + + if ( $_POST['limited_email_domains'] != '' ) { + $limited_email_domains = str_replace( ' ', "\n", $_POST['limited_email_domains'] ); + $limited_email_domains = split( "\n", stripslashes( $limited_email_domains ) ); + $limited_email = array(); + foreach ( (array) $limited_email_domains as $domain ) { + $domain = trim( $domain ); + if ( ! preg_match( '/(--|\.\.)/', $domain ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $domain ) ) + $limited_email[] = trim( $domain ); + } + update_site_option( 'limited_email_domains', $limited_email ); + } else { + update_site_option( 'limited_email_domains', '' ); + } + + if ( $_POST['banned_email_domains'] != '' ) { + $banned_email_domains = split( "\n", stripslashes( $_POST['banned_email_domains'] ) ); + $banned = array(); + foreach ( (array) $banned_email_domains as $domain ) { + $domain = trim( $domain ); + if ( ! preg_match( '/(--|\.\.)/', $domain ) && preg_match( '|^([a-zA-Z0-9-\.])+$|', $domain ) ) + $banned[] = trim( $domain ); + } + update_site_option( 'banned_email_domains', $banned ); + } else { + update_site_option( 'banned_email_domains', '' ); + } + + $options = array( 'registrationnotification', 'registration', 'add_new_users', 'menu_items', 'mu_media_buttons', 'upload_space_check_disabled', 'blog_upload_space', 'upload_filetypes', 'site_name', 'first_post', 'first_page', 'first_comment', 'first_comment_url', 'first_comment_author', 'welcome_email', 'welcome_user_email', 'fileupload_maxk', 'global_terms_enabled' ); + $checked_options = array( 'mu_media_buttons' => array(), 'menu_items' => array(), 'registrationnotification' => 'no', 'upload_space_check_disabled' => 1, 'add_new_users' => 0 ); + foreach ( $checked_options as $option_name => $option_unchecked_value ) { + if ( ! isset( $_POST[$option_name] ) ) + $_POST[$option_name] = $option_unchecked_value; + } + foreach ( $options as $option_name ) { + if ( ! isset($_POST[$option_name]) ) + continue; + $value = stripslashes_deep( $_POST[$option_name] ); + update_site_option( $option_name, $value ); + } + + // Update more options here + do_action( 'update_wpmu_options' ); + + wp_redirect( add_query_arg( 'updated', 'true', network_admin_url( 'settings.php' ) ) ); + exit(); + break; + + case 'updateblog': + // No longer used. + break; + + case 'deleteblog': + check_admin_referer('deleteblog'); + if ( ! ( current_user_can( 'manage_sites' ) && current_user_can( 'delete_sites' ) ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + if ( $id != '0' && $id != $current_site->blog_id && current_user_can( 'delete_site', $id ) ) { + wpmu_delete_blog( $id, true ); + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'delete' ), wp_get_referer() ) ); + } else { + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'not_deleted' ), wp_get_referer() ) ); + } + + exit(); + break; + + case 'allblogs': + if ( ( isset( $_POST['action'] ) || isset( $_POST['action2'] ) ) && isset( $_POST['allblogs'] ) ) { + check_admin_referer( 'bulk-sites' ); + + if ( ! current_user_can( 'manage_sites' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + if ( $_GET['action'] != -1 || $_POST['action2'] != -1 ) + $doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2']; + + $blogfunction = ''; + + foreach ( (array) $_POST['allblogs'] as $key => $val ) { + if ( $val != '0' && $val != $current_site->blog_id ) { + switch ( $doaction ) { + case 'delete': + if ( ! current_user_can( 'delete_site', $val ) ) + wp_die( __( 'You are not allowed to delete the site.' ) ); + $blogfunction = 'all_delete'; + wpmu_delete_blog( $val, true ); + break; + + case 'spam': + $blogfunction = 'all_spam'; + update_blog_status( $val, 'spam', '1' ); + set_time_limit( 60 ); + break; + + case 'notspam': + $blogfunction = 'all_notspam'; + update_blog_status( $val, 'spam', '0' ); + set_time_limit( 60 ); + break; + } + } else { + wp_die( __( 'You are not allowed to change the current site.' ) ); + } + } + + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $blogfunction ), wp_get_referer() ) ); + } else { + wp_redirect( network_admin_url( 'sites.php' ) ); + } + exit(); + break; + + case 'archiveblog': + check_admin_referer( 'archiveblog' ); + if ( ! current_user_can( 'manage_sites' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + update_blog_status( $id, 'archived', '1' ); + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'archive' ), wp_get_referer() ) ); + exit(); + break; + + case 'unarchiveblog': + check_admin_referer( 'unarchiveblog' ); + if ( ! current_user_can( 'manage_sites' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + update_blog_status( $id, 'archived', '0' ); + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'unarchive' ), wp_get_referer() ) ); + exit(); + break; + + case 'activateblog': + check_admin_referer( 'activateblog' ); + if ( ! current_user_can( 'manage_sites' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + update_blog_status( $id, 'deleted', '0' ); + do_action( 'activate_blog', $id ); + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'activate' ), wp_get_referer() ) ); + exit(); + break; + + case 'deactivateblog': + check_admin_referer( 'deactivateblog' ); + if ( ! current_user_can( 'manage_sites' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + do_action( 'deactivate_blog', $id ); + update_blog_status( $id, 'deleted', '1' ); + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'deactivate' ), wp_get_referer() ) ); + exit(); + break; + + case 'unspamblog': + check_admin_referer( 'unspamblog' ); + if ( ! current_user_can( 'manage_sites' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + update_blog_status( $id, 'spam', '0' ); + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'unspam' ), wp_get_referer() ) ); + exit(); + break; + + case 'spamblog': + check_admin_referer( 'spamblog' ); + if ( ! current_user_can( 'manage_sites' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + update_blog_status( $id, 'spam', '1' ); + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'spam' ), wp_get_referer() ) ); + exit(); + break; + + case 'unmatureblog': + check_admin_referer( 'unmatureblog' ); + if ( ! current_user_can( 'manage_sites' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + update_blog_status( $id, 'mature', '0' ); + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'unmature' ), wp_get_referer() ) ); + exit(); + break; + + case 'matureblog': + check_admin_referer( 'matureblog' ); + if ( ! current_user_can( 'manage_sites' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + update_blog_status( $id, 'mature', '1' ); + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => 'mature' ), wp_get_referer() ) ); + exit(); + break; + + // Common + case 'confirm': + check_admin_referer( 'confirm' ); + if ( !headers_sent() ) { + nocache_headers(); + header( 'Content-Type: text/html; charset=utf-8' ); + } + if ( $current_site->blog_id == $id ) + wp_die( __( 'You are not allowed to change the current site.' ) ); + ?> + + > + + <?php _e( 'WordPress › Confirm your action' ); ?> + + + + + +

    WordPress

    +
    + + + + +

    + +
    + + + '; + confirm_delete_users( $_POST['allusers'] ); + echo '
    '; + require_once( '../admin-footer.php' ); + } else { + wp_redirect( network_admin_url( 'users.php' ) ); + } + exit(); + break; + + case 'allusers': + if ( !current_user_can( 'manage_network_users' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + if ( ( isset( $_POST['action']) || isset($_POST['action2'] ) ) && isset( $_POST['allusers'] ) ) { + check_admin_referer( 'bulk-users-network' ); + + if ( $_GET['action'] != -1 || $_POST['action2'] != -1 ) + $doaction = $_POST['action'] != -1 ? $_POST['action'] : $_POST['action2']; + + $userfunction = ''; + + foreach ( (array) $_POST['allusers'] as $key => $val ) { + if ( !empty( $val ) ) { + switch ( $doaction ) { + case 'delete': + if ( ! current_user_can( 'delete_users' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + $title = __( 'Users' ); + $parent_file = 'users.php'; + require_once( '../admin-header.php' ); + echo '
    '; + confirm_delete_users( $_POST['allusers'] ); + echo '
    '; + require_once( '../admin-footer.php' ); + exit(); + break; + + case 'spam': + $user = new WP_User( $val ); + if ( in_array( $user->user_login, get_super_admins() ) ) + wp_die( sprintf( __( 'Warning! User cannot be modified. The user %s is a network administrator.' ), esc_html( $user->user_login ) ) ); + + $userfunction = 'all_spam'; + $blogs = get_blogs_of_user( $val, true ); + foreach ( (array) $blogs as $key => $details ) { + if ( $details->userblog_id != $current_site->blog_id ) // main blog not a spam ! + update_blog_status( $details->userblog_id, 'spam', '1' ); + } + update_user_status( $val, 'spam', '1' ); + break; + + case 'notspam': + $userfunction = 'all_notspam'; + $blogs = get_blogs_of_user( $val, true ); + foreach ( (array) $blogs as $key => $details ) + update_blog_status( $details->userblog_id, 'spam', '0' ); + + update_user_status( $val, 'spam', '0' ); + break; + } + } + } + + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $userfunction ), wp_get_referer() ) ); + } else { + $location = network_admin_url( 'users.php' ); + + if ( ! empty( $_REQUEST['paged'] ) ) + $location = add_query_arg( 'paged', (int) $_REQUEST['paged'], $location ); + wp_redirect( $location ); + } + exit(); + break; + + case 'dodelete': + check_admin_referer( 'ms-users-delete' ); + if ( ! ( current_user_can( 'manage_network_users' ) && current_user_can( 'delete_users' ) ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + if ( ! empty( $_POST['blog'] ) && is_array( $_POST['blog'] ) ) { + foreach ( $_POST['blog'] as $id => $users ) { + foreach ( $users as $blogid => $user_id ) { + if ( ! current_user_can( 'delete_user', $id ) ) + continue; + + if ( ! empty( $_POST['delete'] ) && 'reassign' == $_POST['delete'][$blogid][$id] ) + remove_user_from_blog( $id, $blogid, $user_id ); + else + remove_user_from_blog( $id, $blogid ); + } + } + } + $i = 0; + if ( is_array( $_POST['user'] ) && ! empty( $_POST['user'] ) ) + foreach( $_POST['user'] as $id ) { + if ( ! current_user_can( 'delete_user', $id ) ) + continue; + wpmu_delete_user( $id ); + $i++; + } + + if ( $i == 1 ) + $deletefunction = 'delete'; + else + $deletefunction = 'all_delete'; + + wp_redirect( add_query_arg( array( 'updated' => 'true', 'action' => $deletefunction ), network_admin_url( 'users.php' ) ) ); + exit(); + break; + + default: + // Let plugins use us as a post handler easily + do_action( 'network_admin_edit_' . $_GET['action'] ); + wp_redirect( network_admin_url( 'index.php' ) ); + exit(); + break; +} +?> diff --git a/src/wp-admin/network/index-extra.php b/src/wp-admin/network/index-extra.php new file mode 100644 index 0000000..17ead78 --- /dev/null +++ b/src/wp-admin/network/index-extra.php @@ -0,0 +1,13 @@ +' . __('Until WordPress 3.0, running multiple sites required using WordPress MU instead of regular WordPress. In version 3.0, these applications have merged. If you are a former MU user, you should be aware of the following changes:') . '

    ' . + '
    • ' . __('Site Admin is now Super Admin (we highly encourage you to get yourself a cape!).') . '
    • ' . + '
    • ' . __('Blogs are now called Sites; Site is now called Network.') . '
    ' . + '

    ' . __('The Right Now box provides the network administrator with links to the screens to either create a new site or user, or to search existing users and sites. Screen for Sites and Users are also accessible through the left-hand navigation in the Network Admin section.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on the Network Admin') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +wp_dashboard_setup(); + +wp_enqueue_script( 'dashboard' ); +wp_enqueue_script( 'plugin-install' ); +wp_admin_css( 'dashboard' ); +wp_admin_css( 'plugin-install' ); +add_thickbox(); + +add_screen_option('layout_columns', array('max' => 4, 'default' => 2) ); + +require_once( '../admin-header.php' ); + +?> + +
    + +

    + +
    + + + +
    +
    + +
    + + diff --git a/src/wp-admin/network/menu.php b/src/wp-admin/network/menu.php new file mode 100644 index 0000000..c33d47a --- /dev/null +++ b/src/wp-admin/network/menu.php @@ -0,0 +1,86 @@ +response) ) + $theme_update_count = count( $update_themes->response ); + $menu[15] = array(sprintf( __( 'Themes %s' ), "" . number_format_i18n( $theme_update_count ) . "" ), 'manage_network_themes', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'div' ); +} else { + $menu[15] = array( __( 'Themes' ), 'manage_network_themes', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'div' ); +} +$submenu['themes.php'][5] = array( __('Installed Themes'), 'manage_network_themes', 'themes.php' ); +$submenu['themes.php'][10] = array( _x('Add New', 'theme'), 'install_themes', 'theme-install.php' ); +$submenu['themes.php'][15] = array( _x('Editor', 'theme editor'), 'edit_themes', 'theme-editor.php' ); + +if ( current_user_can( 'update_plugins' ) ) { + $update_plugins = get_site_transient( 'update_plugins' ); + if ( !empty($update_plugins->response) ) + $plugin_update_count = count( $update_plugins->response ); + $menu[20] = array( sprintf( __( 'Plugins %s' ), "" . number_format_i18n( $plugin_update_count ) . "" ), 'manage_network_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'div'); +} else { + $menu[20] = array( __('Plugins'), 'manage_network_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'div' ); +} +$submenu['plugins.php'][5] = array( __('Installed Plugins'), 'manage_network_plugins', 'plugins.php' ); +$submenu['plugins.php'][10] = array( _x('Add New', 'plugin editor'), 'install_plugins', 'plugin-install.php' ); +$submenu['plugins.php'][15] = array( _x('Editor', 'plugin editor'), 'edit_plugins', 'plugin-editor.php' ); + + +$menu[25] = array(__('Settings'), 'manage_network_options', 'settings.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'div'); +if ( defined( 'MULTISITE' ) && defined( 'WP_ALLOW_MULTISITE' ) && WP_ALLOW_MULTISITE ) { + $submenu['settings.php'][5] = array( __('Network Settings'), 'manage_network_options', 'settings.php' ); + $submenu['settings.php'][10] = array( __('Network Setup'), 'manage_network_options', 'setup.php' ); +} + +if ( current_user_can( 'update_core' ) ) { + $update_wordpress = get_core_updates( array('dismissed' => false) ); + if ( !empty($update_wordpress) && !in_array( $update_wordpress[0]->response, array('development', 'latest') ) ) + $wordpress_update_count = 1; + + $update_count = $plugin_update_count + $theme_update_count + $wordpress_update_count; + $update_title = array(); + if ( $wordpress_update_count ) + $update_title[] = sprintf(__('%d WordPress Update'), $wordpress_update_count); + if ( $plugin_update_count ) + $update_title[] = sprintf(_n('%d Plugin Update', '%d Plugin Updates', $plugin_update_count), $plugin_update_count); + if ( $theme_update_count ) + $update_title[] = sprintf(_n('%d Theme Update', '%d Theme Updates', $theme_update_count), $theme_update_count); + + $update_title = !empty($update_title) ? esc_attr(implode(', ', $update_title)) : ''; + + $menu[30] = array( sprintf( __( 'Updates %s' ), "" . number_format_i18n($update_count) . "" ), 'manage_network', 'upgrade.php', '', 'menu-top menu-icon-tools', 'menu-update', 'div' ); +} else { + $menu[30] = array( __( 'Updates' ), 'manage_network', 'upgrade.php', '', 'menu-top menu-icon-tools', 'menu-update', 'div' ); +} + +$submenu[ 'upgrade.php' ][10] = array( __( 'Available Updates' ), 'update_core', 'update-core.php' ); +$submenu[ 'upgrade.php' ][15] = array( __( 'Update Network' ), 'manage_network', 'upgrade.php' ); +unset($plugin_update_count, $theme_update_count, $wordpress_update_count, $update_count, $update_title, $update_themes, $update_plugins, $update_wordpress); + + +$menu[99] = array( '', 'read', 'separator-last', '', 'wp-menu-separator-last' ); + +require_once(ABSPATH . 'wp-admin/includes/menu.php'); + +?> \ No newline at end of file diff --git a/src/wp-admin/network/plugin-editor.php b/src/wp-admin/network/plugin-editor.php new file mode 100644 index 0000000..8850aa8 --- /dev/null +++ b/src/wp-admin/network/plugin-editor.php @@ -0,0 +1,16 @@ +' . __('This screen sets and changes options for the network as a whole. The first site is the main site in the network and network options are pulled from that original site’s options.') . '

    ' . + '

    ' . __('Operational settings has fields for the network’s name and admin email.') . '

    ' . + '

    ' . __('Dashboard Site is an option to give a site to users who do not have a site on the system. Their default role is Subscriber, but that default can be changed. The Admin Notice Feed can provide a notice on all dashboards of the latest post via RSS or Atom, or provide no such notice if left blank.') . '

    ' . + '

    ' . __('Registration settings can disable/enable public signups. If you let others sign up for a site, install spam plugins. Spaces, not commas, should separate names banned as sites for this network.') . '

    ' . + '

    ' . __('New site settings are defaults applied when a new site is created in the network. These include welcome email for when a new site or user account is registered, and what᾿s put in the first post, page, comment, comment author, and comment URL.') . '

    ' . + '

    ' . __('Upload settings control the size of the uploaded files and the amount of available upload space for each site. You can change the default value for specific sites when you edit a particular site. Allowed file types are also listed (space separated only).') . '

    ' . + '

    ' . __('Checkboxes for media upload buttons set which are shown in the visual editor. If unchecked, a generic upload button is still visible; other media types can still be uploaded if on the allowed file types list.') . '

    ' . + '

    ' . __('Menu setting enables/disables the plugin menus from appearing for non super admins, so that only super admins, not site admins, have access to activate plugins.') . '

    ' . + '

    ' . __('Super admins can no longer be added on the Options screen. You must now go to the list of existing users on Network Admin > Users and click on Username or the Edit action link below that name. This goes to an Edit User page where you can check a box to grant super admin privileges.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Network Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include( '../admin-header.php' ); + +if (isset($_GET['updated'])) { + ?> +

    + + +
    + +

    +
    + +

    + + + + + + + + + + +
    + +
    + +
    + +
    + support@%s is recommended.' ), $current_site->domain ); ?> +
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + NOBLOGREDIRECT in wp-config.php to a URL you will redirect visitors to if they visit a non-existent site.' ); + ?> +
    + +
    + +
    + " size="45" /> +
    + +
    + + +
    + +
    + +
    + +
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    +

    + + + + + + + + + + + + + + + + + + + + + +

    +
    +
    +
    +
    ' ); ?>
    + + +

    + + + + + +
    + +
    + + +

    + + + + + + + + + + +
    +
    + + diff --git a/src/wp-admin/network/setup.php b/src/wp-admin/network/setup.php new file mode 100644 index 0000000..e5d5880 --- /dev/null +++ b/src/wp-admin/network/setup.php @@ -0,0 +1,16 @@ +' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '

    ' . + '

    ' . __('Info - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '

    ' . + '

    ' . __('Users - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '

    ' . + '

    ' . sprintf( __('Themes - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. To enable a theme for the entire network, see the Network Themes screen.' ), network_admin_url( 'themes.php' ) ) . '

    ' . + '

    ' . __('Settings - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Site Management') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; + +if ( ! $id ) + wp_die( __('Invalid site ID.') ); + +$details = get_blog_details( $id ); +if ( !can_edit_network( $details->site_id ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + +$is_main_site = is_main_site( $id ); + +if ( isset($_REQUEST['action']) && 'update-site' == $_REQUEST['action'] ) { + check_admin_referer( 'edit-site' ); + + switch_to_blog( $id ); + + if ( isset( $_POST['update_home_url'] ) && $_POST['update_home_url'] == 'update' ) { + $blog_address = get_blogaddress_by_domain( $_POST['blog']['domain'], $_POST['blog']['path'] ); + if ( get_option( 'siteurl' ) != $blog_address ) + update_option( 'siteurl', $blog_address ); + + if ( get_option( 'home' ) != $blog_address ) + update_option( 'home', $blog_address ); + } + + // rewrite rules can't be flushed during switch to blog + delete_option( 'rewrite_rules' ); + + // update blogs table + $blog_data = stripslashes_deep( $_POST['blog'] ); + $existing_details = get_blog_details( $id, false ); + $blog_data_checkboxes = array( 'public', 'archived', 'spam', 'mature', 'deleted' ); + foreach ( $blog_data_checkboxes as $c ) { + if ( ! in_array( $existing_details->$c, array( 0, 1 ) ) ) + $blog_data[ $c ] = $existing_details->$c; + else + $blog_data[ $c ] = isset( $_POST['blog'][ $c ] ) ? 1 : 0; + } + update_blog_details( $id, $blog_data ); + + restore_current_blog(); + wp_redirect( add_query_arg( array( 'update' => 'updated', 'id' => $id ), 'site-info.php') ); + exit; +} + +if ( isset($_GET['update']) ) { + $messages = array(); + if ( 'updated' == $_GET['update'] ) + $messages[] = __('Site info updated.'); +} + +$site_url_no_http = preg_replace( '#^http(s)?://#', '', get_blogaddress_by_id( $id ) ); +$title_site_url_linked = sprintf( __('Edit Site: %2$s'), get_blogaddress_by_id( $id ), $site_url_no_http ); +$title = sprintf( __('Edit Site: %s'), $site_url_no_http ); + +$parent_file = 'sites.php'; +$submenu_file = 'sites.php'; + +require('../admin-header.php'); + +?> + +
    + +

    + +

    ' . $msg . '

    '; +} ?> +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + __( 'Public' ) ); + if ( ! $is_main_site ) { + $attribute_fields['archived'] = __( 'Archived' ); + $attribute_fields['spam'] = _x( 'Spam', 'site' ); + $attribute_fields['deleted'] = __( 'Deleted' ); + } + $attribute_fields['mature'] = __( 'Mature' ); + ?> + + + + +
    domain ) ?>
    path ) ?> +
    /> siteurl and home as well.' ); ?>
    + $field_label ) : ?> +
    + +
    + +
    + +
    +' . __('This screen is for Super Admins to add new sites to the network. This is not affected by the registration settings.') . '

    ' . + '

    ' . __('If the admin email for the new site does not exist in the database, a new user will also be created.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Site Management') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +if ( isset($_REQUEST['action']) && 'add-site' == $_REQUEST['action'] ) { + check_admin_referer( 'add-blog', '_wpnonce_add-blog' ); + + if ( ! current_user_can( 'manage_sites' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + if ( ! is_array( $_POST['blog'] ) ) + wp_die( __( 'Can’t create an empty site.' ) ); + $blog = $_POST['blog']; + $domain = ''; + if ( ! preg_match( '/(--)/', $blog['domain'] ) && preg_match( '|^([a-zA-Z0-9-])+$|', $blog['domain'] ) ) + $domain = strtolower( $blog['domain'] ); + + // If not a subdomain install, make sure the domain isn't a reserved word + if ( ! is_subdomain_install() ) { + $subdirectory_reserved_names = apply_filters( 'subdirectory_reserved_names', array( 'page', 'comments', 'blog', 'files', 'feed' ) ); + if ( in_array( $domain, $subdirectory_reserved_names ) ) + wp_die( sprintf( __('The following words are reserved for use by WordPress functions and cannot be used as blog names: %s' ), implode( ', ', $subdirectory_reserved_names ) ) ); + } + + $email = sanitize_email( $blog['email'] ); + $title = $blog['title']; + + if ( empty( $domain ) ) + wp_die( __( 'Missing or invalid site address.' ) ); + if ( empty( $email ) ) + wp_die( __( 'Missing email address.' ) ); + if ( !is_email( $email ) ) + wp_die( __( 'Invalid email address.' ) ); + + if ( is_subdomain_install() ) { + $newdomain = $domain . '.' . preg_replace( '|^www\.|', '', $current_site->domain ); + $path = $base; + } else { + $newdomain = $current_site->domain; + $path = $base . $domain . '/'; + } + + $password = 'N/A'; + $user_id = email_exists($email); + if ( !$user_id ) { // Create a new user with a random password + $password = wp_generate_password( 12, false ); + $user_id = wpmu_create_user( $domain, $password, $email ); + if ( false == $user_id ) + wp_die( __( 'There was an error creating the user.' ) ); + else + wp_new_user_notification( $user_id, $password ); + } + + $wpdb->hide_errors(); + $id = wpmu_create_blog( $newdomain, $path, $title, $user_id , array( 'public' => 1 ), $current_site->id ); + $wpdb->show_errors(); + if ( !is_wp_error( $id ) ) { + if ( !is_super_admin( $user_id ) && !get_user_option( 'primary_blog', $user_id ) ) + update_user_option( $user_id, 'primary_blog', $id, true ); + $content_mail = sprintf( __( "New site created by %1s\n\nAddress: http://%2s\nName: %3s"), $current_user->user_login , $newdomain . $path, stripslashes( $title ) ); + wp_mail( get_site_option('admin_email'), sprintf( __( '[%s] New Site Created' ), $current_site->site_name ), $content_mail, 'From: "Site Admin" <' . get_site_option( 'admin_email' ) . '>' ); + wpmu_welcome_notification( $id, $user_id, $password, $title, array( 'public' => 1 ) ); + wp_redirect( add_query_arg( array('update' => 'added'), 'site-new.php' ) ); + exit; + } else { + wp_die( $id->get_error_message() ); + } +} + +if ( isset($_GET['update']) ) { + $messages = array(); + if ( 'added' == $_GET['update'] ) + $messages[] = __('Site added.'); +} + +$title = __('Add New Site'); +$parent_file = 'sites.php'; + +require('../admin-header.php'); + +?> + +
    + +

    +

    ' . $msg . '

    '; +} ?> +
    + + + + + + + + + + + + + + + + + +
    + + .domain );?> + domain . $current_site->path ?> + ' . __( 'Only the characters a-z and 0-9 recommended.' ) . '

    '; + ?> +

    + +
    +
    + diff --git a/src/wp-admin/network/site-settings.php b/src/wp-admin/network/site-settings.php new file mode 100644 index 0000000..35bcb43 --- /dev/null +++ b/src/wp-admin/network/site-settings.php @@ -0,0 +1,153 @@ +' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '

    ' . + '

    ' . __('Info - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '

    ' . + '

    ' . __('Users - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '

    ' . + '

    ' . sprintf( __('Themes - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. To enable a theme for the entire network, see the Network Themes screen.' ), network_admin_url( 'themes.php' ) ) . '

    ' . + '

    ' . __('Settings - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Site Management') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; + +if ( ! $id ) + wp_die( __('Invalid site ID.') ); + +$details = get_blog_details( $id ); +if ( !can_edit_network( $details->site_id ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + +$is_main_site = is_main_site( $id ); + +if ( isset($_REQUEST['action']) && 'update-site' == $_REQUEST['action'] && is_array( $_POST['option'] ) ) { + check_admin_referer( 'edit-site' ); + + switch_to_blog( $id ); + + $c = 1; + $count = count( $_POST['option'] ); + $skip_options = array( 'allowedthemes' ); // Don't update these options since they are handled elsewhere in the form. + foreach ( (array) $_POST['option'] as $key => $val ) { + if ( $key === 0 || is_array( $val ) || in_array($key, $skip_options) ) + continue; // Avoids "0 is a protected WP option and may not be modified" error when edit blog options + if ( $c == $count ) + update_option( $key, stripslashes( $val ) ); + else + update_option( $key, stripslashes( $val ), false ); // no need to refresh blog details yet + $c++; + } + + do_action( 'wpmu_update_blog_options' ); + restore_current_blog(); + wp_redirect( add_query_arg( array( 'update' => 'updated', 'id' => $id ), 'site-settings.php') ); + exit; +} + +if ( isset($_GET['update']) ) { + $messages = array(); + if ( 'updated' == $_GET['update'] ) + $messages[] = __('Site options updated.'); +} + +$site_url_no_http = preg_replace( '#^http(s)?://#', '', get_blogaddress_by_id( $id ) ); +$title_site_url_linked = sprintf( __('Edit Site: %2$s'), get_blogaddress_by_id( $id ), $site_url_no_http ); +$title = sprintf( __('Edit Site: %s'), $site_url_no_http ); + +$parent_file = 'sites.php'; +$submenu_file = 'sites.php'; + +require('../admin-header.php'); + +?> + +
    + +

    + +

    ' . $msg . '

    '; +} ?> +
    + + + + get_blog_prefix( $id ); + $options = $wpdb->get_results( "SELECT * FROM {$blog_prefix}options WHERE option_name NOT LIKE '\_%' AND option_name NOT LIKE '%user_roles'" ); + foreach ( $options as $option ) { + if ( $option->option_name == 'default_role' ) + $editblog_default_role = $option->option_value; + $disabled = false; + $class = 'all-options'; + if ( is_serialized( $option->option_value ) ) { + if ( is_serialized_string( $option->option_value ) ) { + $option->option_value = esc_html( maybe_unserialize( $option->option_value ), 'single' ); + } else { + $option->option_value = 'SERIALIZED DATA'; + $disabled = true; + $class = 'all-options disabled'; + } + } + if ( strpos( $option->option_value, "\n" ) !== false ) { + ?> + + + + + + + + option_name, array( 'siteurl', 'home' ) ) ) { ?> + + + + + + +
    option_name ) ) ?>
    option_name ) ) ); ?>option_value ) ?> />
    + +
    + +
    +' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '

    ' . + '

    ' . __('Info - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '

    ' . + '

    ' . __('Users - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '

    ' . + '

    ' . sprintf( __('Themes - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. To enable a theme for the entire network, see the Network Themes screen.' ), network_admin_url( 'themes.php' ) ) . '

    ' . + '

    ' . __('Settings - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Site Management') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +$wp_list_table = _get_list_table('WP_MS_Themes_List_Table'); + +$action = $wp_list_table->current_action(); + +$s = isset($_REQUEST['s']) ? $_REQUEST['s'] : ''; + +// Clean up request URI from temporary args for screen options/paging uri's to work as expected. +$temp_args = array( 'enabled', 'disabled', 'error' ); +$_SERVER['REQUEST_URI'] = remove_query_arg( $temp_args, $_SERVER['REQUEST_URI'] ); +$referer = remove_query_arg( $temp_args, wp_get_referer() ); + +$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; + +if ( ! $id ) + wp_die( __('Invalid site ID.') ); + +$wp_list_table->prepare_items(); + +$details = get_blog_details( $id ); +if ( !can_edit_network( $details->site_id ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + +$is_main_site = is_main_site( $id ); + +if ( $action ) { + switch_to_blog( $id ); + $allowed_themes = get_option( 'allowedthemes' ); + + switch ( $action ) { + case 'enable': + check_admin_referer( 'enable-theme_' . $_GET['theme'] ); + $theme = $_GET['theme']; + $action = 'enabled'; + $n = 1; + if ( !$allowed_themes ) + $allowed_themes = array( $theme => true ); + else + $allowed_themes[$theme] = true; + break; + case 'disable': + check_admin_referer( 'disable-theme_' . $_GET['theme'] ); + $theme = $_GET['theme']; + $action = 'disabled'; + $n = 1; + if ( !$allowed_themes ) + $allowed_themes = array(); + else + unset( $allowed_themes[$theme] ); + break; + case 'enable-selected': + check_admin_referer( 'bulk-themes' ); + if ( isset( $_POST['checked'] ) ) { + $themes = (array) $_POST['checked']; + $action = 'enabled'; + $n = count( $themes ); + foreach( (array) $themes as $theme ) + $allowed_themes[ $theme ] = true; + } else { + $action = 'error'; + $n = 'none'; + } + break; + case 'disable-selected': + check_admin_referer( 'bulk-themes' ); + if ( isset( $_POST['checked'] ) ) { + $themes = (array) $_POST['checked']; + $action = 'disabled'; + $n = count( $themes ); + foreach( (array) $themes as $theme ) + unset( $allowed_themes[ $theme ] ); + } else { + $action = 'error'; + $n = 'none'; + } + break; + } + + update_option( 'allowedthemes', $allowed_themes ); + restore_current_blog(); + + wp_redirect( add_query_arg( $action, $n, $referer ) ); + exit; +} + +if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) { + wp_redirect( $referer ); + exit(); +} + +add_thickbox(); +add_screen_option( 'per_page', array( 'label' => _x( 'Themes', 'themes per page (screen options)' ) ) ); + +$site_url_no_http = preg_replace( '#^http(s)?://#', '', get_blogaddress_by_id( $id ) ); +$title_site_url_linked = sprintf( __('Edit Site: %2$s'), get_blogaddress_by_id( $id ), $site_url_no_http ); +$title = sprintf( __('Edit Site: %s'), $site_url_no_http ); + +$parent_file = 'sites.php'; +$submenu_file = 'sites.php'; + +require('../admin-header.php'); ?> + +
    + +

    +

    ' . sprintf( _n( 'Theme enabled.', '%s themes enabled.', $_GET['enabled'] ), number_format_i18n( $_GET['enabled'] ) ) . '

    '; +} elseif ( isset( $_GET['disabled'] ) ) { + $_GET['disabled'] = absint( $_GET['disabled'] ); + echo '

    ' . sprintf( _n( 'Theme disabled.', '%s themes disabled.', $_GET['disabled'] ), number_format_i18n( $_GET['disabled'] ) ) . '

    '; +} elseif ( isset( $_GET['error'] ) && 'none' == $_GET['error'] ) { + echo '

    ' . __( 'No theme selected.' ) . '

    '; +} ?> + +

    + +
    +search_box( __( 'Search Installed Themes' ), 'theme' ); ?> + +
    + +views(); ?> + +
    + + + +display(); ?> + +
    + + + diff --git a/src/wp-admin/network/site-users.php b/src/wp-admin/network/site-users.php new file mode 100644 index 0000000..82788af --- /dev/null +++ b/src/wp-admin/network/site-users.php @@ -0,0 +1,311 @@ +prepare_items(); + +$action = $wp_list_table->current_action(); + +add_contextual_help($current_screen, + '

    ' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '

    ' . + '

    ' . __('Info - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '

    ' . + '

    ' . __('Users - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '

    ' . + '

    ' . sprintf( __('Themes - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. To enable a theme for the entire network, see the Network Themes screen.' ), network_admin_url( 'themes.php' ) ) . '

    ' . + '

    ' . __('Settings - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Site Management') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; + +if ( ! $id ) + wp_die( __('Invalid site ID.') ); + +$details = get_blog_details( $id ); +if ( !can_edit_network( $details->site_id ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + +$is_main_site = is_main_site( $id ); + +// get blog prefix +$blog_prefix = $wpdb->get_blog_prefix( $id ); + +// @todo This is a hack. Eventually, add API to WP_Roles allowing retrieval of roles for a particular blog. +if ( ! empty($wp_roles->use_db) ) { + $editblog_roles = get_blog_option( $id, "{$blog_prefix}user_roles" ); +} else { + // Roles are stored in memory, not the DB. + $editblog_roles = $wp_roles->roles; +} +$default_role = get_blog_option( $id, 'default_role' ); + +$action = $wp_list_table->current_action(); + +if ( $action ) { + switch_to_blog( $id ); + + switch ( $action ) { + case 'newuser': + check_admin_referer( 'add-user', '_wpnonce_add-new-user' ); + $user = $_POST['user']; + if ( !is_array( $_POST['user'] ) || empty( $user['username'] ) || empty( $user['email'] ) ) { + $update = 'err_new'; + } else { + $password = wp_generate_password( 12, false); + $user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) ); + + if ( false == $user_id ) { + $update = 'err_new_dup'; + } else { + wp_new_user_notification( $user_id, $password ); + add_user_to_blog( $id, $user_id, $_POST['new_role'] ); + $update = 'newuser'; + } + } + break; + + case 'adduser': + check_admin_referer( 'add-user', '_wpnonce_add-user' ); + if ( !empty( $_POST['newuser'] ) ) { + $update = 'adduser'; + $newuser = $_POST['newuser']; + $userid = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM " . $wpdb->users . " WHERE user_login = %s", $newuser ) ); + if ( $userid ) { + $user = $wpdb->get_var( "SELECT user_id FROM " . $wpdb->usermeta . " WHERE user_id='$userid' AND meta_key='{$blog_prefix}capabilities'" ); + if ( $user == false ) + add_user_to_blog( $id, $userid, $_POST['new_role'] ); + else + $update = 'err_add_member'; + } else { + $update = 'err_add_notfound'; + } + } else { + $update = 'err_add_notfound'; + } + break; + + case 'remove': + if ( !current_user_can('remove_users') ) + die(__('You can’t remove users.')); + check_admin_referer( 'bulk-users' ); + + $update = 'remove'; + if ( isset( $_REQUEST['users'] ) ) { + $userids = $_REQUEST['users']; + + foreach ( $userids as $user_id ) { + $user_id = (int) $user_id; + remove_user_from_blog( $user_id, $id ); + } + } elseif ( isset( $_GET['user'] ) ) { + remove_user_from_blog( $_GET['user'] ); + } else { + $update = 'err_remove'; + } + break; + + case 'promote': + check_admin_referer( 'bulk-users' ); + $editable_roles = get_editable_roles(); + if ( empty( $editable_roles[$_REQUEST['new_role']] ) ) + wp_die(__('You can’t give users that role.')); + + if ( isset( $_REQUEST['users'] ) ) { + $userids = $_REQUEST['users']; + $update = 'promote'; + foreach ( $userids as $user_id ) { + $user_id = (int) $user_id; + + // If the user doesn't already belong to the blog, bail. + if ( !is_user_member_of_blog( $user_id ) ) + wp_die(__('Cheatin’ uh?')); + + $user = new WP_User( $user_id ); + $user->set_role( $_REQUEST['new_role'] ); + } + } else { + $update = 'err_promote'; + } + break; + } + + restore_current_blog(); + wp_redirect( add_query_arg( 'update', $update, wp_get_referer() ) ); + exit(); +} + +if ( isset( $_GET['action'] ) && 'update-site' == $_GET['action'] ) { + wp_redirect( wp_get_referer() ); + exit(); +} + +add_screen_option( 'per_page', array( 'label' => _x( 'Users', 'users per page (screen options)' ) ) ); + +$site_url_no_http = preg_replace( '#^http(s)?://#', '', get_blogaddress_by_id( $id ) ); +$title_site_url_linked = sprintf( __('Edit Site: %2$s'), get_blogaddress_by_id( $id ), $site_url_no_http ); +$title = sprintf( __('Edit Site: %s'), $site_url_no_http ); + +$parent_file = 'sites.php'; +$submenu_file = 'sites.php'; + +require('../admin-header.php'); ?> + +
    + +

    +

    ' . __( 'User added.' ) . '

    '; + break; + case 'err_add_member': + echo '

    ' . __( 'User is already a member of this site.' ) . '

    '; + break; + case 'err_add_notfound': + echo '

    ' . __( 'Enter the username of an existing user.' ) . '

    '; + break; + case 'promote': + echo '

    ' . __( 'Changed roles.' ) . '

    '; + break; + case 'err_promote': + echo '

    ' . __( 'Select a user to change role.' ) . '

    '; + break; + case 'remove': + echo '

    ' . __( 'User removed from this site.' ) . '

    '; + break; + case 'err_remove': + echo '

    ' . __( 'Select a user to remove.' ) . '

    '; + break; + case 'newuser': + echo '

    ' . __( 'User created.' ) . '

    '; + break; + case 'err_new': + echo '

    ' . __( 'Enter the username and email.' ) . '

    '; + break; + case 'err_new_dup': + echo '

    ' . __( 'Duplicated username or email address.' ) . '

    '; + break; + } +endif; ?> + +
    +search_box( __( 'Search Users' ), 'user' ); ?> + +
    + +views(); ?> + +
    + + + +display(); ?> + +
    + + + + +

    + +

    + +

    + +
    +
    + + + + + + + + + + + +
    + + 'submit-add-existing-user' ) ); ?> +
    + + + +
    +
    + + + + + + + + + + + + + + + + + + +
    + + 'submit-add-user' ) ); ?> +
    + + +get_pagenum(); + +$title = __( 'Sites' ); +$parent_file = 'sites.php'; + +add_screen_option( 'per_page', array('label' => _x( 'Sites', 'sites per page (screen options)' )) ); + +add_contextual_help($current_screen, + '

    ' . __('Add New takes you to the Add New Site screen. You can search for a site by Name, ID number, or IP address. Screen Options allows you to choose how many sites to display on one page.') . '

    ' . + '

    ' . __('This is the main table of all sites on this network. Switch between list and excerpt views by using the icons above the right side of the table.') . '

    ' . + '

    ' . __('Hovering over each site reveals seven options (three for the primary site):') . '

    ' . + '
    • ' . __('An Edit link to a separate Edit Site screen.') . '
    • ' . + '
    • ' . __('Dashboard leads to the Dashboard for that site.') . '
    • ' . + '
    • ' . __('Deactivate, Archive, and Spam which lead to confirmation screens. These actions can be reversed later.') . '
    • ' . + '
    • ' . __('Delete which is a permanent action after the confirmation screens.') . '
    • ' . + '
    • ' . __('Visit to go to the frontend site live.') . '
    ' . + '

    ' . __('The site ID is used internally, and is not shown on the front end of the site or to users/viewers.') . '

    ' . + '

    ' . __('Clicking on bold headings can re-sort this table.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Site Management') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +$id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; + +$msg = ''; +if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty( $_REQUEST['action'] ) ) { + switch ( $_REQUEST['action'] ) { + case 'all_notspam': + $msg = __( 'Sites removed from spam.' ); + break; + case 'all_spam': + $msg = __( 'Sites marked as spam.' ); + break; + case 'all_delete': + $msg = __( 'Sites deleted.' ); + break; + case 'delete': + $msg = __( 'Site deleted.' ); + break; + case 'not_deleted': + $msg = __( 'You do not have permission to delete that site.' ); + break; + case 'archive': + $msg = __( 'Site archived.' ); + break; + case 'unarchive': + $msg = __( 'Site unarchived.' ); + break; + case 'activate': + $msg = __( 'Site activated.' ); + break; + case 'deactivate': + $msg = __( 'Site deactivated.' ); + break; + case 'unspam': + $msg = __( 'Site removed from spam.' ); + break; + case 'spam': + $msg = __( 'Site marked as spam.' ); + break; + default: + $msg = apply_filters( 'network_sites_updated_message_' . $_REQUEST['action'] , __( 'Settings saved.' ) ); + break; + } + if ( $msg ) + $msg = '

    ' . $msg . '

    '; +} + +$wp_list_table->prepare_items(); + +require_once( '../admin-header.php' ); +?> + +
    + +

    + + + + + +' . __( 'Search results for “%s”' ) . '', esc_html( $s ) ); +} ?> +

    + + + +
    + display(); ?> +
    +
    + diff --git a/src/wp-admin/network/theme-editor.php b/src/wp-admin/network/theme-editor.php new file mode 100644 index 0000000..f6ac9c2 --- /dev/null +++ b/src/wp-admin/network/theme-editor.php @@ -0,0 +1,16 @@ +get_pagenum(); + +$action = $wp_list_table->current_action(); + +$s = isset($_REQUEST['s']) ? $_REQUEST['s'] : ''; + +// Clean up request URI from temporary args for screen options/paging uri's to work as expected. +$temp_args = array( 'enabled', 'disabled', 'deleted', 'error' ); +$_SERVER['REQUEST_URI'] = remove_query_arg( $temp_args, $_SERVER['REQUEST_URI'] ); +$referer = remove_query_arg( $temp_args, wp_get_referer() ); + +if ( $action ) { + $allowed_themes = get_site_option( 'allowedthemes' ); + switch ( $action ) { + case 'enable': + check_admin_referer('enable-theme_' . $_GET['theme']); + $allowed_themes[ $_GET['theme'] ] = true; + update_site_option( 'allowedthemes', $allowed_themes ); + wp_redirect( add_query_arg( 'enabled', '1', $referer ) ); + exit; + break; + case 'disable': + check_admin_referer('disable-theme_' . $_GET['theme']); + unset( $allowed_themes[ $_GET['theme'] ] ); + update_site_option( 'allowedthemes', $allowed_themes ); + wp_redirect( add_query_arg( 'disabled', '1', $referer ) ); + exit; + break; + case 'enable-selected': + check_admin_referer('bulk-themes'); + $themes = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array(); + if ( empty($themes) ) { + wp_redirect( add_query_arg( 'error', 'none', $referer ) ); + exit; + } + foreach( (array) $themes as $theme ) + $allowed_themes[ $theme ] = true; + update_site_option( 'allowedthemes', $allowed_themes ); + wp_redirect( add_query_arg( 'enabled', count( $themes ), $referer ) ); + exit; + break; + case 'disable-selected': + check_admin_referer('bulk-themes'); + $themes = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array(); + if ( empty($themes) ) { + wp_redirect( add_query_arg( 'error', 'none', $referer ) ); + exit; + } + foreach( (array) $themes as $theme ) + unset( $allowed_themes[ $theme ] ); + update_site_option( 'allowedthemes', $allowed_themes ); + wp_redirect( add_query_arg( 'disabled', count( $themes ), $referer ) ); + exit; + break; + case 'delete-selected': + if ( ! current_user_can( 'delete_themes' ) ) + wp_die( __('You do not have sufficient permissions to delete themes for this site.') ); + check_admin_referer( 'bulk-themes' ); + + $themes = isset( $_REQUEST['checked'] ) ? (array) $_REQUEST['checked'] : array(); + + if ( isset( $themes[ get_option( 'template' ) ] ) ) + unset( $themes[ get_option( 'template' ) ] ); + if ( isset( $themes[ get_option( 'stylesheet' ) ] ) ) + unset( $themes[ get_option( 'stylesheet' ) ] ); + + if ( empty( $themes ) ) { + wp_redirect( add_query_arg( 'error', 'none', $referer ) ); + exit; + } + + $main_theme = get_current_theme(); + $files_to_delete = $theme_info = array(); + foreach ( $themes as $key => $theme ) { + $data = get_theme_data( WP_CONTENT_DIR . '/themes/' . $theme . '/style.css' ); + if ( $data['Name'] == $main_theme ) { + unset( $themes[$key] ); + } else { + $files_to_delete = array_merge( $files_to_delete, list_files( WP_CONTENT_DIR . "/themes/$theme" ) ); + $theme_info[ $theme ] = $data; + } + } + + if ( empty( $themes ) ) { + wp_redirect( add_query_arg( 'error', 'main', $referer ) ); + exit; + } + + include(ABSPATH . 'wp-admin/update.php'); + + $parent_file = 'themes.php'; + + if ( ! isset( $_REQUEST['verify-delete'] ) ) { + wp_enqueue_script( 'jquery' ); + require_once( ABSPATH . 'wp-admin/admin-header.php' ); + ?> +
    + ' . _n( 'Delete Theme', 'Delete Themes', $themes_to_delete ) . ''; + ?> +

    +

    +
      + ', sprintf( __('%1$s by %2$s' ), esc_html( $theme['Name'] ), esc_html( $theme['AuthorName'] ) ), ''; /* translators: 1: theme name, 2: theme author */ ?> +
    +

    +
    + + + '; + ?> + + +
    +
    + +
    + +

    + +
    + 1), $_SERVER['REQUEST_URI'] ) ) ); + $paged = ( $_REQUEST['paged'] ) ? $_REQUEST['paged'] : 1; + wp_redirect( network_admin_url( "themes.php?deleted=".count( $themes )."&paged=$paged&s=$s" ) ); + exit; + break; + } +} + +$wp_list_table->prepare_items(); + +add_thickbox(); + +add_screen_option( 'per_page', array('label' => _x( 'Themes', 'themes per page (screen options)' )) ); + +add_contextual_help($current_screen, + '

    ' . __('This screen enables and disables the inclusion of themes available to choose in the Appearance menu for each site. It does not activate or deactivate which theme a site is currently using.') . '

    ' . + '

    ' . __('If the network admin disables a theme that is in use, it can still remain selected on that site. If another theme is chosen, the disabled theme will not appear in the site’s Appearance > Themes screen.') . '

    ' . + '

    ' . __('Themes can be enabled on a site by site basis by the network admin on the Edit Site screen (which has a Themes tab); get there via the Edit action link on the All Sites screen. Only network admins are able to install or edit themes.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Network Themes') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +$title = __('Themes'); +$parent_file = 'themes.php'; + +require_once(ABSPATH . 'wp-admin/admin-header.php'); + +?> + +
    + +

    ' . __('Search results for “%s”') . '', esc_html( $s ) ); ?> +

    + +

    ' . sprintf( _n( 'Theme enabled.', '%s themes enabled.', $_GET['enabled'] ), number_format_i18n( $_GET['enabled'] ) ) . '

    '; +} elseif ( isset( $_GET['disabled'] ) ) { + $_GET['disabled'] = absint( $_GET['disabled'] ); + echo '

    ' . sprintf( _n( 'Theme disabled.', '%s themes disabled.', $_GET['disabled'] ), number_format_i18n( $_GET['disabled'] ) ) . '

    '; +} elseif ( isset( $_GET['deleted'] ) ) { + $_GET['deleted'] = absint( $_GET['deleted'] ); + echo '

    ' . sprintf( _nx( 'Theme deleted.', '%s themes deleted.', $_GET['deleted'], 'network' ), number_format_i18n( $_GET['deleted'] ) ) . '

    '; +} elseif ( isset( $_GET['error'] ) && 'none' == $_GET['error'] ) { + echo '

    ' . __( 'No theme selected.' ) . '

    '; +} elseif ( isset( $_GET['error'] ) && 'main' == $_GET['error'] ) { + echo '

    ' . __( 'You cannot delete a theme while it is active on the main site.' ) . '

    '; +} + +?> + +
    +search_box( __( 'Search Installed Themes' ), 'theme' ); ?> +
    + +views(); ?> + +
    + + + +display(); ?> +
    + + + +' . __('Only use this screen once you have updated to a new version of WordPress through Updates/Available Updates (via the Network Administration navigation menu or the Admin Bar). Clicking the Update Network button will step through each site in the network, five at a time, and make sure any database updates are applied.') . '

    ' . + '

    ' . __('If a version update to core has not happened, clicking this button won’t affect anything.') . '

    ' . + '

    ' . __('If this process fails for any reason, users logging in to their sites will force the same update.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Update Network') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +require_once('../admin-header.php'); + +if ( ! current_user_can( 'manage_network' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + +echo '
    '; +screen_icon('tools'); +echo '

    ' . __( 'Update Network' ) . '

    '; + +$action = isset($_GET['action']) ? $_GET['action'] : 'show'; + +switch ( $action ) { + case "upgrade": + $n = ( isset($_GET['n']) ) ? intval($_GET['n']) : 0; + + if ( $n < 5 ) { + global $wp_db_version; + update_site_option( 'wpmu_upgrade_site', $wp_db_version ); + } + + $blogs = $wpdb->get_results( "SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' AND spam = '0' AND deleted = '0' AND archived = '0' ORDER BY registered DESC LIMIT {$n}, 5", ARRAY_A ); + if ( empty( $blogs ) ) { + echo '

    ' . __( 'All done!' ) . '

    '; + break; + } + echo "
      "; + foreach ( (array) $blogs as $details ) { + $siteurl = get_blog_option( $details['blog_id'], 'siteurl' ); + echo "
    • $siteurl
    • "; + $response = wp_remote_get( trailingslashit( $siteurl ) . "wp-admin/upgrade.php?step=upgrade_db", array( 'timeout' => 120, 'httpversion' => '1.1' ) ); + if ( is_wp_error( $response ) ) + wp_die( sprintf( __( 'Warning! Problem updating %1$s. Your server may not be able to connect to sites running on it. Error message: %2$s' ), $siteurl, $response->get_error_message() ) ); + do_action( 'after_mu_upgrade', $response ); + do_action( 'wpmu_upgrade_site', $details[ 'blog_id' ] ); + } + echo "
    "; + ?>

    +

    +

    +
    + + diff --git a/src/wp-admin/network/user-edit.php b/src/wp-admin/network/user-edit.php new file mode 100644 index 0000000..0b2cfd2 --- /dev/null +++ b/src/wp-admin/network/user-edit.php @@ -0,0 +1,16 @@ +' . __('Add User will set up a new user account on the network and send that person an email with username and password.') . '

    ' . + '

    ' . __('Users who are signed up to the network without a site are added as subscribers to the main or primary dashboard site, giving them profile pages to manage their accounts. These users will only see Dashboard and My Sites in the main navigation until a site is created for them.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Network Users') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +if ( isset($_REQUEST['action']) && 'add-user' == $_REQUEST['action'] ) { + check_admin_referer( 'add-user', '_wpnonce_add-user' ); + if ( ! current_user_can( 'manage_network_users' ) ) + wp_die( __( 'You do not have permission to access this page.' ) ); + + if ( ! is_array( $_POST['user'] ) ) + wp_die( __( 'Cannot create an empty user.' ) ); + + $user = $_POST['user']; + + $user_details = wpmu_validate_user_signup( $user['username'], $user['email'] ); + if ( is_wp_error( $user_details[ 'errors' ] ) && ! empty( $user_details[ 'errors' ]->errors ) ) { + $add_user_errors = $user_details[ 'errors' ]; + } else { + $password = wp_generate_password( 12, false); + $user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) ); + + if ( ! $user_id ) { + $add_user_errors = new WP_Error( 'add_user_fail', __( 'Cannot add user.' ) ); + } else { + wp_new_user_notification( $user_id, $password ); + wp_redirect( add_query_arg( array('update' => 'added'), 'user-new.php' ) ); + exit; + } + } +} + +if ( isset($_GET['update']) ) { + $messages = array(); + if ( 'added' == $_GET['update'] ) + $messages[] = __('User added.'); +} + +$title = __('Add New User'); +$parent_file = 'users.php'; + +require('../admin-header.php'); ?> + +
    + +

    +

    ' . $msg . '

    '; +} + +if ( isset( $add_user_errors ) && is_wp_error( $add_user_errors ) ) { ?> +
    + get_error_messages() as $message ) + echo "

    $message

    "; + ?> +
    + +
    + + + + + + + + + + + + +
    + + +
    + + diff --git a/src/wp-admin/network/users.php b/src/wp-admin/network/users.php new file mode 100644 index 0000000..44a6c9c --- /dev/null +++ b/src/wp-admin/network/users.php @@ -0,0 +1,96 @@ +get_pagenum(); +$wp_list_table->prepare_items(); +$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); + +if ( $pagenum > $total_pages && $total_pages > 0 ) { + wp_redirect( add_query_arg( 'paged', $total_pages ) ); + exit; +} +$title = __( 'Users' ); +$parent_file = 'users.php'; + +add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) ); + +add_contextual_help($current_screen, + '

    ' . __('This table shows all users across the network and the sites to which they are assigned.') . '

    ' . + '

    ' . __('Hover over any user on the list to make the edit links appear. The Edit link on the left will take you to his or her Edit User profile page; the Edit link on the right by any site name goes to an Edit Site screen for that site.') . '

    ' . + '

    ' . __('You can also go to the user’s profile page by clicking on the individual username.') . '

    ' . + '

    ' . __('You can sort the table by clicking on any of the bold headings and switch between list and excerpt views by using the icons in the upper right.') . '

    ' . + '

    ' . __('The bulk action will permanently delete selected users, or mark/unmark those selected as spam. Spam users will have posts removed and will be unable to sign up again with the same email addresses.') . '

    ' . + '

    ' . __('You can make an existing user an additional super admin by going to the Edit User profile page and checking the box to grant that privilege.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Network Users') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +require_once( '../admin-header.php' ); + +if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty( $_REQUEST['action'] ) ) { + ?> +

    + +

    + +
    + +

    + ' . __( 'Search results for “%s”' ) . '', esc_html( $usersearch ) ); + ?> +

    + + views(); ?> + +
    + search_box( __( 'Search Users' ), 'user' ); ?> +
    + +
    + display(); ?> +
    +
    + + diff --git a/src/wp-admin/options-discussion.php b/src/wp-admin/options-discussion.php new file mode 100644 index 0000000..862b002 --- /dev/null +++ b/src/wp-admin/options-discussion.php @@ -0,0 +1,248 @@ +' . __('This screen provides many options for controlling the management and display of comments and links to your posts/pages. So many, in fact, they won’t all fit here! :) Use the documentation link below to get information on what each discussion setting does.') . '

    ' . + '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Discussion Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include('./admin-header.php'); +?> + +
    + +

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    +

    + +

    +

    + +

    +
    +

    +

    + +

    +
    + +

    + +

    + + + + + + + + + + + + + + + + + +
    + __( 'Don’t show Avatars' ), 1 => __( 'Show Avatars' ) ); + foreach ( $yesorno as $key => $value) { + $selected = (get_option('show_avatars') == $key) ? 'checked="checked"' : ''; + echo "\n\t
    "; + } +?> +
    + + __('G — Suitable for all audiences'), + /* translators: Content suitability rating: http://bit.ly/89QxZA */ + 'PG' => __('PG — Possibly offensive, usually for audiences 13 and above'), + /* translators: Content suitability rating: http://bit.ly/89QxZA */ + 'R' => __('R — Intended for adult audiences above 17'), + /* translators: Content suitability rating: http://bit.ly/89QxZA */ + 'X' => __('X — Even more mature than above') +); +foreach ($ratings as $key => $rating) : + $selected = (get_option('avatar_rating') == $key) ? 'checked="checked"' : ''; + echo "\n\t
    "; +endforeach; +?> + +
    + +
    + + __('Mystery Man'), + 'blank' => __('Blank'), + 'gravatar_default' => __('Gravatar Logo'), + 'identicon' => __('Identicon (Generated)'), + 'wavatar' => __('Wavatar (Generated)'), + 'monsterid' => __('MonsterID (Generated)'), + 'retro' => __('Retro (Generated)') +); +$avatar_defaults = apply_filters('avatar_defaults', $avatar_defaults); +$default = get_option('avatar_default'); +if ( empty($default) ) + $default = 'mystery'; +$size = 32; +$avatar_list = ''; +foreach ( $avatar_defaults as $default_key => $default_name ) { + $selected = ($default == $default_key) ? 'checked="checked" ' : ''; + $avatar_list .= "\n\t'; + $avatar_list .= '
    '; +} +echo apply_filters('default_avatar_select', $avatar_list); +?> + +
    + + + + +
    +
    + + diff --git a/src/wp-admin/options-general.php b/src/wp-admin/options-general.php new file mode 100644 index 0000000..3f8a7b7 --- /dev/null +++ b/src/wp-admin/options-general.php @@ -0,0 +1,318 @@ + + +' . __('The fields on this screen determine some of the basics of your site setup.') . '

    ' . + '

    ' . __('Most themes display the site title at the top of every page, in the title bar of the browser, and as the identifying name for syndicated feeds. The tagline is also displayed by many themes.') . '

    ' . + '

    ' . __('The WordPress URL and the Site URL can be the same (example.com) or different; for example, having the WordPress core files (example.com/wordpress) in a subdirectory instead of the root directory.') . '

    ' . + '

    ' . __('If you want site visitors to be able to register themselves, as opposed to being registered by the site administrator, check the membership box. A default user role can be set for all new users, whether self-registered or registered by the site administrator.') . '

    ' . + '

    ' . __('UTC means Coordinated Universal Time.') . '

    ' . + '

    ' . __('Remember to click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on General Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include('./admin-header.php'); +?> + +
    + +

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    class="regular-text code" />
    class="regular-text code" /> +to be different from the directory you installed WordPress.'); ?>
    +
    +
    + +
    +The new address will not become active until confirmed.') ?> + +
    +

    %1$s. Cancel'), esc_html( $new_admin_email ), esc_url( admin_url( 'options.php?dismiss=new_admin_email' ) ) ); ?>

    +
    + +
    + + + + UTC time is %s'), date_i18n($timezone_format, false, 'gmt')); ?> + + %1$s'), date_i18n($timezone_format)); ?> + +
    + + +
    + + +
    + $right_now ) { + $found = true; + break; + } + } + + if ( $found ) { + echo ' '; + $message = $tr['isdst'] ? + __('Daylight saving time begins on: %s.') : + __('Standard time begins on: %s.'); + // Add the difference between the current offset and the new offset to ts to get the correct transition time from date_i18n(). + printf( $message, date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $tr['ts'] + ($tz_offset - $tr['offset']) ) ); + } else { + _e('This timezone does not observe daylight saving time.'); + } + } + // Set back to UTC. + date_default_timezone_set('UTC'); + ?> +
    + +
    +
    + ' . date_i18n( $format ) . "
    \n"; + } + + echo ' ' . date_i18n( get_option('date_format') ) . " \n"; + + echo "\t

    " . __('Documentation on date and time formatting.') . "

    \n"; +?> +
    +
    +
    + ' . date_i18n( $format ) . "
    \n"; + } + + echo ' ' . date_i18n( get_option('time_format') ) . " \n"; + ; +?> +
    +
    + +
    + + + + +
    + +
    + + diff --git a/src/wp-admin/options-head.php b/src/wp-admin/options-head.php new file mode 100644 index 0000000..7f2cc74 --- /dev/null +++ b/src/wp-admin/options-head.php @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/src/wp-admin/options-media.php b/src/wp-admin/options-media.php new file mode 100644 index 0000000..6e3a29c --- /dev/null +++ b/src/wp-admin/options-media.php @@ -0,0 +1,141 @@ +' . __('You can set maximum sizes for images inserted into your written content; you can also insert an image as Full Size.') . '

    ' . + '

    ' . __('The Embed option allows you embed a video, image, or other media content into your content automatically by typing the URL (of the web page where the file lives) on its own line when you create your content.') . '

    ' . + ( is_multisite() ? '' : '

    ' . __('Uploading Options gives you folder and path choices for storing your files in your installation’s directory.') . '

    ' ) . + '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Media Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include('./admin-header.php'); + +?> + +
    + +

    + +
    + + +

    +

    + + + + + + + + + + + + + + + + + + +
    + + + +
    +/> + +
    + + + + +
    + + + + +
    + +

    + + + + + + + + + + + + + + +
    + +
    + + + + +' . __("If the width value is left blank, embeds will default to the max width of your theme."); ?> +
    + + +

    + + + + + + + + + + + + + + + + +
    +wp-content/uploads'); ?> +
    + +
    + +
    + + + + + + +
    + +
    + + diff --git a/src/wp-admin/options-permalink.php b/src/wp-admin/options-permalink.php new file mode 100644 index 0000000..50aa32e --- /dev/null +++ b/src/wp-admin/options-permalink.php @@ -0,0 +1,260 @@ +' . __('This screen provides some common options for your default permalinks URL structure.') . '

    ' . + '

    ' . __('If you pick an option other than Default, your general URL path with structure tags, terms surrounded by %, will also appear in the custom structure field and your path can be further modified there.') . '

    ' . + '

    ' . __('When you assign multiple categories or tags to a post, only one can show up in the permalink: the lowest numbered category. This applies if your custom structure includes %category% or %tag%.') . '

    ' . + '

    ' . __('Note that permalinks beginning with the category, tag, author or postname structure tags require more advanced server resources. Double-check your hosting details to make sure those are in place or start your permalinks with other structure tags.') . '

    ' . + '

    ' . __('The Optional fields let you customize the “category” and “tag” base names that will appear in archive URLs. For example, the page listing all posts in the “Uncategorized” category could be /topics/uncategorized instead of /category/uncategorized.') . '

    ' . + '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Permalinks Settings') . '

    ' . + '

    ' . __('Documentation on Using Permalinks') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +/** + * Display JavaScript on the page. + * + * @package WordPress + * @subpackage Permalink_Settings_Screen + */ +function add_js() { + ?> + +set_permalink_structure( $permalink_structure ); + } + + if ( isset( $_POST['category_base'] ) ) { + $category_base = $_POST['category_base']; + if ( ! empty( $category_base ) ) + $category_base = $blog_prefix . preg_replace('#/+#', '/', '/' . str_replace( '#', '', $category_base ) ); + $wp_rewrite->set_category_base( $category_base ); + } + + if ( isset( $_POST['tag_base'] ) ) { + $tag_base = $_POST['tag_base']; + if ( ! empty( $tag_base ) ) + $tag_base = $blog_prefix . preg_replace('#/+#', '/', '/' . str_replace( '#', '', $tag_base ) ); + $wp_rewrite->set_tag_base( $tag_base ); + } + + create_initial_taxonomies(); +} + +$permalink_structure = get_option('permalink_structure'); +$category_base = get_option('category_base'); +$tag_base = get_option( 'tag_base' ); + +if ( $iis7_permalinks ) { + if ( ( ! file_exists($home_path . 'web.config') && win_is_writable($home_path) ) || win_is_writable($home_path . 'web.config') ) + $writable = true; + else + $writable = false; +} else { + if ( ( ! file_exists($home_path . '.htaccess') && is_writable($home_path) ) || is_writable($home_path . '.htaccess') ) + $writable = true; + else + $writable = false; +} + +if ( $wp_rewrite->using_index_permalinks() ) + $usingpi = true; +else + $usingpi = false; + +$wp_rewrite->flush_rules(); + + +if (isset($_POST['submit'])) : ?> +

    +

    + + +
    + +

    + +
    + + +

    URLs which have question marks and lots of numbers in them, however WordPress offers you the ability to create a custom URL structure for your permalinks and archives. This can improve the aesthetics, usability, and forward-compatibility of your links. A number of tags are available, and here are some examples to get you started.'); ?>

    + + +

    + + + + + + + + + + + + + + + + + + + + + +
    /?p=123
    /archives/123
    + + + + +
    + +

    + +

    URLs here. For example, using topics as your category base would make your category links like http://example.org/topics/uncategorized/. If you leave these blank the defaults will be used.') ?>

    + +

    URLs here. For example, using topics as your category base would make your category links like http://example.org/index.php/topics/uncategorized/. If you leave these blank the defaults will be used.') ?>

    + + + + + + + + + + + + +
    + + + + +
    + + +

    web.config file were writable, we could do this automatically, but it isn’t so this is the url rewrite rule you should have in your web.config file. Click in the field and press CTRL + a to select all. Then insert this rule inside of the /<configuration>/<system.webServer>/<rewrite>/<rules> element in web.config file.') ?>

    +
    + +

    +
    +

    web.config file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved.') ?>

    + +

    writable, we could do this automatically, but it isn’t so this is the url rewrite rule you should have in your web.config file. Create a new file, called web.config in the root directory of your site. Click in the field and press CTRL + a to select all. Then insert this code into the web.config file.') ?>

    +
    + +

    +
    +

    web.config file automatically, do not forget to revert the permissions after the file has been created.') ?>

    + + + +

    .htaccess file were writable, we could do this automatically, but it isn’t so these are the mod_rewrite rules you should have in your .htaccess file. Click in the field and press CTRL + a to select all.') ?>

    +
    + +

    +
    + + + + +
    + + diff --git a/src/wp-admin/options-privacy.php b/src/wp-admin/options-privacy.php new file mode 100644 index 0000000..9fd25bc --- /dev/null +++ b/src/wp-admin/options-privacy.php @@ -0,0 +1,58 @@ +' . __('You can choose whether or not your site will be crawled by robots, ping services, and spiders. If you want those services to ignore your site, click the second option here. Note that your privacy is not complete; your site is still visible on the web.') . '

    ' . + '

    ' . __('When this setting is in effect a reminder is shown in the Right Now box of the Dashboard that says, “Search Engines Blocked,” to remind you that your site is not being crawled.') . '

    ' . + '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Privacy Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include('./admin-header.php'); +?> + +
    + +

    + +
    + + + + + + + + +
    + /> +
    + /> + + +
    + + + + +
    + +
    + + diff --git a/src/wp-admin/options-reading.php b/src/wp-admin/options-reading.php new file mode 100644 index 0000000..08c408e --- /dev/null +++ b/src/wp-admin/options-reading.php @@ -0,0 +1,131 @@ + + +' . __('This screen contains the settings that affect the display of your content.') . '

    ' . + '

    ' . sprintf(__('You can choose what’s displayed on the front page of your site. It can be posts in reverse chronological order (classic blog), or a fixed/static page. To set a static home page, you first need to create two Pages. One will become the front page, and the other will be where your posts are displayed.'), 'post-new.php?post_type=page') . '

    ' . + '

    ' . __('You can also control the display of your content in RSS feeds, including the maximum numbers of posts to display, whether to show full text or a summary, and the character set encoding.') . '

    ' . + '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Reading Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include( './admin-header.php' ); +?> + +
    + +

    + +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    +

    +

    +

    +

    +
      +
    • +
    • +
    + +

    Warning: these pages should not be the same!' ); ?>

    + +
    + +
    +


    +

    +
    +character encoding of your site (UTF-8 is recommended, if you are adventurous there are some other encodings)' ); ?>
    + + + + +
    +
    + diff --git a/src/wp-admin/options-writing.php b/src/wp-admin/options-writing.php new file mode 100644 index 0000000..115e143 --- /dev/null +++ b/src/wp-admin/options-writing.php @@ -0,0 +1,176 @@ +' . __('You can submit content in several different ways; this screen holds the settings for all of them. The top section controls the editor within these administration screens, while the rest control external publishing methods. For more information on any of these methods, use the documentation links below.') . '

    ' . + '

    ' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Writing Settings') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include('./admin-header.php'); +?> + +
    + +

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    + 0, 'name' => 'default_category', 'orderby' => 'name', 'selected' => get_option('default_category'), 'hierarchical' => true)); +?> +
    + +
    + 0, 'name' => 'default_link_category', 'orderby' => 'name', 'selected' => get_option('default_link_category'), 'hierarchical' => true, 'taxonomy' => 'link_category')); +?> +
    + + +

    +

    +

    +

    +

    + + + +

    +

    %s, %s, %s.'), wp_generate_password(8, false), wp_generate_password(8, false), wp_generate_password(8, false)) ?>

    + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    + 0, 'name' => 'default_email_category', 'orderby' => 'name', 'selected' => get_option('default_email_category'), 'hierarchical' => true)); +?> +
    + + +

    +

    + + + + + + + + + + +
    +
    +
    +
    +
    + + +

    + + + +

    + + + + + +

    Update Services because of your site’s privacy settings.'), 'options-privacy.php'); ?>

    + + + + + + + +
    +
    + + diff --git a/src/wp-admin/options.php b/src/wp-admin/options.php new file mode 100644 index 0000000..069dcb9 --- /dev/null +++ b/src/wp-admin/options.php @@ -0,0 +1,227 @@ + array( 'blogname', 'blogdescription', 'gmt_offset', 'date_format', 'time_format', 'start_of_week', 'timezone_string' ), + 'discussion' => array( 'default_pingback_flag', 'default_ping_status', 'default_comment_status', 'comments_notify', 'moderation_notify', 'comment_moderation', 'require_name_email', 'comment_whitelist', 'comment_max_links', 'moderation_keys', 'blacklist_keys', 'show_avatars', 'avatar_rating', 'avatar_default', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page', 'default_comments_page', 'comment_order', 'comment_registration' ), + 'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type', 'embed_autourls', 'embed_size_w', 'embed_size_h' ), + 'privacy' => array( 'blog_public' ), + 'reading' => array( 'posts_per_page', 'posts_per_rss', 'rss_use_excerpt', 'blog_charset', 'show_on_front', 'page_on_front', 'page_for_posts' ), + 'writing' => array( 'default_post_edit_rows', 'use_smilies', 'default_category', 'default_email_category', 'use_balanceTags', 'default_link_category', 'default_post_format', 'enable_app', 'enable_xmlrpc' ), + 'options' => array( '' ) ); + +$mail_options = array('mailserver_url', 'mailserver_port', 'mailserver_login', 'mailserver_pass'); +$uploads_options = array('uploads_use_yearmonth_folders', 'upload_path', 'upload_url_path'); + +if ( !is_multisite() ) { + if ( !defined( 'WP_SITEURL' ) ) + $whitelist_options['general'][] = 'siteurl'; + if ( !defined( 'WP_HOME' ) ) + $whitelist_options['general'][] = 'home'; + + $whitelist_options['general'][] = 'admin_email'; + $whitelist_options['general'][] = 'users_can_register'; + $whitelist_options['general'][] = 'default_role'; + + $whitelist_options['writing'] = array_merge($whitelist_options['writing'], $mail_options); + $whitelist_options['writing'][] = 'ping_sites'; + + $whitelist_options['media'] = array_merge($whitelist_options['media'], $uploads_options); +} else { + $whitelist_options['general'][] = 'new_admin_email'; + $whitelist_options['general'][] = 'WPLANG'; + $whitelist_options['general'][] = 'language'; + + if ( apply_filters( 'enable_post_by_email_configuration', true ) ) + $whitelist_options['writing'] = array_merge($whitelist_options['writing'], $mail_options); + + $whitelist_options[ 'misc' ] = array(); +} + +$whitelist_options = apply_filters( 'whitelist_options', $whitelist_options ); + +/* + * If $_GET['action'] == 'update' we are saving settings sent from a settings page + */ +if ( 'update' == $action ) { + if ( 'options' == $option_page && !isset( $_POST['option_page'] ) ) { // This is for back compat and will eventually be removed. + $unregistered = true; + check_admin_referer( 'update-options' ); + } else { + $unregistered = false; + check_admin_referer( $option_page . '-options' ); + } + + if ( !isset( $whitelist_options[ $option_page ] ) ) + wp_die( __( 'Error: options page not found.' ) ); + + if ( 'options' == $option_page ) { + if ( is_multisite() && ! is_super_admin() ) + wp_die( __( 'You do not have sufficient permissions to modify unregistered settings for this site.' ) ); + $options = explode( ',', stripslashes( $_POST[ 'page_options' ] ) ); + } else { + $options = $whitelist_options[ $option_page ]; + } + + // Handle custom date/time formats + if ( 'general' == $option_page ) { + if ( !empty($_POST['date_format']) && isset($_POST['date_format_custom']) && '\c\u\s\t\o\m' == stripslashes( $_POST['date_format'] ) ) + $_POST['date_format'] = $_POST['date_format_custom']; + if ( !empty($_POST['time_format']) && isset($_POST['time_format_custom']) && '\c\u\s\t\o\m' == stripslashes( $_POST['time_format'] ) ) + $_POST['time_format'] = $_POST['time_format_custom']; + // Map UTC+- timezones to gmt_offsets and set timezone_string to empty. + if ( !empty($_POST['timezone_string']) && preg_match('/^UTC[+-]/', $_POST['timezone_string']) ) { + $_POST['gmt_offset'] = $_POST['timezone_string']; + $_POST['gmt_offset'] = preg_replace('/UTC\+?/', '', $_POST['gmt_offset']); + $_POST['timezone_string'] = ''; + } + } + + if ( $options ) { + foreach ( $options as $option ) { + if ( $unregistered ) + _deprecated_argument( 'options.php', '2.7', sprintf( __( 'The %1$s setting is unregistered. Unregistered settings are deprecated. See http://codex.wordpress.org/Settings_API' ), $option, $option_page ) ); + + $option = trim($option); + $value = null; + if ( isset($_POST[$option]) ) + $value = $_POST[$option]; + if ( !is_array($value) ) + $value = trim($value); + $value = stripslashes_deep($value); + update_option($option, $value); + } + } + + /** + * Handle settings errors and return to options page + */ + // If no settings errors were registered add a general 'updated' message. + if ( !count( get_settings_errors() ) ) + add_settings_error('general', 'settings_updated', __('Settings saved.'), 'updated'); + set_transient('settings_errors', get_settings_errors(), 30); + + /** + * Redirect back to the settings page that was submitted + */ + $goback = add_query_arg( 'settings-updated', 'true', wp_get_referer() ); + wp_redirect( $goback ); + exit; +} + +include('./admin-header.php'); ?> + +
    + +

    +
    + + + + +get_results( "SELECT * FROM $wpdb->options ORDER BY option_name" ); + +foreach ( (array) $options as $option ) : + $disabled = false; + if ( $option->option_name == '' ) + continue; + if ( is_serialized( $option->option_value ) ) { + if ( is_serialized_string( $option->option_value ) ) { + // this is a serialized string, so we should display it + $value = maybe_unserialize( $option->option_value ); + $options_to_update[] = $option->option_name; + $class = 'all-options'; + } else { + $value = 'SERIALIZED DATA'; + $disabled = true; + $class = 'all-options disabled'; + } + } else { + $value = $option->option_value; + $options_to_update[] = $option->option_name; + $class = 'all-options'; + } + $name = esc_attr( $option->option_name ); + echo " + + + +"; +endforeach; +?> +
    "; + if ( strpos( $value, "\n" ) !== false ) + echo ""; + else + echo ""; + echo "
    + + + + + +
    +
    + + + diff --git a/src/wp-admin/plugin-editor.php b/src/wp-admin/plugin-editor.php new file mode 100644 index 0000000..2c710df --- /dev/null +++ b/src/wp-admin/plugin-editor.php @@ -0,0 +1,264 @@ + time()) + (array)get_option('recently_activated')); + + wp_redirect(add_query_arg('_wpnonce', wp_create_nonce('edit-plugin-test_' . $file), "plugin-editor.php?file=$file&liveupdate=1&scrollto=$scrollto&networkwide=" . $network_wide)); + exit; + } + wp_redirect( self_admin_url("plugin-editor.php?file=$file&a=te&scrollto=$scrollto") ); + } else { + wp_redirect( self_admin_url("plugin-editor.php?file=$file&scrollto=$scrollto") ); + } + exit; + +break; + +default: + + if ( isset($_GET['liveupdate']) ) { + check_admin_referer('edit-plugin-test_' . $file); + + $error = validate_plugin($file); + if ( is_wp_error($error) ) + wp_die( $error ); + + if ( ( ! empty( $_GET['networkwide'] ) && ! is_plugin_active_for_network($file) ) || ! is_plugin_active($file) ) + activate_plugin($file, "plugin-editor.php?file=$file&phperror=1", ! empty( $_GET['networkwide'] ) ); // we'll override this later if the plugin can be included without fatal error + + wp_redirect( self_admin_url("plugin-editor.php?file=$file&a=te&scrollto=$scrollto") ); + exit; + } + + // List of allowable extensions + $editable_extensions = array('php', 'txt', 'text', 'js', 'css', 'html', 'htm', 'xml', 'inc', 'include'); + $editable_extensions = (array) apply_filters('editable_extensions', $editable_extensions); + + if ( ! is_file($real_file) ) { + wp_die(sprintf('

    %s

    ', __('No such file exists! Double check the name and try again.'))); + } else { + // Get the extension of the file + if ( preg_match('/\.([^.]+)$/', $real_file, $matches) ) { + $ext = strtolower($matches[1]); + // If extension is not in the acceptable list, skip it + if ( !in_array( $ext, $editable_extensions) ) + wp_die(sprintf('

    %s

    ', __('Files of this type are not editable.'))); + } + } + + add_contextual_help($current_screen, + '

    ' . __('You can use the editor to make changes to any of your plugins’ individual PHP files. Be aware that if you make changes, plugins updates will overwrite your customizations.') . '

    ' . + '

    ' . __('Choose a plugin to edit from the menu in the upper right and click the Select button. Click once on any file name to load it in the editor, and make your changes. Don’t forget to save your changes (Update File) when you’re finished.') . '

    ' . + '

    ' . __('The Documentation menu below the editor lists the PHP functions recognized in the plugin file. Clicking Lookup takes you to a web page about that particular function.') . '

    ' . + '

    ' . __('If you want to make changes but don’t want them to be overwritten when the plugin is updated, you may be ready to think about writing your own plugin. For information on how to edit plugins, write your own from scratch, or just better understand their anatomy, check out the links below.') . '

    ' . + ( is_network_admin() ? '

    ' . __('Any edits to files from this screen will be reflected on all sites in the network.') . '

    ' : '' ) . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Editing Plugins') . '

    ' . + '

    ' . __('Documentation on Writing Plugins') . '

    ' . + '

    ' . __('Support Forums') . '

    ' + ); + + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + update_recently_edited(WP_PLUGIN_DIR . '/' . $file); + + $content = file_get_contents( $real_file ); + + if ( '.php' == substr( $real_file, strrpos( $real_file, '.' ) ) ) { + $functions = wp_doc_link_parse( $content ); + + if ( !empty($functions) ) { + $docs_select = ''; + } + } + + $content = esc_textarea( $content ); + ?> + +

    + +

    fatal error.') ?>

    + + + +
    + +
    + +

    + +
    +
    +%s (active)'), $file); + else + echo sprintf(__('Browsing %s (active)'), $file); + } else { + if ( is_writeable($real_file) ) + echo sprintf(__('Editing %s (inactive)'), $file); + else + echo sprintf(__('Browsing %s (inactive)'), $file); + } + ?> +
    +
    +
    + + + +
    +
    +
    +
    + +
    +

    + +
      + + > + +
    +
    +
    + +
    + + + + +
    + +
    + + + +

    Warning: Making changes to active plugins is not recommended. If your changes cause a fatal error, the plugin will be automatically deactivated.'); ?>

    + +

    + "; + submit_button( __( 'Update File and Attempt to Reactivate' ), 'primary', 'submit', false, array( 'tabindex' => '2' ) ); + } else { + submit_button( __( 'Update File' ), 'primary', 'submit', false, array( 'tabindex' => '2' ) ); + } + ?> +

    + +

    the Codex for more information.'); ?>

    + +
    +
    +
    + +get_pagenum(); +$wp_list_table->prepare_items(); + +$title = __('Install Plugins'); +$parent_file = 'plugins.php'; + +wp_enqueue_style( 'plugin-install' ); +wp_enqueue_script( 'plugin-install' ); +if ( 'plugin-information' != $tab ) + add_thickbox(); + +$body_id = $tab; + +do_action('install_plugins_pre_' . $tab); //Used to override the general interface, Eg, install or plugin information. + +add_contextual_help($current_screen, + '

    ' . sprintf(__('Plugins hook into WordPress to extend its functionality with custom features. Plugins are developed independently from WordPress core by thousands of developers all over the world. All plugins in the official WordPress.org Plugin Directory are compatible with the license WordPress uses. You can find new plugins to install by searching or browsing the Directory right here in your own Plugins section.'), 'http://wordpress.org/extend/plugins/') . '

    ' . + '

    ' . __('If you know what you’re looking for, Search is your best bet. The Search screen has options to search the WordPress.org Plugin Directory for a particular Term, Author, or Tag. You can also search the directory by selecting a popular tags. Tags in larger type mean more plugins have been labeled with that tag.') . '

    ' . + '

    ' . __('If you just want to get an idea of what’s available, you can browse Featured, Popular, Newest, and Recently Updated plugins by using the links in the upper left of the screen. These sections rotate regularly.') . '

    ' . + '

    ' . __('If you want to install a plugin that you’ve downloaded elsewhere, click Upload in the upper left. You will be prompted to upload the .zip package, and once uploaded, you can activate the new plugin.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Installing Plugins') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +include(ABSPATH . 'wp-admin/admin-header.php'); +?> +
    + +

    + +views(); ?> + +
    + +
    +get_pagenum(); + +$action = $wp_list_table->current_action(); + +$plugin = isset($_REQUEST['plugin']) ? $_REQUEST['plugin'] : ''; +$s = isset($_REQUEST['s']) ? $_REQUEST['s'] : ''; + +// Clean up request URI from temporary args for screen options/paging uri's to work as expected. +$_SERVER['REQUEST_URI'] = remove_query_arg(array('error', 'deleted', 'activate', 'activate-multi', 'deactivate', 'deactivate-multi', '_error_nonce'), $_SERVER['REQUEST_URI']); + +if ( $action ) { + $network_wide = false; + if ( ( isset( $_GET['networkwide'] ) || 'network-activate-selected' == $action ) && is_multisite() && current_user_can( 'manage_network_plugins' ) ) + $network_wide = true; + + switch ( $action ) { + case 'activate': + if ( ! current_user_can('activate_plugins') ) + wp_die(__('You do not have sufficient permissions to activate plugins for this site.')); + + check_admin_referer('activate-plugin_' . $plugin); + + $result = activate_plugin($plugin, self_admin_url('plugins.php?error=true&plugin=' . $plugin), $network_wide); + if ( is_wp_error( $result ) ) { + if ( 'unexpected_output' == $result->get_error_code() ) { + $redirect = self_admin_url('plugins.php?error=true&charsout=' . strlen($result->get_error_data()) . '&plugin=' . $plugin . "&plugin_status=$status&paged=$page&s=$s"); + wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect)); + exit; + } else { + wp_die($result); + } + } + + $recent = (array)get_option('recently_activated'); + if ( isset($recent[ $plugin ]) ) { + unset($recent[ $plugin ]); + update_option('recently_activated', $recent); + } + if ( isset($_GET['from']) && 'import' == $_GET['from'] ) { + wp_redirect( self_admin_url("import.php?import=" . str_replace('-importer', '', dirname($plugin))) ); // overrides the ?error=true one above and redirects to the Imports page, stripping the -importer suffix + } else { + wp_redirect( self_admin_url("plugins.php?activate=true&plugin_status=$status&paged=$page&s=$s") ); // overrides the ?error=true one above + } + exit; + break; + case 'activate-selected': + case 'network-activate-selected': + if ( ! current_user_can('activate_plugins') ) + wp_die(__('You do not have sufficient permissions to activate plugins for this site.')); + + check_admin_referer('bulk-plugins'); + + $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array(); + + // Only activate plugins which are not already active. + $check = $network_wide ? 'is_plugin_active_for_network' : 'is_plugin_active'; + foreach ( $plugins as $i => $plugin ) + if ( $check( $plugin ) ) + unset( $plugins[ $i ] ); + + if ( empty($plugins) ) { + wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") ); + exit; + } + + activate_plugins($plugins, self_admin_url('plugins.php?error=true'), $network_wide); + + $recent = (array)get_option('recently_activated'); + foreach ( $plugins as $plugin => $time) + if ( isset($recent[ $plugin ]) ) + unset($recent[ $plugin ]); + + update_option('recently_activated', $recent); + + wp_redirect( self_admin_url("plugins.php?activate-multi=true&plugin_status=$status&paged=$page&s=$s") ); + exit; + break; + case 'update-selected' : + + check_admin_referer( 'bulk-plugins' ); + + if ( isset( $_GET['plugins'] ) ) + $plugins = explode( ',', $_GET['plugins'] ); + elseif ( isset( $_POST['checked'] ) ) + $plugins = (array) $_POST['checked']; + else + $plugins = array(); + + $title = __( 'Update Plugins' ); + $parent_file = 'plugins.php'; + + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + echo '
    '; + screen_icon(); + echo '

    ' . esc_html( $title ) . '

    '; + + + $url = self_admin_url('update.php?action=update-selected&plugins=' . urlencode( join(',', $plugins) )); + $url = wp_nonce_url($url, 'bulk-update-plugins'); + + echo ""; + echo '
    '; + require_once(ABSPATH . 'wp-admin/admin-footer.php'); + exit; + break; + case 'error_scrape': + if ( ! current_user_can('activate_plugins') ) + wp_die(__('You do not have sufficient permissions to activate plugins for this site.')); + + check_admin_referer('plugin-activation-error_' . $plugin); + + $valid = validate_plugin($plugin); + if ( is_wp_error($valid) ) + wp_die($valid); + + if ( ! WP_DEBUG ) { + error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR ); + } + + @ini_set('display_errors', true); //Ensure that Fatal errors are displayed. + // Go back to "sandbox" scope so we get the same errors as before + function plugin_sandbox_scrape( $plugin ) { + include( WP_PLUGIN_DIR . '/' . $plugin ); + } + plugin_sandbox_scrape( $plugin ); + do_action('activate_' . $plugin); + exit; + break; + case 'deactivate': + if ( ! current_user_can('activate_plugins') ) + wp_die(__('You do not have sufficient permissions to deactivate plugins for this site.')); + + check_admin_referer('deactivate-plugin_' . $plugin); + deactivate_plugins($plugin); + update_option('recently_activated', array($plugin => time()) + (array)get_option('recently_activated')); + if ( headers_sent() ) + echo ""; + else + wp_redirect( self_admin_url("plugins.php?deactivate=true&plugin_status=$status&paged=$page&s=$s") ); + exit; + break; + case 'deactivate-selected': + if ( ! current_user_can('activate_plugins') ) + wp_die(__('You do not have sufficient permissions to deactivate plugins for this site.')); + + check_admin_referer('bulk-plugins'); + + $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array(); + $plugins = array_filter($plugins, 'is_plugin_active'); //Do not deactivate plugins which are already deactivated. + if ( empty($plugins) ) { + wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") ); + exit; + } + + deactivate_plugins($plugins); + + $deactivated = array(); + foreach ( $plugins as $plugin ) + $deactivated[ $plugin ] = time(); + + update_option('recently_activated', $deactivated + (array)get_option('recently_activated')); + wp_redirect( self_admin_url("plugins.php?deactivate-multi=true&plugin_status=$status&paged=$page&s=$s") ); + exit; + break; + case 'delete-selected': + if ( ! current_user_can('delete_plugins') ) + wp_die(__('You do not have sufficient permissions to delete plugins for this site.')); + + check_admin_referer('bulk-plugins'); + + //$_POST = from the plugin form; $_GET = from the FTP details screen. + $plugins = isset( $_REQUEST['checked'] ) ? (array) $_REQUEST['checked'] : array(); + if ( empty( $plugins ) ) { + wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") ); + exit; + } + + $plugins = array_filter($plugins, 'is_plugin_inactive'); // Do not allow to delete Activated plugins. + if ( empty( $plugins ) ) { + wp_redirect( self_admin_url( "plugins.php?error=true&main=true&plugin_status=$status&paged=$page&s=$s" ) ); + exit; + } + + include(ABSPATH . 'wp-admin/update.php'); + + $parent_file = 'plugins.php'; + + if ( ! isset($_REQUEST['verify-delete']) ) { + wp_enqueue_script('jquery'); + require_once(ABSPATH . 'wp-admin/admin-header.php'); + ?> +
    + $data ) { + $plugin_info[ $plugin_file ] = _get_plugin_data_markup_translate( $plugin_file, $data ); + $plugin_info[ $plugin_file ]['is_uninstallable'] = is_uninstallable_plugin( $plugin ); + if ( ! $plugin_info[ $plugin_file ]['Network'] ) + $have_non_network_plugins = true; + } + } + } + } + screen_icon(); + $plugins_to_delete = count( $plugin_info ); + echo '

    ' . _n( 'Delete Plugin', 'Delete Plugins', $plugins_to_delete ) . '

    '; + ?> + +

    + +

    +
      + ', sprintf( __( '%1$s by %2$s (will also delete its data)' ), esc_html($plugin['Name']), esc_html($plugin['AuthorName']) ), ''; + $data_to_delete = true; + } else { + /* translators: 1: plugin name, 2: plugin author */ + echo '
    • ', sprintf( __('%1$s by %2$s' ), esc_html($plugin['Name']), esc_html($plugin['AuthorName']) ), '
    • '; + } + } + ?> +
    +

    +
    + + + '; + ?> + + +
    +
    + +
    + +

    + +
    + prepare_items(); + +wp_enqueue_script('plugin-install'); +add_thickbox(); + +add_screen_option( 'per_page', array('label' => _x( 'Plugins', 'plugins per page (screen options)' )) ); + +add_contextual_help($current_screen, + '

    ' . __('Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.') . '

    ' . + '

    ' . sprintf(__('You can find additional plugins for your site by using the Plugin Browser/Installer functionality or by browsing the WordPress Plugin Directory directly and installing new plugins manually. To manually install a plugin you generally just need to upload the plugin file into your /wp-content/plugins directory. Once a plugin has been installed, you can activate it here.'), 'plugin-install.php', 'http://wordpress.org/extend/plugins/') . '

    ' . + '

    ' . __('Most of the time, plugins play nicely with the core of WordPress and with other plugins. Sometimes, though, a plugin’s code will get in the way of another plugin, causing compatibility issues. If your site starts doing strange things, this may be the problem. Try deactivating all your plugins and re-activating them in various combinations until you isolate which one(s) caused the issue.') . '

    ' . + '

    ' . sprintf( __('If something goes wrong with a plugin and you can’t use WordPress, delete or rename that file in the %s directory and it will be automatically deactivated.'), WP_PLUGIN_DIR) . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Managing Plugins') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +$title = __('Plugins'); +$parent_file = 'plugins.php'; + +require_once(ABSPATH . 'wp-admin/admin-header.php'); + +$invalid = validate_active_plugins(); +if ( !empty($invalid) ) + foreach ( $invalid as $plugin_file => $error ) + echo '

    ' . sprintf(__('The plugin %s has been deactivated due to an error: %s'), esc_html($plugin_file), $error->get_error_message()) . '

    '; +?> + +unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.'), $_GET['charsout']); + else + $errmsg = __('Plugin could not be activated because it triggered a fatal error.'); + ?> +

    + + + +
    + +

    get_error_message() ); ?>

    + +

    deleted.'); ?>

    + + +

    activated.') ?>

    + +

    activated.'); ?>

    + +

    deactivated.') ?>

    + +

    deactivated.'); ?>

    + +

    + + +
    + +

    + +' . __('Search results for “%s”') . '', esc_html( $s ) ); ?> +

    + + + +views(); ?> + +
    + +search_box( __( 'Search Installed Plugins' ), 'plugin' ); ?> + + + + +display(); ?> +
    + +
    + + true ) ) ) ) + $post_type = $_GET['post_type']; +else + wp_die( __('Invalid post type') ); + +if ( 'post' != $post_type ) { + $parent_file = "edit.php?post_type=$post_type"; + $submenu_file = "post-new.php?post_type=$post_type"; +} else { + $parent_file = 'edit.php'; + $submenu_file = 'post-new.php'; +} + +$post_type_object = get_post_type_object($post_type); + +$title = $post_type_object->labels->add_new_item; + +$editing = true; + +if ( ! current_user_can( $post_type_object->cap->edit_posts ) ) + wp_die( __( 'Cheatin’ uh?' ) ); + +wp_enqueue_script('autosave'); + +// Show post form. +$post = get_default_post_to_edit( $post_type, true ); +$post_ID = $post->ID; +include('edit-form-advanced.php'); +include('./admin-footer.php'); +?> diff --git a/src/wp-admin/post.php b/src/wp-admin/post.php new file mode 100644 index 0000000..df9e5a5 --- /dev/null +++ b/src/wp-admin/post.php @@ -0,0 +1,279 @@ +post_type); + if ( $post_type_object ) { + $post_type = $post->post_type; + $current_screen->post_type = $post->post_type; + $current_screen->id = $current_screen->post_type; + } + } +} elseif ( isset($_POST['post_type']) ) { + $post_type_object = get_post_type_object($_POST['post_type']); + if ( $post_type_object ) { + $post_type = $post_type_object->name; + $current_screen->post_type = $post_type; + $current_screen->id = $current_screen->post_type; + } +} + +/** + * Redirect to previous page. + * + * @param int $post_id Optional. Post ID. + */ +function redirect_post($post_id = '') { + if ( isset($_POST['save']) || isset($_POST['publish']) ) { + $status = get_post_status( $post_id ); + + if ( isset( $_POST['publish'] ) ) { + switch ( $status ) { + case 'pending': + $message = 8; + break; + case 'future': + $message = 9; + break; + default: + $message = 6; + } + } else { + $message = 'draft' == $status ? 10 : 1; + } + + $location = add_query_arg( 'message', $message, get_edit_post_link( $post_id, 'url' ) ); + } elseif ( isset($_POST['addmeta']) && $_POST['addmeta'] ) { + $location = add_query_arg( 'message', 2, wp_get_referer() ); + $location = explode('#', $location); + $location = $location[0] . '#postcustom'; + } elseif ( isset($_POST['deletemeta']) && $_POST['deletemeta'] ) { + $location = add_query_arg( 'message', 3, wp_get_referer() ); + $location = explode('#', $location); + $location = $location[0] . '#postcustom'; + } elseif ( 'post-quickpress-save-cont' == $_POST['action'] ) { + $location = "post.php?action=edit&post=$post_id&message=7"; + } else { + $location = add_query_arg( 'message', 4, get_edit_post_link( $post_id, 'url' ) ); + } + + wp_redirect( apply_filters( 'redirect_post_location', $location, $post_id ) ); + exit; +} + +if ( isset( $_POST['deletepost'] ) ) + $action = 'delete'; +elseif ( isset($_POST['wp-preview']) && 'dopreview' == $_POST['wp-preview'] ) + $action = 'preview'; + +$sendback = wp_get_referer(); +if ( strpos($sendback, 'post.php') !== false || strpos($sendback, 'post-new.php') !== false ) { + $sendback = admin_url('edit.php'); + $sendback .= ( !empty( $post_type ) ) ? '?post_type=' . $post_type : ''; +} else { + $sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), $sendback ); +} + +switch($action) { +case 'postajaxpost': +case 'post': +case 'post-quickpress-publish': +case 'post-quickpress-save': + check_admin_referer('add-' . $post_type); + + if ( 'post-quickpress-publish' == $action ) + $_POST['publish'] = 'publish'; // tell write_post() to publish + + if ( 'post-quickpress-publish' == $action || 'post-quickpress-save' == $action ) { + $_POST['comment_status'] = get_option('default_comment_status'); + $_POST['ping_status'] = get_option('default_ping_status'); + } + + if ( !empty( $_POST['quickpress_post_ID'] ) ) { + $_POST['post_ID'] = (int) $_POST['quickpress_post_ID']; + $post_id = edit_post(); + } else { + $post_id = 'postajaxpost' == $action ? edit_post() : write_post(); + } + + if ( 0 === strpos( $action, 'post-quickpress' ) ) { + $_POST['post_ID'] = $post_id; + // output the quickpress dashboard widget + require_once(ABSPATH . 'wp-admin/includes/dashboard.php'); + wp_dashboard_quick_press(); + exit; + } + + redirect_post($post_id); + exit(); + break; + +case 'edit': + $editing = true; + + if ( empty( $post_id ) ) { + wp_redirect( admin_url('post.php') ); + exit(); + } + + $p = $post_id; + + if ( empty($post->ID) ) + wp_die( __('You attempted to edit an item that doesn’t exist. Perhaps it was deleted?') ); + + if ( !current_user_can($post_type_object->cap->edit_post, $post_id) ) + wp_die( __('You are not allowed to edit this item.') ); + + if ( 'trash' == $post->post_status ) + wp_die( __('You can’t edit this item because it is in the Trash. Please restore it and try again.') ); + + if ( null == $post_type_object ) + wp_die( __('Unknown post type.') ); + + $post_type = $post->post_type; + if ( 'post' == $post_type ) { + $parent_file = "edit.php"; + $submenu_file = "edit.php"; + $post_new_file = "post-new.php"; + } else { + if ( isset( $post_type_object ) && $post_type_object->show_in_menu && $post_type_object->show_in_menu !== true ) + $parent_file = $post_type_object->show_in_menu; + else + $parent_file = "edit.php?post_type=$post_type"; + $submenu_file = "edit.php?post_type=$post_type"; + $post_new_file = "post-new.php?post_type=$post_type"; + } + + if ( $last = wp_check_post_lock( $post->ID ) ) { + add_action('admin_notices', '_admin_notice_post_locked' ); + } else { + wp_set_post_lock( $post->ID ); + wp_enqueue_script('autosave'); + } + + $title = $post_type_object->labels->edit_item; + $post = get_post_to_edit($post_id); + + if ( post_type_supports($post_type, 'comments') ) { + wp_enqueue_script('admin-comments'); + enqueue_comment_hotkeys_js(); + } + + include('./edit-form-advanced.php'); + + break; + +case 'editattachment': + check_admin_referer('update-attachment_' . $post_id); + + // Don't let these be changed + unset($_POST['guid']); + $_POST['post_type'] = 'attachment'; + + // Update the thumbnail filename + $newmeta = wp_get_attachment_metadata( $post_id, true ); + $newmeta['thumb'] = $_POST['thumb']; + + wp_update_attachment_metadata( $post_id, $newmeta ); + +case 'editpost': + check_admin_referer('update-' . $post_type . '_' . $post_id); + + $post_id = edit_post(); + + redirect_post($post_id); // Send user on their way while we keep working + + exit(); + break; + +case 'trash': + check_admin_referer('trash-' . $post_type . '_' . $post_id); + + $post = & get_post($post_id); + + if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) + wp_die( __('You are not allowed to move this item to the Trash.') ); + + if ( ! wp_trash_post($post_id) ) + wp_die( __('Error in moving to Trash.') ); + + wp_redirect( add_query_arg( array('trashed' => 1, 'ids' => $post_id), $sendback ) ); + exit(); + break; + +case 'untrash': + check_admin_referer('untrash-' . $post_type . '_' . $post_id); + + if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) + wp_die( __('You are not allowed to move this item out of the Trash.') ); + + if ( ! wp_untrash_post($post_id) ) + wp_die( __('Error in restoring from Trash.') ); + + wp_redirect( add_query_arg('untrashed', 1, $sendback) ); + exit(); + break; + +case 'delete': + check_admin_referer('delete-' . $post_type . '_' . $post_id); + + if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) + wp_die( __('You are not allowed to delete this item.') ); + + $force = !EMPTY_TRASH_DAYS; + if ( $post->post_type == 'attachment' ) { + $force = ( $force || !MEDIA_TRASH ); + if ( ! wp_delete_attachment($post_id, $force) ) + wp_die( __('Error in deleting.') ); + } else { + if ( !wp_delete_post($post_id, $force) ) + wp_die( __('Error in deleting.') ); + } + + wp_redirect( add_query_arg('deleted', 1, $sendback) ); + exit(); + break; + +case 'preview': + check_admin_referer( 'autosave', 'autosavenonce' ); + + $url = post_preview(); + + wp_redirect($url); + exit(); + break; + +default: + wp_redirect( admin_url('edit.php') ); + exit(); + break; +} // end switch +include('./admin-footer.php'); +?> diff --git a/src/wp-admin/press-this.php b/src/wp-admin/press-this.php new file mode 100644 index 0000000..70f1808 --- /dev/null +++ b/src/wp-admin/press-this.php @@ -0,0 +1,652 @@ + $image) { + // see if files exist in content - we don't want to upload non-used selected files. + if ( strpos($_POST['content'], htmlspecialchars($image)) !== false ) { + $desc = isset($_POST['photo_description'][$key]) ? $_POST['photo_description'][$key] : ''; + $upload = media_sideload_image($image, $post_ID, $desc); + + // Replace the POSTED content with correct uploaded ones. Regex contains fix for Magic Quotes + if ( !is_wp_error($upload) ) + $content = preg_replace('/]*)src=\\\?(\"|\')'.preg_quote(htmlspecialchars($image), '/').'\\\?(\2)([^>\/]*)\/*>/is', $upload, $content); + } + } + } + // set the post_content and status + if ( isset( $_POST['publish'] ) && current_user_can( 'publish_posts' ) ) + $quick['post_status'] = 'publish'; + elseif ( isset( $_POST['review'] ) ) + $quick['post_status'] = 'pending'; + else + $quick['post_status'] = 'draft'; + $quick['post_content'] = $content; + // error handling for media_sideload + if ( is_wp_error($upload) ) { + wp_delete_post($post_ID); + wp_die($upload); + } else { + // Post formats + if ( current_theme_supports( 'post-formats' ) && isset( $_POST['post_format'] ) ) { + $post_formats = get_theme_support( 'post-formats' ); + if ( is_array( $post_formats ) ) { + $post_formats = $post_formats[0]; + if ( in_array( $_POST['post_format'], $post_formats ) ) + set_post_format( $post_ID, $_POST['post_format'] ); + elseif ( '0' == $_POST['post_format'] ) + set_post_format( $post_ID, false ); + } + } + + $quick['ID'] = $post_ID; + wp_update_post($quick); + } + return $post_ID; +} + +// For submitted posts. +if ( isset($_REQUEST['action']) && 'post' == $_REQUEST['action'] ) { + check_admin_referer('press-this'); + $post_ID = press_it(); + $posted = $post_ID; +} else { + $post_ID = 0; +} + +// Set Variables +$title = isset( $_GET['t'] ) ? trim( strip_tags( html_entity_decode( stripslashes( $_GET['t'] ) , ENT_QUOTES) ) ) : ''; + +$selection = ''; +if ( !empty($_GET['s']) ) { + $selection = str_replace(''', "'", stripslashes($_GET['s'])); + $selection = trim( htmlspecialchars( html_entity_decode($selection, ENT_QUOTES) ) ); +} + +if ( ! empty($selection) ) { + $selection = preg_replace('/(\r?\n|\r)/', '

    ', $selection); + $selection = '

    ' . str_replace('

    ', '', $selection) . '

    '; +} + +$url = isset($_GET['u']) ? esc_url($_GET['u']) : ''; +$image = isset($_GET['i']) ? $_GET['i'] : ''; + +if ( !empty($_REQUEST['ajax']) ) { + switch ($_REQUEST['ajax']) { + case 'video': ?> + +
    +

    +
    + +

    +
    +
    + + +

    +
    +
    + +
    +
    + +

    + + + <?php echo esc_attr(__('Click to insert.')); ?> + +

    + +

    + + +

    +
    +
    + +
    +
    +

    +
    +
    + +
    +
    + +

    |

    + ]*)src=(\"|\')([^<>\'\"]+)(\2)([^>]*)\/*>/i'; + $content = str_replace(array("\n","\t","\r"), '', $content); + preg_match_all($pattern, $content, $matches); + if ( empty($matches[0]) ) + return ''; + $sources = array(); + foreach ($matches[3] as $src) { + // if no http in url + if (strpos($src, 'http') === false) + // if it doesn't have a relative uri + if ( strpos($src, '../') === false && strpos($src, './') === false && strpos($src, '/') === 0) + $src = 'http://'.str_replace('//','/', $host['host'].'/'.$src); + else + $src = 'http://'.str_replace('//','/', $host['host'].'/'.dirname($host['path']).'/'.$src); + $sources[] = esc_url($src); + } + return "'" . implode("','", $sources) . "'"; + } + $url = wp_kses(urldecode($url), null); + echo 'new Array('.get_images_from_uri($url).')'; + break; + + case 'photo_js': ?> + // gather images and load some default JS + var last = null + var img, img_tag, aspect, w, h, skip, i, strtoappend = ""; + if(photostorage == false) { + var my_src = eval( + jQuery.ajax({ + type: "GET", + url: "", + cache : false, + async : false, + data: "ajax=photo_images&u=", + dataType : "script" + }).responseText + ); + if(my_src.length == 0) { + var my_src = eval( + jQuery.ajax({ + type: "GET", + url: "", + cache : false, + async : false, + data: "ajax=photo_images&u=", + dataType : "script" + }).responseText + ); + if(my_src.length == 0) { + strtoappend = ''; + } + } + } + for (i = 0; i < my_src.length; i++) { + img = new Image(); + img.src = my_src[i]; + img_attr = 'id="img' + i + '"'; + skip = false; + + maybeappend = ''; + + if (img.width && img.height) { + if (img.width >= 30 && img.height >= 30) { + aspect = img.width / img.height; + scale = (aspect > 1) ? (71 / img.width) : (71 / img.height); + + w = img.width; + h = img.height; + + if (scale < 1) { + w = parseInt(img.width * scale); + h = parseInt(img.height * scale); + } + img_attr += ' style="width: ' + w + 'px; height: ' + h + 'px;"'; + strtoappend += maybeappend; + } + } else { + strtoappend += maybeappend; + } + } + + function pick(img, desc) { + if (img) { + if('object' == typeof jQuery('.photolist input') && jQuery('.photolist input').length != 0) length = jQuery('.photolist input').length; + if(length == 0) length = 1; + jQuery('.photolist').append(''); + jQuery('.photolist').append(''); + insert_editor( "\n\n" + encodeURI('

    ' + desc + '

    ')); + } + return false; + } + + function image_selector() { + tb_remove(); + desc = jQuery('#this_photo_description').val(); + src = jQuery('#this_photo').val(); + pick(src, desc); + jQuery('#extra-fields').hide(); + jQuery('#extra-fields').html(''); + return false; + } + jQuery('#extra-fields').html('

    ()

    '); + jQuery('#img_container').html(strtoappend); + + + > + + + <?php _e('Press This') ?> + + + + + + + + + '370' ) ); +} +?> +
    +
    +
    +
    + + + + + + + +
    + +
    +

    +

    +
    +

    + 'save' ) ); + if ( current_user_can('publish_posts') ) { + submit_button( __( 'Publish' ), 'primary', 'publish', false ); + } else { + echo '

    '; + submit_button( __( 'Submit for Review' ), 'primary', 'review', false ); + } ?> + +

    + +

    + +

    + +
    +
    + + +
    +

    +

    +
    +
    + + + + + +
    +
      + 'category', 'popular_cats' => $popular_ids ) ) ?> +
    +
    + + cap->assign_terms) ) : ?> +

    + + cap->edit_terms) ) : ?> +
    +

    + + labels->add_new_item ); ?> + +

    +

    + + + + 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '— ' . $tax->labels->parent_item . ' —', 'tab_index' => 3 ) ); ?> + + + +

    +
    + +
    +
    +
    + +
    +
    +
    +
    +

    +
    +
    +

    + + +

    + + +
    +

    +
    +
    + +
    +
    +
    +
    +
    + + + + +

    | |

    + + +
    +
    + +
    +
    + + + +
    +
    + + + +
    + + +
    + + +<?php _e('Insert an Image'); ?><?php _e('Embed a Video'); ?> +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + + diff --git a/src/wp-admin/profile.php b/src/wp-admin/profile.php new file mode 100644 index 0000000..71a1b04 --- /dev/null +++ b/src/wp-admin/profile.php @@ -0,0 +1,19 @@ + diff --git a/src/wp-admin/revision.php b/src/wp-admin/revision.php new file mode 100644 index 0000000..dd20c12 --- /dev/null +++ b/src/wp-admin/revision.php @@ -0,0 +1,223 @@ +post_parent ) ) + break; + if ( !$post = get_post( $revision->post_parent ) ) + break; + + // Revisions disabled and we're not looking at an autosave + if ( ( ! WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions') ) && !wp_is_post_autosave( $revision ) ) { + $redirect = 'edit.php?post_type=' . $post->post_type; + break; + } + + check_admin_referer( "restore-post_$post->ID|$revision->ID" ); + + wp_restore_post_revision( $revision->ID ); + $redirect = add_query_arg( array( 'message' => 5, 'revision' => $revision->ID ), get_edit_post_link( $post->ID, 'url' ) ); + break; +case 'diff' : + if ( !$left_revision = get_post( $left ) ) + break; + if ( !$right_revision = get_post( $right ) ) + break; + + if ( !current_user_can( 'read_post', $left_revision->ID ) || !current_user_can( 'read_post', $right_revision->ID ) ) + break; + + // If we're comparing a revision to itself, redirect to the 'view' page for that revision or the edit page for that post + if ( $left_revision->ID == $right_revision->ID ) { + $redirect = get_edit_post_link( $left_revision->ID ); + include( './js/revisions-js.php' ); + break; + } + + // Don't allow reverse diffs? + if ( strtotime($right_revision->post_modified_gmt) < strtotime($left_revision->post_modified_gmt) ) { + $redirect = add_query_arg( array( 'left' => $right, 'right' => $left ) ); + break; + } + + if ( $left_revision->ID == $right_revision->post_parent ) // right is a revision of left + $post =& $left_revision; + elseif ( $left_revision->post_parent == $right_revision->ID ) // left is a revision of right + $post =& $right_revision; + elseif ( $left_revision->post_parent == $right_revision->post_parent ) // both are revisions of common parent + $post = get_post( $left_revision->post_parent ); + else + break; // Don't diff two unrelated revisions + + if ( ! WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions') ) { // Revisions disabled + if ( + // we're not looking at an autosave + ( !wp_is_post_autosave( $left_revision ) && !wp_is_post_autosave( $right_revision ) ) + || + // we're not comparing an autosave to the current post + ( $post->ID !== $left_revision->ID && $post->ID !== $right_revision->ID ) + ) { + $redirect = 'edit.php?post_type=' . $post->post_type; + break; + } + } + + if ( + // They're the same + $left_revision->ID == $right_revision->ID + || + // Neither is a revision + ( !wp_get_post_revision( $left_revision->ID ) && !wp_get_post_revision( $right_revision->ID ) ) + ) + break; + + $post_title = '' . get_the_title() . ''; + $h2 = sprintf( __( 'Compare Revisions of “%1$s”' ), $post_title ); + $title = __( 'Revisions' ); + + $left = $left_revision->ID; + $right = $right_revision->ID; + + $redirect = false; + break; +case 'view' : +default : + if ( !$revision = wp_get_post_revision( $revision_id ) ) + break; + if ( !$post = get_post( $revision->post_parent ) ) + break; + + if ( !current_user_can( 'read_post', $revision->ID ) || !current_user_can( 'read_post', $post->ID ) ) + break; + + // Revisions disabled and we're not looking at an autosave + if ( ( ! WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions') ) && !wp_is_post_autosave( $revision ) ) { + $redirect = 'edit.php?post_type=' . $post->post_type; + break; + } + + $post_title = '' . get_the_title() . ''; + $revision_title = wp_post_revision_title( $revision, false ); + $h2 = sprintf( __( 'Revision for “%1$s” created on %2$s' ), $post_title, $revision_title ); + $title = __( 'Revisions' ); + + // Sets up the diff radio buttons + $left = $revision->ID; + $right = $post->ID; + + $redirect = false; + break; +endswitch; + +// Empty post_type means either malformed object found, or no valid parent was found. +if ( !$redirect && empty($post->post_type) ) + $redirect = 'edit.php'; + +if ( !empty($redirect) ) { + wp_redirect( $redirect ); + exit; +} + +// This is so that the correct "Edit" menu item is selected. +if ( !empty($post->post_type) && 'post' != $post->post_type ) + $parent_file = $submenu_file = 'edit.php?post_type=' . $post->post_type; +else + $parent_file = $submenu_file = 'edit.php'; + +require_once( './admin-header.php' ); + +?> + +
    + +

    + + + + + + + + + $field_title ) : + if ( 'diff' == $action ) { + $left_content = apply_filters( "_wp_post_revision_field_$field", $left_revision->$field, $field ); + $right_content = apply_filters( "_wp_post_revision_field_$field", $right_revision->$field, $field ); + if ( !$content = wp_text_diff( $left_content, $right_content ) ) + continue; // There is no difference between left and right + $identical = false; + } else { + add_filter( "_wp_post_revision_field_$field", 'htmlspecialchars' ); + $content = apply_filters( "_wp_post_revision_field_$field", $revision->$field, $field ); + } + ?> + + + + + + + + + + + + +
    + + +

    + +
    + +

    + + 'form-table', 'parent' => true, 'right' => $right, 'left' => $left ); +if ( ! WP_POST_REVISIONS || !post_type_supports($post->post_type, 'revisions') ) + $args['type'] = 'autosave'; + +wp_list_post_revisions( $post, $args ); + +?> + +
    + +El archivo 'wp-config.php' ya existe. Si necesitas reiniciar alguno de los elementos de la configuración de este archivo bórralo primero. Puedes tratar de instalar ahora.

    "); + +// Comprobamos si existe un wp-config.php por encima del directorio raiz pero que no sea parte de otra instalación +if (file_exists(ABSPATH . '../wp-config.php') && ! file_exists(ABSPATH . '../wp-settings.php')) + wp_die("

    El archivo 'wp-config.php' ya existe un nivel por encima de tu instalación de WordPress. Si necesitas reiniciar alguno de los elementos de la configuración de este archivo bórralo primero. Puedes tratar de instalar ahora.

    "); + +if ( version_compare( $required_php_version, phpversion(), '>' ) ) + wp_die( sprintf( /*WP_I18N_OLD_PHP*/'Tu servidor está usando la versión de PHP %1$s pero WordPress requiere al menos la %2$s.'/*/WP_I18N_OLD_PHP*/, phpversion(), $required_php_version ) ); + +if ( !extension_loaded('mysql') && !file_exists(ABSPATH . 'wp-content/db.php') ) + wp_die( /*WP_I18N_OLD_MYSQL*/'Tu instalación de PHP parece que no dispone de la extensión MySQL requerida por WordPress.'/*/WP_I18N_OLD_MYSQL*/ ); + +if (isset($_GET['step'])) + $step = $_GET['step']; +else + $step = 0; + +/** + * Muestra la cabecera de configuración del fichero wp-config.php. + * + * @ignore + * @since 2.3.0 + * @package WordPress + * @subpackage Installer_WP_Config + */ +function display_header() { + header( 'Content-Type: text/html; charset=utf-8' ); +?> + + + + +Archivo de configuración de WordPress + + + + +

    WordPress

    + + +

    Bienvenid@ a WordPress. Antes de empezar necesitamos algo de información de la base de datos. Necesitas conocer la siguiente información antes de seguir.

    +
      +
    1. Nombre de la base de datos
    2. +
    3. Nombre de usuario de la base de datos
    4. +
    5. Contraseña de la base de datos
    6. +
    7. Host de la base de datos
    8. +
    9. Prefijo de tabla (si quieres ejecutar más de un WordPress en una sola base de datos
    10. +
    +

    Si por alguna razón no funciona la creación automática de este archivo no te preocupes. Todo lo que hace es rellenar un fichero de configuración con la información de la base de datos. También puedes simplemente abrir el fichero wp-config-sample.php en un editor de texto, rellenar la información y guardarlo como wp-config.php.

    +

    En la mayoría de las ocasiones esta información te la facilita tu proveedor de alojamiento. Si no tienes esta información tendrás que contactar con ellos antes de poder continuar. Si ya estás listo …

    + +

    ¡Vamos a ello!

    + +
    +

    A continuación deberás introducir los detalles de conexión con tu base de datos. Si no estás seguro de cuales son contacta con tu proveedor de alojamiento.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    El nombre de la base de datos en la que quieres que se ejecute WP.
    Tu nombre de usuario de MySQL
    …y la contraseña de MySQL.
    Si no funciona localhost tendrás que contactar con tu proveedor de alojamiento para que te diga cual es.
    Si quieres ejecutar varias instalaciones de WordPress en una sola base de datos cambia esto.
    + +

    +
    +ERROR: "Prefijo de tabla" solo puede contener números, letras y guión bajo.'/*/WP_I18N_BAD_PREFIX*/ ); + + // Probamos la conexión con la base de datos. + /**#@+ + * @ignore + */ + define('DB_NAME', $dbname); + define('DB_USER', $uname); + define('DB_PASSWORD', $passwrd); + define('DB_HOST', $dbhost); + /**#@-*/ + + // Fallará si los valores son incorrectos. + require_wp_db(); + if ( !empty($wpdb->error) ) + wp_die($wpdb->error->get_error_message()); + + // Carga o generación de las claves y salts. + $no_api = isset( $_POST['noapi'] ); + require_once( ABSPATH . WPINC . '/plugin.php' ); + require_once( ABSPATH . WPINC . '/l10n.php' ); + require_once( ABSPATH . WPINC . '/pomo/translations.php' ); + if ( ! $no_api ) { + require_once( ABSPATH . WPINC . '/class-http.php' ); + require_once( ABSPATH . WPINC . '/http.php' ); + wp_fix_server_vars(); + /**#@+ + * @ignore + */ + function get_bloginfo() { + return ( ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . str_replace( $_SERVER['PHP_SELF'], '/wp-admin/setup-config.php', '' ) ); + } + /**#@-*/ + $secret_keys = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' ); + } + + if ( $no_api || is_wp_error( $secret_keys ) ) { + $secret_keys = array(); + require_once( ABSPATH . WPINC . '/pluggable.php' ); + for ( $i = 0; $i < 8; $i++ ) { + $secret_keys[] = wp_generate_password( 64, true, true ); + } + } else { + $secret_keys = explode( "\n", wp_remote_retrieve_body( $secret_keys ) ); + foreach ( $secret_keys as $k => $v ) { + $secret_keys[$k] = substr( $v, 28, 64 ); + } + } + $key = 0; + + foreach ($configFile as $line_num => $line) { + switch (substr($line,0,16)) { + case "define('DB_NAME'": + $configFile[$line_num] = str_replace("nombredetubasededatos", $dbname, $line); + break; + case "define('DB_USER'": + $configFile[$line_num] = str_replace("'nombredeusuario'", "'$uname'", $line); + break; + case "define('DB_PASSW": + $configFile[$line_num] = str_replace("'contraseña'", "'$passwrd'", $line); + break; + case "define('DB_HOST'": + $configFile[$line_num] = str_replace("localhost", $dbhost, $line); + break; + case '$table_prefix =': + $configFile[$line_num] = str_replace('wp_', $prefix, $line); + break; + case "define('AUTH_KEY": + case "define('SECURE_A": + case "define('LOGGED_I": + case "define('NONCE_KE": + case "define('AUTH_SAL": + case "define('SECURE_A": + case "define('LOGGED_I": + case "define('NONCE_SA": + $configFile[$line_num] = str_replace('pon aquí tu frase aleatoria', $secret_keys[$key++], $line ); + break; + } + } + if ( ! is_writable(ABSPATH) ) : + display_header(); +?> +

    Lo siento pero no se ha podido escribir en el fichero wp-config.php.

    +

    Puedes crear mahualmente el archivo wp-config.php y pegar dentro el siguiente texto.

    + +

    Una vez hayas hecho esto haz clic en "Iniciar la instalación."

    +

    Iniciar la instalación

    + +

    ¡Todo correcto! Ya has terminado esta parte de la instalación. Ahora WordPress puede comunicarse con tu base de datos. Si estás preparado es momento de …

    + +

    Iniciar la instalación

    + + + diff --git a/src/wp-admin/theme-editor.php b/src/wp-admin/theme-editor.php new file mode 100644 index 0000000..c41f0c8 --- /dev/null +++ b/src/wp-admin/theme-editor.php @@ -0,0 +1,271 @@ +'.__('You do not have sufficient permissions to edit templates for this site.').'

    '); + +$title = __("Edit Themes"); +$parent_file = 'themes.php'; + +$help = '

    ' . __('You can use the Theme Editor to edit the individual CSS and PHP files which make up your theme.') . '

    '; +$help .= '

    ' . __('Begin by choosing a theme to edit from the dropdown menu and clicking Select. A list then appears of all the template files. Clicking once on any file name causes the file to appear in the large Editor box.') . '

    '; +$help .= '

    ' . __('For PHP files, you can use the Documentation dropdown to select from functions recognized in that file. Lookup takes you to a web page with reference material about that particular function.') . '

    '; +$help .= '

    ' . __('After typing in your edits, click Update File.') . '

    '; +$help .= '

    ' . __('Advice: think very carefully about your site crashing if you are live-editing the theme currently in use.') . '

    '; +$help .= '

    ' . __('Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a child theme instead.') . '

    '; +if ( is_network_admin() ) + $help .= '

    ' . __('Any edits to files from this screen will be reflected on all sites in the network.') . '

    '; +$help .= '

    ' . __('For more information:') . '

    '; +$help .= '

    ' . __('Documentation on Theme Development') . '

    '; +$help .= '

    ' . __('Documentation on Using Themes') . '

    '; +$help .= '

    ' . __('Documentation on Editing Files') . '

    '; +$help .= '

    ' . __('Documentation on Template Tags') . '

    '; +$help .= '

    ' . __('Support Forums') . '

    '; +add_contextual_help($current_screen, $help); + +wp_reset_vars(array('action', 'redirect', 'profile', 'error', 'warning', 'a', 'file', 'theme', 'dir')); + +wp_admin_css( 'theme-editor' ); + +$themes = get_themes(); + +if (empty($theme)) { + $theme = get_current_theme(); +} else { + $theme = stripslashes($theme); +} + +if ( ! isset($themes[$theme]) ) + wp_die(__('The requested theme does not exist.')); + +$allowed_files = array_merge( $themes[$theme]['Stylesheet Files'], $themes[$theme]['Template Files'] ); + +if ( empty( $file ) ) { + if ( false !== array_search( $themes[$theme]['Stylesheet Dir'] . '/style.css', $allowed_files ) ) + $file = $themes[$theme]['Stylesheet Dir'] . '/style.css'; + else + $file = $allowed_files[0]; +} else { + $file = stripslashes($file); + if ( 'theme' == $dir ) { + $file = dirname(dirname($themes[$theme]['Template Dir'])) . $file ; + } else if ( 'style' == $dir) { + $file = dirname(dirname($themes[$theme]['Stylesheet Dir'])) . $file ; + } +} + +validate_file_to_edit($file, $allowed_files); +$scrollto = isset($_REQUEST['scrollto']) ? (int) $_REQUEST['scrollto'] : 0; +$file_show = basename( $file ); + +switch($action) { + +case 'update': + + check_admin_referer('edit-theme_' . $file . $theme); + + $newcontent = stripslashes($_POST['newcontent']); + $theme = urlencode($theme); + if (is_writeable($file)) { + //is_writable() not always reliable, check return value. see comments @ http://uk.php.net/is_writable + $f = fopen($file, 'w+'); + if ($f !== FALSE) { + fwrite($f, $newcontent); + fclose($f); + $location = "theme-editor.php?file=$file&theme=$theme&a=te&scrollto=$scrollto"; + } else { + $location = "theme-editor.php?file=$file&theme=$theme&scrollto=$scrollto"; + } + } else { + $location = "theme-editor.php?file=$file&theme=$theme&scrollto=$scrollto"; + } + + $location = wp_kses_no_null($location); + $strip = array('%0d', '%0a', '%0D', '%0A'); + $location = _deep_replace($strip, $location); + header("Location: $location"); + exit(); + +break; + +default: + + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + update_recently_edited($file); + + if ( !is_file($file) ) + $error = 1; + + $content = ''; + if ( !$error && filesize($file) > 0 ) { + $f = fopen($file, 'r'); + $content = fread($f, filesize($file)); + + if ( '.php' == substr( $file, strrpos( $file, '.' ) ) ) { + $functions = wp_doc_link_parse( $content ); + + $docs_select = ''; + } + + $content = esc_textarea( $content ); + } + + ?> + +

    +($file_show)" : $file_show; + +$is_child_theme = $themes[$theme]['Template'] != $themes[$theme]['Stylesheet']; +?> +
    + +

    + +
    +
    +

    +
    +
    +
    + + + +
    +
    +
    +
    +
    + +

    + +

    + +
      +($template_show)" : "$description"; + $filedesc = ( $template_file == $file ) ? "$description
      ($template_show)
      " : $filedesc; + $template_mapping[ $description ] = array( _get_template_edit_filename($template_file, $template_dir), $filedesc ); + } + ksort( $template_mapping ); + while ( list( $template_sorted_key, list( $template_file, $filedesc ) ) = each( $template_mapping ) ) : + ?> +
    • + +
    +

    +
      +($style_show)" : "$description"; + $filedesc = ( $style_file == $file ) ? "$description
      ($style_show)
      " : $filedesc; + $template_mapping[ $description ] = array( _get_template_edit_filename($style_file, $stylesheet_dir), $filedesc ); + } + ksort( $template_mapping ); + while ( list( $template_sorted_key, list( $style_file, $filedesc ) ) = each( $template_mapping ) ) : + ?> +
    • + +
    + +
    + +
    + +
    + + + + +
    + +
    + + + +
    + + +
    + +

    +

    + + '2' ) ); + else : ?> +

    the Codex for more information.'); ?>

    + +
    +
    +

    ' . __('Oops, no such file exists! Double check the name and try again, merci.') . '

    '; + } +?> +
    +
    + +get_pagenum(); +$wp_list_table->prepare_items(); + +$title = __('Install Themes'); +$parent_file = 'themes.php'; +if ( !is_network_admin() ) + $submenu_file = 'themes.php'; + +wp_enqueue_style( 'theme-install' ); +wp_enqueue_script( 'theme-install' ); + +add_thickbox(); +wp_enqueue_script( 'theme-preview' ); + +$body_id = $tab; + +do_action('install_themes_pre_' . $tab); //Used to override the general interface, Eg, install or theme information. + +$help = '

    ' . sprintf(__('You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the WordPress.org Theme Directory. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses.'), 'http://wordpress.org/extend/themes/') . '

    '; +$help .= '

    ' . __('You can Search for themes by keyword, author, or tag, or can get more specific and search by criteria listed in the feature filter. Alternately, you can browse the themes that are Featured, Newest, or Recently Updated. When you find a theme you like, you can preview it or install it.') . '

    '; +$help .= '

    ' . __('You can Upload a theme manually if you have already downloaded its ZIP archive onto your computer (make sure it is from a trusted and original source). You can also do it the old-fashioned way and copy a downloaded theme’s folder via FTP into your /wp-content/themes directory.') . '

    '; +$help .= '

    ' . __('For more information:') . '

    '; +$help .= '

    ' . __('Documentation on Adding New Themes') . '

    '; +$help .= '

    ' . __('Support Forums') . '

    '; +add_contextual_help($current_screen, $help); + +include(ABSPATH . 'wp-admin/admin-header.php'); +?> +
    + +

    + + + +views(); ?> + +
    + +
    +prepare_items(); + +$title = __('Manage Themes'); +$parent_file = 'themes.php'; + +if ( current_user_can( 'switch_themes' ) ) : + +$help = '

    ' . __('Aside from the default theme included with your WordPress installation, themes are designed and developed by third parties.') . '

    '; +$help .= '

    ' . __('You can see your active theme at the top of the screen. Below are the other themes you have installed that are not currently in use. You can see what your site would look like with one of these themes by clicking the Preview link. To change themes, click the Activate link.') . '

    '; +if ( current_user_can('install_themes') ) + $help .= '

    ' . sprintf(__('If you would like to see more themes to choose from, click on the “Install Themes” tab and you will be able to browse or search for additional themes from the WordPress.org Theme Directory. Themes in the WordPress.org Theme Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they’re free!'), 'http://wordpress.org/extend/themes/') . '

    '; + +$help .= '

    ' . __('For more information:') . '

    '; +$help .= '

    ' . __('Documentation on Using Themes') . '

    '; +$help .= '

    ' . __('Support Forums') . '

    '; +add_contextual_help($current_screen, $help); + +add_thickbox(); +wp_enqueue_script( 'theme-preview' ); +wp_enqueue_script( 'theme' ); +wp_enqueue_style( 'theme-install' ); + +endif; + +require_once('./admin-header.php'); +?> + + +

    + +

    widgets settings screen to configure them.'), admin_url( 'widgets.php' ) ); ?>

    +

    Visit site' ), home_url( '/' ) ); ?>

    +

    + + +
    +

    + +

    + +

    +
    +screenshot ) : ?> +<?php _e('Current theme preview'); ?> + +

    title, $ct->version, $ct->author) ; ?>

    +

    description; ?>

    +
    + + {$item[0]}"; + else + $options[] = "{$item[0]}"; + } else if ( current_user_can($item[1]) ) { + if ( file_exists(ABSPATH . 'wp-admin/' . $item[2]) ) { + $options[] = "{$item[0]}"; + } else { + $options[] = "{$item[0]}"; + } + } + } + } + echo implode ( ' | ', $options ); + + if ( $ct->tags ) : ?> +

    tags); ?>

    + +
    + + +
    + +
    +'; + require( './admin-footer.php' ); + exit; +} +?> + +

    + +has_items() ) : ?> + +
    + + + +
    + +
    + +
    +

    + + + + $features ) : + $feature_name = esc_html( $feature_name ); ?> + +
    +
    + +
      + $feature ) : + $feature_name = $feature; + $feature_name = esc_html( $feature_name ); + $feature = esc_attr( $feature ); + ?> +
    1. + features ) ); ?>/> + +
    2. + +
    +
    + + +
    + 'margin-left: 120px', 'id' => 'filter-submit' ) ); ?> +   + +
    +
    +
    +
    +
    + +
    + + + +display(); ?> + +
    +
    + + + +

    +

    + + + + + + + + + + "; + } +?> +
    $title$description
    + +
    + + diff --git a/src/wp-admin/tools.php b/src/wp-admin/tools.php new file mode 100644 index 0000000..48528ae --- /dev/null +++ b/src/wp-admin/tools.php @@ -0,0 +1,63 @@ +' . __('Press This is a bookmarklet that makes it easy to blog about something you come across on the web. You can use it to just grab a link, or to post an excerpt. Press This will even allow you to choose from images included on the page and use them in your post. Just drag the Press This link on this screen to your bookmarks bar in your browser, and you’ll be on your way to easier content creation. Clicking on it while on another website opens a popup window with all these options.') . '

    ' . + '

    ' . __('The Use This link for the Categories and Tags Converter will take you to the Import page, where that Converter is one of the plugins you can download. Once that plugin is installed, the link on this page takes you to a screen where you can choose conversion either way.') . '

    ' . + '

    ' . __('Note: Turbo/Gears is no longer promoted on this screen as it was in previous versions due to the fact that Google has discontinued support for it.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Tools') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +require_once('./admin-header.php'); + +?> +
    + +

    + + +
    +

    +

    + +

    +

    +

    + +
    +cap->manage_terms) || current_user_can($tags->cap->manage_terms) ) : ?> +
    +

    +

    Use this to convert categories to tags or tags to categories.'), 'import.php' ); ?>

    +
    + +
    + diff --git a/src/wp-admin/update-core.php b/src/wp-admin/update-core.php new file mode 100644 index 0000000..85c70a4 --- /dev/null +++ b/src/wp-admin/update-core.php @@ -0,0 +1,505 @@ +locale && 'en_US' == get_locale() ) ? + $update->current : sprintf("%s–%s", $update->current, $update->locale); + $current = false; + if ( !isset($update->response) || 'latest' == $update->response ) + $current = true; + $submit = __('Update Now'); + $form_action = 'update-core.php?action=do-core-upgrade'; + $php_version = phpversion(); + $mysql_version = $wpdb->db_version(); + $show_buttons = true; + if ( 'development' == $update->response ) { + $message = __('You are using a development version of WordPress. You can update to the latest nightly build automatically or download the nightly build and install it manually:'); + $download = __('Download nightly build'); + } else { + if ( $current ) { + $message = sprintf(__('You have the latest version of WordPress. You do not need to update. However, if you want to re-install version %s, you can do so automatically or download the package and re-install manually:'), $version_string); + $submit = __('Re-install Now'); + $form_action = 'update-core.php?action=do-core-reinstall'; + } else { + $php_compat = version_compare( $php_version, $update->php_version, '>=' ); + $mysql_compat = version_compare( $mysql_version, $update->mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' ); + if ( !$mysql_compat && !$php_compat ) + $message = sprintf( __('You cannot update because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $update->current, $update->php_version, $update->mysql_version, $php_version, $mysql_version ); + elseif ( !$php_compat ) + $message = sprintf( __('You cannot update because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s.'), $update->current, $update->php_version, $php_version ); + elseif ( !$mysql_compat ) + $message = sprintf( __('You cannot update because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.'), $update->current, $update->mysql_version, $mysql_version ); + else + $message = sprintf(__('You can update to WordPress %2$s automatically or download the package and install it manually:'), $update->current, $version_string); + if ( !$mysql_compat || !$php_compat ) + $show_buttons = false; + } + $download = sprintf(__('Download %s'), $version_string); + } + + echo '

    '; + echo $message; + echo '

    '; + echo '
    '; + wp_nonce_field('upgrade-core'); + echo '

    '; + echo ''; + echo ''; + if ( $show_buttons ) { + if ( $first_pass ) { + submit_button( $submit, 'button button-primary', 'upgrade', false ); + $first_pass = false; + } else { + submit_button( $submit, 'button', 'upgrade', false ); + } + echo ' ' . $download . ' '; + } + if ( 'en_US' != $update->locale ) + if ( !isset( $update->dismissed ) || !$update->dismissed ) + submit_button( __('Hide this update'), 'button', 'dismiss', false ); + else + submit_button( __('Bring back this update'), 'button', 'undismiss', false ); + echo '

    '; + if ( 'en_US' != $update->locale && ( !isset($wp_local_package) || $wp_local_package != $update->locale ) ) + echo '

    '.__('This localized version contains both the translation and various other localization fixes. You can skip upgrading if you want to keep your current translation.').'

    '; + else if ( 'en_US' == $update->locale && get_locale() != 'en_US' ) { + echo '

    '.sprintf( __('You are about to install WordPress %s in English (US). There is a chance this update will break your translation. You may prefer to wait for the localized version to be released.'), $update->response != 'development' ? $update->current : '' ).'

    '; + } + echo '
    '; + +} + +function dismissed_updates() { + $dismissed = get_core_updates( array( 'dismissed' => true, 'available' => false ) ); + if ( $dismissed ) { + + $show_text = esc_js(__('Show hidden updates')); + $hide_text = esc_js(__('Hide hidden updates')); + ?> + + '.__('Show hidden updates').'

    '; + echo '
      '; + foreach( (array) $dismissed as $update) { + echo '
    • '; + list_core_update( $update ); + echo '
    • '; + } + echo '
    '; + } +} + +/** + * Display upgrade WordPress for downloading latest or upgrading automatically form. + * + * @since 2.7 + * + * @return null + */ +function core_upgrade_preamble() { + global $upgrade_error; + + $updates = get_core_updates(); +?> +
    + +

    +

    '; + if ( $upgrade_error == 'themes' ) + _e('Please select one or more themes to update.'); + else + _e('Please select one or more plugins to update.'); + echo '

    '; + } + + echo '

    '; + /* translators: %1 date, %2 time. */ + printf( __('Last checked on %1$s at %2$s.'), date_i18n( get_option( 'date_format' ) ), date_i18n( get_option( 'time_format' ) ) ); + echo '   ' . __( 'Check Again' ) . ''; + echo '

    '; + + if ( !isset($updates[0]->response) || 'latest' == $updates[0]->response ) { + echo '

    '; + _e('You have the latest version of WordPress.'); + echo '

    '; + } else { + echo '

    '; + _e('Important: before updating, please back up your database and files. For help with updates, visit the Updating WordPress Codex page.'); + echo '

    '; + + echo '

    '; + _e( 'An updated version of WordPress is available.' ); + echo '

    '; + } + + echo '
      '; + $alternate = true; + foreach( (array) $updates as $update ) { + echo '
    • '; + list_core_update( $update ); + echo '
    • '; + } + echo '
    '; + echo '

    ' . __( 'While your site is being updated, it will be in maintenance mode. As soon as your updates are complete, your site will return to normal.' ) . '

    '; + dismissed_updates(); + + if ( current_user_can( 'update_plugins' ) ) + list_plugin_updates(); + if ( current_user_can( 'update_themes' ) ) + list_theme_updates(); + do_action('core_upgrade_preamble'); + echo ''; +} + +function list_plugin_updates() { + global $wp_version; + + $cur_wp_version = preg_replace('/-.*$/', '', $wp_version); + + require_once(ABSPATH . 'wp-admin/includes/plugin-install.php'); + $plugins = get_plugin_updates(); + if ( empty( $plugins ) ) { + echo '

    ' . __( 'Plugins' ) . '

    '; + echo '

    ' . __( 'Your plugins are all up to date.' ) . '

    '; + return; + } + $form_action = 'update-core.php?action=do-plugin-upgrade'; + + $core_updates = get_core_updates(); + if ( !isset($core_updates[0]->response) || 'latest' == $core_updates[0]->response || 'development' == $core_updates[0]->response || version_compare( $core_updates[0]->current, $cur_wp_version, '=') ) + $core_update_version = false; + else + $core_update_version = $core_updates[0]->current; + ?> +

    +

    +
    + +

    + + + + + + + + + + + + + + + + $plugin_data) { + $info = plugins_api('plugin_information', array('slug' => $plugin_data->update->slug )); + // Get plugin compat for running version of WordPress. + if ( isset($info->tested) && version_compare($info->tested, $cur_wp_version, '>=') ) { + $compat = '
    ' . sprintf(__('Compatibility with WordPress %1$s: 100%% (according to its author)'), $cur_wp_version); + } elseif ( isset($info->compatibility[$cur_wp_version][$plugin_data->update->new_version]) ) { + $compat = $info->compatibility[$cur_wp_version][$plugin_data->update->new_version]; + $compat = '
    ' . sprintf(__('Compatibility with WordPress %1$s: %2$d%% (%3$d "works" votes out of %4$d total)'), $cur_wp_version, $compat[0], $compat[2], $compat[1]); + } else { + $compat = '
    ' . sprintf(__('Compatibility with WordPress %1$s: Unknown'), $cur_wp_version); + } + // Get plugin compat for updated version of WordPress. + if ( $core_update_version ) { + if ( isset($info->compatibility[$core_update_version][$plugin_data->update->new_version]) ) { + $update_compat = $info->compatibility[$core_update_version][$plugin_data->update->new_version]; + $compat .= '
    ' . sprintf(__('Compatibility with WordPress %1$s: %2$d%% (%3$d "works" votes out of %4$d total)'), $core_update_version, $update_compat[0], $update_compat[2], $update_compat[1]); + } else { + $compat .= '
    ' . sprintf(__('Compatibility with WordPress %1$s: Unknown'), $core_update_version); + } + } + // Get the upgrade notice for the new plugin version. + if ( isset($plugin_data->update->upgrade_notice) ) { + $upgrade_notice = '
    ' . strip_tags($plugin_data->update->upgrade_notice); + } else { + $upgrade_notice = ''; + } + echo " + + + + "; + } +?> + +
    {$plugin_data->Name}
    " . sprintf(__('You have version %1$s installed. Update to %2$s.'), $plugin_data->Version, $plugin_data->update->new_version) . $compat . $upgrade_notice . "
    +

    +
    +' . __( 'Themes' ) . ''; + echo '

    ' . __( 'Your themes are all up to date.' ) . '

    '; + return; + } + + $form_action = 'update-core.php?action=do-theme-upgrade'; + +?> +

    +

    +

    Please Note: Any customizations you have made to theme files will be lost. Please consider using child themes for modifications.'), _x('http://codex.wordpress.org/Child_Themes', 'Link used in suggestion to use child themes in GUU') ); ?>

    +
    + +

    + + + + + + + + + + + + + + + + $theme_data) { + $screenshot = $theme_data->{'Theme Root URI'} . '/' . $stylesheet . '/' . $theme_data->Screenshot; + + echo " + + + + "; + } +?> + +
    {$theme_data->Name}" . sprintf(__('You have version %1$s installed. Update to %2$s.'), $theme_data->Version, $theme_data->update['new_version']) . "
    +

    +
    + +
    + +

    +errors->get_error_code() ) { + foreach ( $wp_filesystem->errors->get_error_messages() as $message ) + show_message($message); + echo '
    '; + return; + } + + if ( $reinstall ) + $update->response = 'reinstall'; + + $result = wp_update_core($update, 'show_message'); + + if ( is_wp_error($result) ) { + show_message($result); + if ('up_to_date' != $result->get_error_code() ) + show_message( __('Installation Failed') ); + } else { + show_message( __('WordPress updated successfully') ); + show_message( '' . __('Go to Dashboard') . '' ); + } + echo ''; +} + +function do_dismiss_core_update() { + $version = isset( $_POST['version'] )? $_POST['version'] : false; + $locale = isset( $_POST['locale'] )? $_POST['locale'] : 'en_US'; + $update = find_core_update( $version, $locale ); + if ( !$update ) + return; + dismiss_core_update( $update ); + wp_redirect( wp_nonce_url('update-core.php?action=upgrade-core', 'upgrade-core') ); + exit; +} + +function do_undismiss_core_update() { + $version = isset( $_POST['version'] )? $_POST['version'] : false; + $locale = isset( $_POST['locale'] )? $_POST['locale'] : 'en_US'; + $update = find_core_update( $version, $locale ); + if ( !$update ) + return; + undismiss_core_update( $version, $locale ); + wp_redirect( wp_nonce_url('update-core.php?action=upgrade-core', 'upgrade-core') ); + exit; +} + +function no_update_actions($actions) { + return ''; +} + +$action = isset($_GET['action']) ? $_GET['action'] : 'upgrade-core'; + +$upgrade_error = false; +if ( ( 'do-theme-upgrade' == $action || ( 'do-plugin-upgrade' == $action && ! isset( $_GET['plugins'] ) ) ) + && ! isset( $_POST['checked'] ) ) { + $upgrade_error = $action == 'do-theme-upgrade' ? 'themes' : 'plugins'; + $action = 'upgrade-core'; +} + +$title = __('WordPress Updates'); +$parent_file = 'tools.php'; + +add_contextual_help($current_screen, + '

    ' . __('This screen lets you update to the latest version of WordPress as well as update your themes and plugins from the WordPress.org repository. When updates are available, the number of available updates will appear in a bubble on the left hand menu as a notification. It is very important to keep your WordPress installation up to date for security reasons, so when you see a number appear, make sure you take the time to update, which is an easy process.') . '

    ' . + '

    ' . __('Updating your WordPress installation is a simple one-click procedure; just click on the Update button when it says a new version is available.') . '

    ' . + '

    ' . __('To update themes or plugins from this screen, use the checkboxes to make your selection and click on the appropriate Update button. Check the box at the top of the Themes or Plugins section to select all and update them all at once.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Updating WordPress') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +if ( 'upgrade-core' == $action ) { + + wp_version_check(); + require_once(ABSPATH . 'wp-admin/admin-header.php'); + core_upgrade_preamble(); + include(ABSPATH . 'wp-admin/admin-footer.php'); + +} elseif ( 'do-core-upgrade' == $action || 'do-core-reinstall' == $action ) { + check_admin_referer('upgrade-core'); + + // do the (un)dismiss actions before headers, + // so that they can redirect + if ( isset( $_POST['dismiss'] ) ) + do_dismiss_core_update(); + elseif ( isset( $_POST['undismiss'] ) ) + do_undismiss_core_update(); + + require_once(ABSPATH . 'wp-admin/admin-header.php'); + if ( 'do-core-reinstall' == $action ) + $reinstall = true; + else + $reinstall = false; + + if ( isset( $_POST['upgrade'] ) ) + do_core_upgrade($reinstall); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + +} elseif ( 'do-plugin-upgrade' == $action ) { + + if ( ! current_user_can( 'update_plugins' ) ) + wp_die( __( 'You do not have sufficient permissions to update this site.' ) ); + + check_admin_referer('upgrade-core'); + + if ( isset( $_GET['plugins'] ) ) { + $plugins = explode( ',', $_GET['plugins'] ); + } elseif ( isset( $_POST['checked'] ) ) { + $plugins = (array) $_POST['checked']; + } else { + wp_redirect( admin_url('update-core.php') ); + exit; + } + + $url = 'update.php?action=update-selected&plugins=' . urlencode(implode(',', $plugins)); + $url = wp_nonce_url($url, 'bulk-update-plugins'); + + $title = __('Update Plugins'); + + require_once(ABSPATH . 'wp-admin/admin-header.php'); + echo '
    '; + screen_icon('plugins'); + echo '

    ' . esc_html__('Update Plugins') . '

    '; + echo ""; + echo '
    '; + include(ABSPATH . 'wp-admin/admin-footer.php'); + +} elseif ( 'do-theme-upgrade' == $action ) { + + if ( ! current_user_can( 'update_themes' ) ) + wp_die( __( 'You do not have sufficient permissions to update this site.' ) ); + + check_admin_referer('upgrade-core'); + + if ( isset( $_GET['themes'] ) ) { + $themes = explode( ',', $_GET['themes'] ); + } elseif ( isset( $_POST['checked'] ) ) { + $themes = (array) $_POST['checked']; + } else { + wp_redirect( admin_url('update-core.php') ); + exit; + } + + $url = 'update.php?action=update-selected-themes&themes=' . urlencode(implode(',', $themes)); + $url = wp_nonce_url($url, 'bulk-update-themes'); + + $title = __('Update Themes'); + + require_once(ABSPATH . 'wp-admin/admin-header.php'); + echo '
    '; + screen_icon('themes'); + echo '

    ' . esc_html__('Update Themes') . '

    '; + echo ""; + echo '
    '; + include(ABSPATH . 'wp-admin/admin-footer.php'); + +} else { + do_action('update-core-custom_' . $action); +} \ No newline at end of file diff --git a/src/wp-admin/update.php b/src/wp-admin/update.php new file mode 100644 index 0000000..e529064 --- /dev/null +++ b/src/wp-admin/update.php @@ -0,0 +1,250 @@ +bulk_upgrade( $plugins ); + + iframe_footer(); + + } elseif ( 'upgrade-plugin' == $action ) { + if ( ! current_user_can('update_plugins') ) + wp_die(__('You do not have sufficient permissions to update plugins for this site.')); + + check_admin_referer('upgrade-plugin_' . $plugin); + + $title = __('Update Plugin'); + $parent_file = 'plugins.php'; + $submenu_file = 'plugins.php'; + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $nonce = 'upgrade-plugin_' . $plugin; + $url = 'update.php?action=upgrade-plugin&plugin=' . $plugin; + + $upgrader = new Plugin_Upgrader( new Plugin_Upgrader_Skin( compact('title', 'nonce', 'url', 'plugin') ) ); + $upgrader->upgrade($plugin); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + } elseif ('activate-plugin' == $action ) { + if ( ! current_user_can('update_plugins') ) + wp_die(__('You do not have sufficient permissions to update plugins for this site.')); + + check_admin_referer('activate-plugin_' . $plugin); + if ( ! isset($_GET['failure']) && ! isset($_GET['success']) ) { + wp_redirect( admin_url('update.php?action=activate-plugin&failure=true&plugin=' . $plugin . '&_wpnonce=' . $_GET['_wpnonce']) ); + activate_plugin( $plugin, '', ! empty( $_GET['networkwide'] ), true ); + wp_redirect( admin_url('update.php?action=activate-plugin&success=true&plugin=' . $plugin . '&_wpnonce=' . $_GET['_wpnonce']) ); + die(); + } + iframe_header( __('Plugin Reactivation'), true ); + if ( isset($_GET['success']) ) + echo '

    ' . __('Plugin reactivated successfully.') . '

    '; + + if ( isset($_GET['failure']) ){ + echo '

    ' . __('Plugin failed to reactivate due to a fatal error.') . '

    '; + + error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR ); + @ini_set('display_errors', true); //Ensure that Fatal errors are displayed. + include(WP_PLUGIN_DIR . '/' . $plugin); + } + iframe_footer(); + } elseif ( 'install-plugin' == $action ) { + + if ( ! current_user_can('install_plugins') ) + wp_die(__('You do not have sufficient permissions to install plugins for this site.')); + + include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; //for plugins_api.. + + check_admin_referer('install-plugin_' . $plugin); + $api = plugins_api('plugin_information', array('slug' => $plugin, 'fields' => array('sections' => false) ) ); //Save on a bit of bandwidth. + + if ( is_wp_error($api) ) + wp_die($api); + + $title = __('Plugin Install'); + $parent_file = 'plugins.php'; + $submenu_file = 'plugin-install.php'; + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $title = sprintf( __('Installing Plugin: %s'), $api->name . ' ' . $api->version ); + $nonce = 'install-plugin_' . $plugin; + $url = 'update.php?action=install-plugin&plugin=' . $plugin; + if ( isset($_GET['from']) ) + $url .= '&from=' . urlencode(stripslashes($_GET['from'])); + + $type = 'web'; //Install plugin type, From Web or an Upload. + + $upgrader = new Plugin_Upgrader( new Plugin_Installer_Skin( compact('title', 'url', 'nonce', 'plugin', 'api') ) ); + $upgrader->install($api->download_link); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + } elseif ( 'upload-plugin' == $action ) { + + if ( ! current_user_can('install_plugins') ) + wp_die(__('You do not have sufficient permissions to install plugins for this site.')); + + check_admin_referer('plugin-upload'); + + $file_upload = new File_Upload_Upgrader('pluginzip', 'package'); + + $title = __('Upload Plugin'); + $parent_file = 'plugins.php'; + $submenu_file = 'plugin-install.php'; + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $title = sprintf( __('Installing Plugin from uploaded file: %s'), basename( $file_upload->filename ) ); + $nonce = 'plugin-upload'; + $url = add_query_arg(array('package' => $file_upload->filename ), 'update.php?action=upload-plugin'); + $type = 'upload'; //Install plugin type, From Web or an Upload. + + $upgrader = new Plugin_Upgrader( new Plugin_Installer_Skin( compact('type', 'title', 'nonce', 'url') ) ); + $upgrader->install( $file_upload->package ); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + } elseif ( 'upgrade-theme' == $action ) { + + if ( ! current_user_can('update_themes') ) + wp_die(__('You do not have sufficient permissions to update themes for this site.')); + + check_admin_referer('upgrade-theme_' . $theme); + + add_thickbox(); + wp_enqueue_script('theme-preview'); + $title = __('Update Theme'); + $parent_file = 'themes.php'; + $submenu_file = 'themes.php'; + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $nonce = 'upgrade-theme_' . $theme; + $url = 'update.php?action=upgrade-theme&theme=' . $theme; + + $upgrader = new Theme_Upgrader( new Theme_Upgrader_Skin( compact('title', 'nonce', 'url', 'theme') ) ); + $upgrader->upgrade($theme); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + } elseif ( 'update-selected-themes' == $action ) { + if ( ! current_user_can( 'update_themes' ) ) + wp_die( __( 'You do not have sufficient permissions to update themes for this site.' ) ); + + check_admin_referer( 'bulk-update-themes' ); + + if ( isset( $_GET['themes'] ) ) + $themes = explode( ',', stripslashes($_GET['themes']) ); + elseif ( isset( $_POST['checked'] ) ) + $themes = (array) $_POST['checked']; + else + $themes = array(); + + $themes = array_map('urldecode', $themes); + + $url = 'update.php?action=update-selected-themes&themes=' . urlencode(implode(',', $themes)); + $nonce = 'bulk-update-themes'; + + wp_enqueue_script('jquery'); + iframe_header(); + + $upgrader = new Theme_Upgrader( new Bulk_Theme_Upgrader_Skin( compact( 'nonce', 'url' ) ) ); + $upgrader->bulk_upgrade( $themes ); + + iframe_footer(); + } elseif ( 'install-theme' == $action ) { + + if ( ! current_user_can('install_themes') ) + wp_die(__('You do not have sufficient permissions to install themes for this site.')); + + include_once ABSPATH . 'wp-admin/includes/theme-install.php'; //for themes_api.. + + check_admin_referer('install-theme_' . $theme); + $api = themes_api('theme_information', array('slug' => $theme, 'fields' => array('sections' => false) ) ); //Save on a bit of bandwidth. + + if ( is_wp_error($api) ) + wp_die($api); + + add_thickbox(); + wp_enqueue_script('theme-preview'); + $title = __('Install Themes'); + $parent_file = 'themes.php'; + $submenu_file = 'themes.php'; + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $title = sprintf( __('Installing Theme: %s'), $api->name . ' ' . $api->version ); + $nonce = 'install-theme_' . $theme; + $url = 'update.php?action=install-theme&theme=' . $theme; + $type = 'web'; //Install theme type, From Web or an Upload. + + $upgrader = new Theme_Upgrader( new Theme_Installer_Skin( compact('title', 'url', 'nonce', 'plugin', 'api') ) ); + $upgrader->install($api->download_link); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + } elseif ( 'upload-theme' == $action ) { + + if ( ! current_user_can('install_themes') ) + wp_die(__('You do not have sufficient permissions to install themes for this site.')); + + check_admin_referer('theme-upload'); + + $file_upload = new File_Upload_Upgrader('themezip', 'package'); + + $title = __('Upload Theme'); + $parent_file = 'themes.php'; + $submenu_file = 'theme-install.php'; + add_thickbox(); + wp_enqueue_script('theme-preview'); + require_once(ABSPATH . 'wp-admin/admin-header.php'); + + $title = sprintf( __('Installing Theme from uploaded file: %s'), basename( $file_upload->filename ) ); + $nonce = 'theme-upload'; + $url = add_query_arg(array('package' => $file_upload->filename), 'update.php?action=upload-theme'); + $type = 'upload'; //Install plugin type, From Web or an Upload. + + $upgrader = new Theme_Upgrader( new Theme_Installer_Skin( compact('type', 'title', 'nonce', 'url') ) ); + $upgrader->install( $file_upload->package ); + + include(ABSPATH . 'wp-admin/admin-footer.php'); + + } else { + do_action('update-custom_' . $action); + } +} diff --git a/src/wp-admin/upgrade-functions.php b/src/wp-admin/upgrade-functions.php new file mode 100644 index 0000000..ca14a59 --- /dev/null +++ b/src/wp-admin/upgrade-functions.php @@ -0,0 +1,13 @@ + diff --git a/src/wp-admin/upgrade.php b/src/wp-admin/upgrade.php new file mode 100644 index 0000000..794b55b --- /dev/null +++ b/src/wp-admin/upgrade.php @@ -0,0 +1,110 @@ +db_version(); +$php_compat = version_compare( $php_version, $required_php_version, '>=' ); +$mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' ); + +@header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) ); +?> + +> + + + <?php _e( 'WordPress › Update' ); ?> + + + +

    WordPress

    + + + +

    +

    +

    + +WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s.'), $wp_version, $required_php_version, $required_mysql_version, $php_version, $mysql_version ); + elseif ( !$php_compat ) + printf( __('You cannot update because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s.'), $wp_version, $required_php_version, $php_version ); + elseif ( !$mysql_compat ) + printf( __('You cannot update because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s.'), $wp_version, $required_mysql_version, $mysql_version ); +?> + +

    +

    +

    +

    + +

    +

    +

    + + + + + + diff --git a/src/wp-admin/upload.php b/src/wp-admin/upload.php new file mode 100644 index 0000000..e121207 --- /dev/null +++ b/src/wp-admin/upload.php @@ -0,0 +1,222 @@ +get_pagenum(); + +// Handle bulk actions +$doaction = $wp_list_table->current_action(); + +if ( $doaction ) { + check_admin_referer('bulk-media'); + + if ( 'delete_all' == $doaction ) { + $post_ids = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_type='attachment' AND post_status = 'trash'" ); + $doaction = 'delete'; + } elseif ( isset( $_REQUEST['media'] ) ) { + $post_ids = $_REQUEST['media']; + } elseif ( isset( $_REQUEST['ids'] ) ) { + $post_ids = explode( ',', $_REQUEST['ids'] ); + } + + $location = 'upload.php'; + if ( $referer = wp_get_referer() ) { + if ( false !== strpos( $referer, 'upload.php' ) ) + $location = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'message', 'ids', 'posted' ), $referer ); + } + + switch ( $doaction ) { + case 'find_detached': + if ( !current_user_can('edit_posts') ) + wp_die( __('You are not allowed to scan for lost attachments.') ); + + $lost = $wpdb->get_col( " + SELECT ID FROM $wpdb->posts + WHERE post_type = 'attachment' AND post_parent > '0' + AND post_parent NOT IN ( + SELECT ID FROM $wpdb->posts + WHERE post_type NOT IN ( 'attachment', '" . join( "', '", get_post_types( array( 'public' => false ) ) ) . "' ) + ) + " ); + + $_REQUEST['detached'] = 1; + break; + case 'attach': + $parent_id = (int) $_REQUEST['found_post_id']; + if ( !$parent_id ) + return; + + $parent = &get_post( $parent_id ); + if ( !current_user_can( 'edit_post', $parent_id ) ) + wp_die( __( 'You are not allowed to edit this post.' ) ); + + $attach = array(); + foreach ( (array) $_REQUEST['media'] as $att_id ) { + $att_id = (int) $att_id; + + if ( !current_user_can( 'edit_post', $att_id ) ) + continue; + + $attach[] = $att_id; + clean_attachment_cache( $att_id ); + } + + if ( ! empty( $attach ) ) { + $attach = implode( ',', $attach ); + $attached = $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->posts SET post_parent = %d WHERE post_type = 'attachment' AND ID IN ( $attach )", $parent_id ) ); + } + + if ( isset( $attached ) ) { + $location = 'upload.php'; + if ( $referer = wp_get_referer() ) { + if ( false !== strpos( $referer, 'upload.php' ) ) + $location = $referer; + } + + $location = add_query_arg( array( 'attached' => $attached ) , $location ); + wp_redirect( $location ); + exit; + } + break; + case 'trash': + foreach ( (array) $post_ids as $post_id ) { + if ( !current_user_can( 'delete_post', $post_id ) ) + wp_die( __( 'You are not allowed to move this post to the trash.' ) ); + + if ( !wp_trash_post( $post_id ) ) + wp_die( __( 'Error in moving to trash...' ) ); + } + $location = add_query_arg( array( 'trashed' => count( $post_ids ), 'ids' => join( ',', $post_ids ) ), $location ); + break; + case 'untrash': + foreach ( (array) $post_ids as $post_id ) { + if ( !current_user_can( 'delete_post', $post_id ) ) + wp_die( __( 'You are not allowed to move this post out of the trash.' ) ); + + if ( !wp_untrash_post( $post_id ) ) + wp_die( __( 'Error in restoring from trash...' ) ); + } + $location = add_query_arg( 'untrashed', count( $post_ids ), $location ); + break; + case 'delete': + foreach ( (array) $post_ids as $post_id_del ) { + if ( !current_user_can( 'delete_post', $post_id_del ) ) + wp_die( __( 'You are not allowed to delete this post.' ) ); + + if ( !wp_delete_attachment( $post_id_del ) ) + wp_die( __( 'Error in deleting...' ) ); + } + $location = add_query_arg( 'deleted', count( $post_ids ), $location ); + break; + } + + wp_redirect( $location ); + exit; +} elseif ( ! empty( $_GET['_wp_http_referer'] ) ) { + wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), stripslashes( $_SERVER['REQUEST_URI'] ) ) ); + exit; +} + +$wp_list_table->prepare_items(); + +$title = __('Media Library'); +$parent_file = 'upload.php'; + +wp_enqueue_script( 'wp-ajax-response' ); +wp_enqueue_script( 'jquery-ui-draggable' ); +wp_enqueue_script( 'media' ); + +add_screen_option( 'per_page', array('label' => _x( 'Media items', 'items per page (screen options)' )) ); + +add_contextual_help( $current_screen, + '

    ' . __( 'All the files you’ve uploaded are listed in the Media Library, with the most recent uploads listed first. You can use the Screen Options tab to customize the display of this screen.' ) . '

    ' . + '

    ' . __( 'You can narrow the list by file type/status using the text link filters at the top of the screen. You also can refine the list by date using the dropdown menu above the media table.' ) . '

    ' . + '

    ' . __( 'Hovering over a row reveals action links: Edit, Delete Permanently, and View. Clicking Edit or on the media file’s name displays a simple screen to edit that individual file’s metadata. Clicking Delete Permanently will delete the file from the media library (as well as from any posts to which it is currently attached). View will take you to the display page for that file.' ) . '

    ' . + '

    ' . __( 'If a media file has not been attached to any post, you will see that in the Attached To column, and can click on Attach File to launch a small popup that will allow you to search for a post and attach the file.' ) . '

    ' . + '

    ' . __( 'For more information:' ) . '

    ' . + '

    ' . __( 'Documentation on Media Library' ) . '

    ' . + '

    ' . __( 'Support Forums' ) . '

    ' +); + +require_once('./admin-header.php'); +?> + +
    + +

    ' . __('Search results for “%s”') . '', get_search_query() ); ?> +

    + +' . __('Undo') . ''; + $_SERVER['REQUEST_URI'] = remove_query_arg(array('trashed'), $_SERVER['REQUEST_URI']); +} + +if ( isset($_GET['untrashed']) && (int) $_GET['untrashed'] ) { + $message = sprintf( _n( 'Media attachment restored from the trash.', '%d media attachments restored from the trash.', $_GET['untrashed'] ), number_format_i18n( $_GET['untrashed'] ) ); + $_SERVER['REQUEST_URI'] = remove_query_arg(array('untrashed'), $_SERVER['REQUEST_URI']); +} + +$messages[1] = __('Media attachment updated.'); +$messages[2] = __('Media permanently deleted.'); +$messages[3] = __('Error saving media attachment.'); +$messages[4] = __('Media moved to the trash.') . ' ' . __('Undo') . ''; +$messages[5] = __('Media restored from the trash.'); + +if ( isset($_GET['message']) && (int) $_GET['message'] ) { + $message = $messages[$_GET['message']]; + $_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']); +} + +if ( !empty($message) ) { ?> +

    + + +views(); ?> + +
    + +search_box( __( 'Search Media' ), 'media' ); ?> + +display(); ?> + +
    + +
    + +
    +
    + +ID ) ); + +if ( ! $user_id && IS_PROFILE_PAGE ) + $user_id = $current_user->ID; +elseif ( ! $user_id && ! IS_PROFILE_PAGE ) + wp_die(__( 'Invalid user ID.' ) ); +elseif ( ! get_userdata( $user_id ) ) + wp_die( __('Invalid user ID.') ); + +wp_enqueue_script('user-profile'); + +$title = IS_PROFILE_PAGE ? __('Profile') : __('Edit User'); +if ( current_user_can('edit_users') && !IS_PROFILE_PAGE ) + $submenu_file = 'users.php'; +else + $submenu_file = 'profile.php'; + +if ( current_user_can('edit_users') && !is_user_admin() ) + $parent_file = 'users.php'; +else + $parent_file = 'profile.php'; + +// contextual help - choose Help on the top right of admin panel to preview this. +add_contextual_help($current_screen, + '

    ' . __('Your profile contains information about you (your “account”) as well as some personal options related to using WordPress.') . '

    ' . + '

    ' . __('You can change your password, turn on keyboard shortcuts, change the color scheme of your WordPress administration screens, and turn off the WYSIWYG (Visual) editor, among other things.') . '

    ' . + '

    ' . __('Your username cannot be changed, but you can use other fields to enter your real name or a nickname, and change which name to display on your posts.') . '

    ' . + '

    ' . __('Required fields are indicated; the rest are optional. Profile information will only be displayed if your theme is set up to do so.') . '

    ' . + '

    ' . __('Remember to click the Update Profile button when you are finished.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on User Profiles') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + + +$wp_http_referer = remove_query_arg(array('update', 'delete_count'), stripslashes($wp_http_referer)); + +$user_can_edit = current_user_can( 'edit_posts' ) || current_user_can( 'edit_pages' ); + +/** + * Optional SSL preference that can be turned on by hooking to the 'personal_options' action. + * + * @since 2.7.0 + * + * @param object $user User data object + */ +function use_ssl_preference($user) { +?> + + + + +ID && ! apply_filters( 'enable_edit_any_user_configuration', true ) ) + wp_die( __( 'You do not have permission to edit this user.' ) ); + +// Execute confirmed email change. See send_confirmation_on_profile_email(). +if ( is_multisite() && IS_PROFILE_PAGE && isset( $_GET[ 'newuseremail' ] ) && $current_user->ID ) { + $new_email = get_option( $current_user->ID . '_new_email' ); + if ( $new_email[ 'hash' ] == $_GET[ 'newuseremail' ] ) { + $user->ID = $current_user->ID; + $user->user_email = esc_html( trim( $new_email[ 'newemail' ] ) ); + if ( $wpdb->get_var( $wpdb->prepare( "SELECT user_login FROM {$wpdb->signups} WHERE user_login = %s", $current_user->user_login ) ) ) + $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->signups} SET user_email = %s WHERE user_login = %s", $user->user_email, $current_user->user_login ) ); + wp_update_user( get_object_vars( $user ) ); + delete_option( $current_user->ID . '_new_email' ); + wp_redirect( add_query_arg( array('updated' => 'true'), self_admin_url( 'profile.php' ) ) ); + die(); + } +} elseif ( is_multisite() && IS_PROFILE_PAGE && !empty( $_GET['dismiss'] ) && $current_user->ID . '_new_email' == $_GET['dismiss'] ) { + delete_option( $current_user->ID . '_new_email' ); + wp_redirect( add_query_arg( array('updated' => 'true'), self_admin_url( 'profile.php' ) ) ); + die(); +} + +switch ($action) { +case 'update': + +check_admin_referer('update-user_' . $user_id); + +if ( !current_user_can('edit_user', $user_id) ) + wp_die(__('You do not have permission to edit this user.')); + +if ( IS_PROFILE_PAGE ) + do_action('personal_options_update', $user_id); +else + do_action('edit_user_profile_update', $user_id); + +if ( !is_multisite() ) { + $errors = edit_user($user_id); +} else { + $user = get_userdata( $user_id ); + + // Update the email address in signups, if present. + if ( $user->user_login && isset( $_POST[ 'email' ] ) && is_email( $_POST[ 'email' ] ) && $wpdb->get_var( $wpdb->prepare( "SELECT user_login FROM {$wpdb->signups} WHERE user_login = %s", $user->user_login ) ) ) + $wpdb->query( $wpdb->prepare( "UPDATE {$wpdb->signups} SET user_email = %s WHERE user_login = %s", $_POST[ 'email' ], $user_login ) ); + + // WPMU must delete the user from the current blog if WP added him after editing. + $delete_role = false; + $blog_prefix = $wpdb->get_blog_prefix(); + if ( $user_id != $current_user->ID ) { + $cap = $wpdb->get_var( "SELECT meta_value FROM {$wpdb->usermeta} WHERE user_id = '{$user_id}' AND meta_key = '{$blog_prefix}capabilities' AND meta_value = 'a:0:{}'" ); + if ( !is_network_admin() && null == $cap && $_POST[ 'role' ] == '' ) { + $_POST[ 'role' ] = 'contributor'; + $delete_role = true; + } + } + if ( !isset( $errors ) || ( isset( $errors ) && is_object( $errors ) && false == $errors->get_error_codes() ) ) + $errors = edit_user($user_id); + if ( $delete_role ) // stops users being added to current blog when they are edited + delete_user_meta( $user_id, $blog_prefix . 'capabilities' ); + + if ( is_multisite() && is_network_admin() && !IS_PROFILE_PAGE && current_user_can( 'manage_network_options' ) && !isset($super_admins) && empty( $_POST['super_admin'] ) == is_super_admin( $user_id ) ) + empty( $_POST['super_admin'] ) ? revoke_super_admin( $user_id ) : grant_super_admin( $user_id ); +} + +if ( !is_wp_error( $errors ) ) { + $redirect = (IS_PROFILE_PAGE ? "profile.php?" : "user-edit.php?user_id=$user_id&"). "updated=true"; + if ( $wp_http_referer ) + $redirect = add_query_arg('wp_http_referer', urlencode($wp_http_referer), $redirect); + wp_redirect($redirect); + exit; +} + +default: +$profileuser = get_user_to_edit($user_id); + +if ( !current_user_can('edit_user', $user_id) ) + wp_die(__('You do not have permission to edit this user.')); + +include (ABSPATH . 'wp-admin/admin-header.php'); +?> + +ID ) && current_user_can( 'manage_network_options' ) ) { ?> +

    + + +
    +

    + +

    + +
    + + +

    \n

    ", $errors->get_error_messages() ); ?>

    + + +
    + +

    + + + + + +

    + +
    > + + + + +

    + + +

    + +

    + + + + + + + + + 1 && has_action('admin_color_scheme_picker') ) : ?> + + + + + + + + + + + + + + + +
    More information'); ?>
    +
    +
    +
    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +user_email != get_site_option( 'admin_email' ) ) : ?> +

    + +

    + +
    + +
    + +

    + + + + + + + + + + + + + $desc) { +?> + + + + + +
    + ID . '_new_email' ); + if ( $new_email && $new_email != $current_user->user_email ) : ?> +
    +

    %1$s. Cancel'), $new_email['newemail'], esc_url( self_admin_url( 'profile.php?dismiss=' . $current_user->ID . '_new_email' ) ) ); ?>

    +
    + +
    + +

    + + + + + + + + + + + + + +

    +

    +
    +
    +

    +
    + + + +caps) > count($profileuser->roles) && apply_filters('additional_capabilities_display', true, $profileuser) ) { ?> +
    + + + + + +
    caps as $cap => $value ) { + if ( !$wp_roles->is_role($cap) ) { + if ( $output != '' ) + $output .= ', '; + $output .= $value ? $cap : "Denied: {$cap}"; + } + } + echo $output; + ?>
    + + + + + + + +
    +
    + + + diff --git a/src/wp-admin/user-new.php b/src/wp-admin/user-new.php new file mode 100644 index 0000000..cef46a3 --- /dev/null +++ b/src/wp-admin/user-new.php @@ -0,0 +1,350 @@ + 'enter_email'), 'user-new.php' ) ); + die(); + } + } + + if ( !$user_details ) { + wp_redirect( add_query_arg( array('update' => 'does_not_exist'), 'user-new.php' ) ); + die(); + } + + if ( ! current_user_can('promote_user', $user_details->ID) ) + wp_die(__('Cheatin’ uh?')); + + // Adding an existing user to this blog + $new_user_email = esc_html(trim($_REQUEST['email'])); + $redirect = 'user-new.php'; + $username = $user_details->user_login; + $user_id = $user_details->ID; + if ( ( $username != null && !is_super_admin( $user_id ) ) && ( array_key_exists($blog_id, get_blogs_of_user($user_id)) ) ) { + $redirect = add_query_arg( array('update' => 'addexisting'), 'user-new.php' ); + } else { + if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) { + add_existing_user_to_blog( array( 'user_id' => $user_id, 'role' => $_REQUEST[ 'role' ] ) ); + $redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' ); + } else { + $newuser_key = substr( md5( $user_id ), 0, 5 ); + add_option( 'new_user_' . $newuser_key, array( 'user_id' => $user_id, 'email' => $user_details->user_email, 'role' => $_REQUEST[ 'role' ] ) ); + $message = __("Hi,\n\nYou have been invited to join '%s' at\n%s as a %s.\nPlease click the following link to confirm the invite:\n%s\n"); + wp_mail( $new_user_email, sprintf( __( '[%s] Joining confirmation' ), get_option( 'blogname' ) ), sprintf($message, get_option('blogname'), site_url(), $_REQUEST[ 'role' ], site_url("/newbloguser/$newuser_key/"))); + $redirect = add_query_arg( array('update' => 'add'), 'user-new.php' ); + } + } + wp_redirect( $redirect ); + die(); +} elseif ( isset($_REQUEST['action']) && 'createuser' == $_REQUEST['action'] ) { + check_admin_referer( 'create-user', '_wpnonce_create-user' ); + + if ( ! current_user_can('create_users') ) + wp_die(__('Cheatin’ uh?')); + + if ( !is_multisite() ) { + $user_id = add_user(); + + if ( is_wp_error( $user_id ) ) { + $add_user_errors = $user_id; + } else { + if ( current_user_can('edit_users') ) { + $new_user_login = apply_filters('pre_user_login', sanitize_user(stripslashes($_REQUEST['user_login']), true)); + $redirect = 'users.php?usersearch='. urlencode($new_user_login) . '&update=add' . '#user-' . $user_id; + } else { + $redirect = add_query_arg( 'update', 'add', 'user-new.php' ); + } + wp_redirect( $redirect ); + die(); + } + } else { + // Adding a new user to this blog + $user_details = wpmu_validate_user_signup( $_REQUEST[ 'user_login' ], $_REQUEST[ 'email' ] ); + unset( $user_details[ 'errors' ]->errors[ 'user_email_used' ] ); + if ( is_wp_error( $user_details[ 'errors' ] ) && !empty( $user_details[ 'errors' ]->errors ) ) { + $add_user_errors = $user_details[ 'errors' ]; + } else { + $new_user_login = apply_filters('pre_user_login', sanitize_user(stripslashes($_REQUEST['user_login']), true)); + if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) { + add_filter( 'wpmu_signup_user_notification', '__return_false' ); // Disable confirmation email + } + wpmu_signup_user( $new_user_login, $_REQUEST[ 'email' ], array( 'add_to_blog' => $wpdb->blogid, 'new_role' => $_REQUEST[ 'role' ] ) ); + if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) { + $key = $wpdb->get_var( $wpdb->prepare( "SELECT activation_key FROM {$wpdb->signups} WHERE user_login = %s AND user_email = %s", $new_user_login, $_REQUEST[ 'email' ] ) ); + wpmu_activate_signup( $key ); + $redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' ); + } else { + $redirect = add_query_arg( array('update' => 'newuserconfimation'), 'user-new.php' ); + } + wp_redirect( $redirect ); + die(); + } + } +} + + +$title = __('Add New User'); +$parent_file = 'users.php'; + +$do_both = false; +if ( is_multisite() && current_user_can('promote_users') && current_user_can('create_users') ) + $do_both = true; + +add_contextual_help($current_screen, + '

    ' . __('To add a new user to your site, fill in the form on this screen. If you’re not sure which role to assign, you can use the link below to review the different roles and their capabilities. Here is a basic overview of roles:') . '

    ' . + '
      ' . + '
    • ' . __('Administrators have access to all the administration features.') . '
    • ' . + '
    • ' . __('Editors can publish posts, manage posts as well as manage other people’s posts, etc.') . '
    • ' . + '
    • ' . __('Authors can publish and manage their own posts.') . '
    • ' . + '
    • ' . __('Contributors can write and manage their posts but not publish posts or upload media files.') . '
    • ' . + '
    • ' . __('Subscribers can read comments/comment/receive newsletters, etc.') . '
    • ' . + '
    ' . + '

    ' . __('You must assign a password to the new user, but don’t worry; when they log in for the first time they will be prompted to change it. The username, however, cannot be changed.') . '

    ' . + '

    ' . __('New users will receive an email letting them know they’ve been added as a user for your site. By default, this email will also contain their password. Uncheck the box if you don’t want the password to be included in the welcome email.') . '

    ' . + '

    ' . __('Remember to click the Add User button at the bottom of this screen when you are finished.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Adding New Users') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +wp_enqueue_script('wp-ajax-response'); +wp_enqueue_script('user-profile'); + +require_once ('admin-header.php'); + +if ( isset($_GET['update']) ) { + $messages = array(); + if ( is_multisite() ) { + switch ( $_GET['update'] ) { + case "newuserconfimation": + $messages[] = __('Invitation email sent to new user. A confirmation link must be clicked before their account is created.'); + break; + case "add": + $messages[] = __('Invitation email sent to user. A confirmation link must be clicked for them to be added to your site.'); + break; + case "addnoconfirmation": + $messages[] = __('User has been added to your site.'); + break; + case "addexisting": + $messages[] = __('That user is already a member of this site.'); + break; + case "does_not_exist": + $messages[] = __('The requested user does not exist.'); + break; + case "does_not_exist": + $messages[] = __('Please enter a valid email address.'); + break; + } + } else { + if ( 'add' == $_GET['update'] ) + $messages[] = __('User added.'); + } +} +?> +
    + +

    +

    + + +
    +
      + get_error_messages() as $err ) + echo "
    • $err
    • \n"; + ?> +
    +
    +

    ' . $msg . '

    '; +} ?> + + +
    + get_error_messages() as $message ) + echo "

    $message

    "; + ?> +
    + +
    + +' . __('Add Existing User') . ''; + if ( !is_super_admin() ) { + _e( 'Enter the email address of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite.' ); + $label = __('E-mail'); + } else { + _e( 'Enter the email address or username of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite.' ); + $label = __('E-mail or Username'); + } +?> +
    > + + + + + + + + + + + + + + + + + + +
    +
    + 'addusersub' ) ); ?> +
    +' . __( 'Add New User' ) . ''; +?> +

    +
    > + + + 'login', 'first_name' => 'firstname', 'last_name' => 'lastname', + 'email' => 'email', 'url' => 'uri', 'role' => 'role', 'send_password' => 'send_password', 'noconfirmation' => 'ignore_pass' ) as $post_field => $var ) { + $var = "new_user_$var"; + if( isset( $_POST['createuser'] ) ) { + if ( ! isset($$var) ) + $$var = isset( $_POST[$post_field] ) ? stripslashes( $_POST[$post_field] ) : ''; + } else { + $$var = false; + } +} + +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +

    +
    +
    + + 'createusersub' ) ); ?> + +
    + + + diff --git a/src/wp-admin/user/admin.php b/src/wp-admin/user/admin.php new file mode 100644 index 0000000..6aebd88 --- /dev/null +++ b/src/wp-admin/user/admin.php @@ -0,0 +1,27 @@ +domain != $current_site->domain ) || ( $current_blog->path != $current_site->path ) ); +$redirect_user_admin_request = apply_filters( 'redirect_user_admin_request', $redirect_user_admin_request ); +if ( $redirect_user_admin_request ) { + wp_redirect( user_admin_url() ); + exit; +} +unset( $redirect_user_admin_request ); + +?> diff --git a/src/wp-admin/user/index-extra.php b/src/wp-admin/user/index-extra.php new file mode 100644 index 0000000..4881263 --- /dev/null +++ b/src/wp-admin/user/index-extra.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/src/wp-admin/user/profile.php b/src/wp-admin/user/profile.php new file mode 100644 index 0000000..b55ba1c --- /dev/null +++ b/src/wp-admin/user/profile.php @@ -0,0 +1,12 @@ +get_pagenum(); +$title = __('Users'); +$parent_file = 'users.php'; + +add_screen_option( 'per_page', array('label' => _x( 'Users', 'users per page (screen options)' )) ); + +// contextual help - choose Help on the top right of admin panel to preview this. +add_contextual_help($current_screen, + '

    ' . __('This screen lists all the existing users for your site. Each user has one of five defined roles as set by the site admin: Site Administrator, Editor, Author, Contributor, or Subscriber. Users with roles other than Administrator will see fewer options in the dashboard navigation when they are logged in, based on their role.') . '

    ' . + '

    ' . __('You can customize the display of information on this screen as you can on other screens, by using the Screen Options tab and the on-screen filters.') . '

    ' . + '

    ' . __('To add a new user for your site, click the Add New button at the top of the screen or Add New in the Users menu section.') . '

    ' . + '

    ' . __('For more information:') . '

    ' . + '

    ' . __('Documentation on Managing Users') . '

    ' . + '

    ' . __('Descriptions of Roles and Capabilities') . '

    ' . + '

    ' . __('Support Forums') . '

    ' +); + +if ( empty($_REQUEST) ) { + $referer = ''; +} elseif ( isset($_REQUEST['wp_http_referer']) ) { + $redirect = remove_query_arg(array('wp_http_referer', 'updated', 'delete_count'), stripslashes($_REQUEST['wp_http_referer'])); + $referer = ''; +} else { + $redirect = 'users.php'; + $referer = ''; +} + +$update = ''; + +switch ( $wp_list_table->current_action() ) { + +/* Bulk Dropdown menu Role changes */ +case 'promote': + check_admin_referer('bulk-users'); + + if ( ! current_user_can( 'promote_users' ) ) + wp_die( __( 'You can’t edit that user.' ) ); + + if ( empty($_REQUEST['users']) ) { + wp_redirect($redirect); + exit(); + } + + $editable_roles = get_editable_roles(); + if ( empty( $editable_roles[$_REQUEST['new_role']] ) ) + wp_die(__('You can’t give users that role.')); + + $userids = $_REQUEST['users']; + $update = 'promote'; + foreach ( $userids as $id ) { + $id = (int) $id; + + if ( ! current_user_can('promote_user', $id) ) + wp_die(__('You can’t edit that user.')); + // The new role of the current user must also have promote_users caps + if ( $id == $current_user->ID && !$wp_roles->role_objects[$_REQUEST['new_role']]->has_cap('promote_users') ) { + $update = 'err_admin_role'; + continue; + } + + // If the user doesn't already belong to the blog, bail. + if ( is_multisite() && !is_user_member_of_blog( $id ) ) + wp_die(__('Cheatin’ uh?')); + + $user = new WP_User($id); + $user->set_role($_REQUEST['new_role']); + } + + wp_redirect(add_query_arg('update', $update, $redirect)); + exit(); + +break; + +case 'dodelete': + if ( is_multisite() ) + wp_die( __('User deletion is not allowed from this screen.') ); + + check_admin_referer('delete-users'); + + if ( empty($_REQUEST['users']) ) { + wp_redirect($redirect); + exit(); + } + + if ( ! current_user_can( 'delete_users' ) ) + wp_die(__('You can’t delete users.')); + + $userids = $_REQUEST['users']; + $update = 'del'; + $delete_count = 0; + + foreach ( (array) $userids as $id) { + $id = (int) $id; + + if ( ! current_user_can( 'delete_user', $id ) ) + wp_die(__( 'You can’t delete that user.' ) ); + + if ( $id == $current_user->ID ) { + $update = 'err_admin_del'; + continue; + } + switch ( $_REQUEST['delete_option'] ) { + case 'delete': + if ( current_user_can('delete_user', $id) ) + wp_delete_user($id); + break; + case 'reassign': + if ( current_user_can('delete_user', $id) ) + wp_delete_user($id, $_REQUEST['reassign_user']); + break; + } + ++$delete_count; + } + + $redirect = add_query_arg( array('delete_count' => $delete_count, 'update' => $update), $redirect); + wp_redirect($redirect); + exit(); + +break; + +case 'delete': + if ( is_multisite() ) + wp_die( __('User deletion is not allowed from this screen.') ); + + check_admin_referer('bulk-users'); + + if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) { + wp_redirect($redirect); + exit(); + } + + if ( ! current_user_can( 'delete_users' ) ) + $errors = new WP_Error( 'edit_users', __( 'You can’t delete users.' ) ); + + if ( empty($_REQUEST['users']) ) + $userids = array(intval($_REQUEST['user'])); + else + $userids = (array) $_REQUEST['users']; + + include ('admin-header.php'); +?> +
    + + + +
    + +

    +

    +
      +ID ) { + echo "
    • " . sprintf(__('ID #%1s: %2s The current user will not be deleted.'), $id, $user->user_login) . "
    • \n"; + } else { + echo "
    • " . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "
    • \n"; + $go_delete++; + } + } + ?> +
    + +

    +
      +
    • +
    • + '.__('Attribute all posts and links to:').''; + wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?>
    • +
    + + + +

    + +
    +
    +id && !is_super_admin() ) { + $update = 'err_admin_remove'; + continue; + } + if ( !current_user_can('remove_user', $id) ) { + $update = 'err_admin_remove'; + continue; + } + remove_user_from_blog($id, $blog_id); + } + + $redirect = add_query_arg( array('update' => $update), $redirect); + wp_redirect($redirect); + exit; + +break; + +case 'remove': + + check_admin_referer('bulk-users'); + + if ( ! is_multisite() ) + wp_die( __( 'You can’t remove users.' ) ); + + if ( empty($_REQUEST['users']) && empty($_REQUEST['user']) ) { + wp_redirect($redirect); + exit(); + } + + if ( !current_user_can('remove_users') ) + $error = new WP_Error('edit_users', __('You can’t remove users.')); + + if ( empty($_REQUEST['users']) ) + $userids = array(intval($_REQUEST['user'])); + else + $userids = $_REQUEST['users']; + + include ('admin-header.php'); +?> +
    + + + +
    + +

    +

    +
      +id && !is_super_admin() ) { + echo "
    • " . sprintf(__('ID #%1s: %2s The current user will not be removed.'), $id, $user->user_login) . "
    • \n"; + } elseif ( !current_user_can('remove_user', $id) ) { + echo "
    • " . sprintf(__('ID #%1s: %2s You don\'t have permission to remove this user.'), $id, $user->user_login) . "
    • \n"; + } else { + echo "
    • " . sprintf(__('ID #%1s: %2s'), $id, $user->user_login) . "
    • \n"; + $go_remove = true; + } + } + ?> + + + + +

      + +
    +
    +prepare_items(); + $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); + if ( $pagenum > $total_pages && $total_pages > 0 ) { + wp_redirect( add_query_arg( 'paged', $total_pages ) ); + exit; + } + include('./admin-header.php'); + + $messages = array(); + if ( isset($_GET['update']) ) : + switch($_GET['update']) { + case 'del': + case 'del_many': + $delete_count = isset($_GET['delete_count']) ? (int) $_GET['delete_count'] : 0; + $messages[] = '

    ' . sprintf(_n('%s user deleted', '%s users deleted', $delete_count), $delete_count) . '

    '; + break; + case 'add': + $messages[] = '

    ' . __('New user created.') . '

    '; + break; + case 'promote': + $messages[] = '

    ' . __('Changed roles.') . '

    '; + break; + case 'err_admin_role': + $messages[] = '

    ' . __('The current user’s role must have user editing capabilities.') . '

    '; + $messages[] = '

    ' . __('Other user roles have been changed.') . '

    '; + break; + case 'err_admin_del': + $messages[] = '

    ' . __('You can’t delete the current user.') . '

    '; + $messages[] = '

    ' . __('Other users have been deleted.') . '

    '; + break; + case 'remove': + $messages[] = '

    ' . __('User removed from this site.') . '

    '; + break; + case 'err_admin_remove': + $messages[] = '

    ' . __("You can't remove the current user.") . '

    '; + $messages[] = '

    ' . __('Other users have been removed.') . '

    '; + break; + } + endif; ?> + + +
    +
      + get_error_messages() as $err ) + echo "
    • $err
    • \n"; + ?> +
    +
    + + +
    + +

    + + + + +' . __('Search results for “%s”') . '', esc_html( $usersearch ) ); ?> +

    + +views(); ?> + +
    + +search_box( __( 'Search Users' ), 'user' ); ?> + +display(); ?> +
    + +
    +
    +' . __('Widgets are independent sections of content that can be placed into any widgetized area provided by your theme (commonly called sidebars). To populate your sidebars/widget areas with individual widgets, drag and drop the title bars into the desired area. By default, only the first widget area is expanded. To populate additional widget areas, click on their title bars to expand them.') . '

    +

    ' . __('The Available Widgets section contains all the widgets you can choose from. Once you drag a widget into a sidebar, it will open to allow you to configure its settings. When you are happy with the widget settings, click the Save button and the widget will go live on your site. If you click Delete, it will remove the widget.') . '

    +

    ' . __('If you want to remove the widget but save its setting for possible future use, just drag it into the Inactive Widgets area. You can add them back anytime from there. This is especially helpful when you switch to a theme with fewer or different widget areas.') . '

    +

    ' . __('Widgets may be used multiple times. You can give each widget a title, to display on your site, but it’s not required.') . '

    +

    ' . __('Enabling Accessibility Mode, via Screen Options, allows you to use Add and Edit buttons instead of using drag and drop.') . '

    +

    ' . __('Many themes show some sidebar widgets by default until you edit your sidebars, but they are not automatically displayed in your sidebar management tool. After you make your first widget change, you can re-add the default widgets by adding them from the Available Widgets area.') . '

    +'; +$help .= '

    ' . __('For more information:') . '

    '; +$help .= '

    ' . __('Documentation on Widgets') . '

    '; +$help .= '

    ' . __('Support Forums') . '

    '; +add_contextual_help($current_screen, $help); + +// register the inactive_widgets area as sidebar +register_sidebar(array( + 'name' => __('Inactive Widgets'), + 'id' => 'wp_inactive_widgets', + 'description' => '', + 'before_widget' => '', + 'after_widget' => '', + 'before_title' => '', + 'after_title' => '', +)); + +// These are the widgets grouped by sidebar +$sidebars_widgets = wp_get_sidebars_widgets(); +if ( empty( $sidebars_widgets ) ) + $sidebars_widgets = wp_get_widget_defaults(); + +// look for "lost" widgets, this has to run at least on each theme change +function retrieve_widgets() { + global $wp_registered_widget_updates, $wp_registered_sidebars, $sidebars_widgets, $wp_registered_widgets; + + $_sidebars_widgets = array(); + $sidebars = array_keys($wp_registered_sidebars); + + unset( $sidebars_widgets['array_version'] ); + + $old = array_keys($sidebars_widgets); + sort($old); + sort($sidebars); + + if ( $old == $sidebars ) + return; + + // Move the known-good ones first + foreach ( $sidebars as $id ) { + if ( array_key_exists( $id, $sidebars_widgets ) ) { + $_sidebars_widgets[$id] = $sidebars_widgets[$id]; + unset($sidebars_widgets[$id], $sidebars[$id]); + } + } + + // if new theme has less sidebars than the old theme + if ( !empty($sidebars_widgets) ) { + foreach ( $sidebars_widgets as $lost => $val ) { + if ( is_array($val) ) + $_sidebars_widgets['wp_inactive_widgets'] = array_merge( (array) $_sidebars_widgets['wp_inactive_widgets'], $val ); + } + } + + // discard invalid, theme-specific widgets from sidebars + $shown_widgets = array(); + foreach ( $_sidebars_widgets as $sidebar => $widgets ) { + if ( !is_array($widgets) ) + continue; + + $_widgets = array(); + foreach ( $widgets as $widget ) { + if ( isset($wp_registered_widgets[$widget]) ) + $_widgets[] = $widget; + } + $_sidebars_widgets[$sidebar] = $_widgets; + $shown_widgets = array_merge($shown_widgets, $_widgets); + } + + $sidebars_widgets = $_sidebars_widgets; + unset($_sidebars_widgets, $_widgets); + + // find hidden/lost multi-widget instances + $lost_widgets = array(); + foreach ( $wp_registered_widgets as $key => $val ) { + if ( in_array($key, $shown_widgets, true) ) + continue; + + $number = preg_replace('/.+?-([0-9]+)$/', '$1', $key); + + if ( 2 > (int) $number ) + continue; + + $lost_widgets[] = $key; + } + + $sidebars_widgets['wp_inactive_widgets'] = array_merge($lost_widgets, (array) $sidebars_widgets['wp_inactive_widgets']); + wp_set_sidebars_widgets($sidebars_widgets); +} +retrieve_widgets(); + +if ( count($wp_registered_sidebars) == 1 ) { + // If only "wp_inactive_widgets" is defined the theme has no sidebars, die. + require_once( './admin-header.php' ); +?> + +
    + +

    +
    +

    +
    +

    follow these instructions.' ); ?>

    +
    + + $val ) { + if ( is_array($val) && preg_match('/__i__|%i%/', key($val)) ) { + $_POST[$key] = array( $number => array_shift($val) ); + break; + } + } + } + + $sidebar_id = $_POST['sidebar']; + $position = isset($_POST[$sidebar_id . '_position']) ? (int) $_POST[$sidebar_id . '_position'] - 1 : 0; + + $id_base = $_POST['id_base']; + $sidebar = isset($sidebars_widgets[$sidebar_id]) ? $sidebars_widgets[$sidebar_id] : array(); + + // delete + if ( isset($_POST['removewidget']) && $_POST['removewidget'] ) { + + if ( !in_array($widget_id, $sidebar, true) ) { + wp_redirect( admin_url('widgets.php?error=0') ); + exit; + } + + $sidebar = array_diff( $sidebar, array($widget_id) ); + $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1'); + } + + $_POST['widget-id'] = $sidebar; + + foreach ( (array) $wp_registered_widget_updates as $name => $control ) { + if ( $name != $id_base || !is_callable($control['callback']) ) + continue; + + ob_start(); + call_user_func_array( $control['callback'], $control['params'] ); + ob_end_clean(); + + break; + } + + $sidebars_widgets[$sidebar_id] = $sidebar; + + // remove old position + if ( !isset($_POST['delete_widget']) ) { + foreach ( $sidebars_widgets as $key => $sb ) { + if ( is_array($sb) ) + $sidebars_widgets[$key] = array_diff( $sb, array($widget_id) ); + } + array_splice( $sidebars_widgets[$sidebar_id], $position, 0, $widget_id ); + } + + wp_set_sidebars_widgets($sidebars_widgets); + wp_redirect( admin_url('widgets.php?message=0') ); + exit; +} + +// Output the widget form without js +if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) { + $widget_id = $_GET['editwidget']; + + if ( isset($_GET['addnew']) ) { + // Default to the first sidebar + $sidebar = array_shift( $keys = array_keys($wp_registered_sidebars) ); + + if ( isset($_GET['base']) && isset($_GET['num']) ) { // multi-widget + // Copy minimal info from an existing instance of this widget to a new instance + foreach ( $wp_registered_widget_controls as $control ) { + if ( $_GET['base'] === $control['id_base'] ) { + $control_callback = $control['callback']; + $multi_number = (int) $_GET['num']; + $control['params'][0]['number'] = -1; + $widget_id = $control['id'] = $control['id_base'] . '-' . $multi_number; + $wp_registered_widget_controls[$control['id']] = $control; + break; + } + } + } + } + + if ( isset($wp_registered_widget_controls[$widget_id]) && !isset($control) ) { + $control = $wp_registered_widget_controls[$widget_id]; + $control_callback = $control['callback']; + } elseif ( !isset($wp_registered_widget_controls[$widget_id]) && isset($wp_registered_widgets[$widget_id]) ) { + $name = esc_html( strip_tags($wp_registered_widgets[$widget_id]['name']) ); + } + + if ( !isset($name) ) + $name = esc_html( strip_tags($control['name']) ); + + if ( !isset($sidebar) ) + $sidebar = isset($_GET['sidebar']) ? $_GET['sidebar'] : 'wp_inactive_widgets'; + + if ( !isset($multi_number) ) + $multi_number = isset($control['params'][0]['number']) ? $control['params'][0]['number'] : ''; + + $id_base = isset($control['id_base']) ? $control['id_base'] : $control['id']; + + // show the widget form + $width = ' style="width:' . max($control['width'], 350) . 'px"'; + $key = isset($_GET['key']) ? (int) $_GET['key'] : 0; + + require_once( './admin-header.php' ); ?> +
    + +

    +
    > +

    + +
    +
    +' . __('There are no options for this widget.') . "

    \n"; ?> +
    + +

    +
    + + $sbvalue ) { + echo "\t\t\n"; + } ?> +
    "; + if ( 'wp_inactive_widgets' == $sbname ) { + echo ' '; + } else { + if ( !isset($sidebars_widgets[$sbname]) || !is_array($sidebars_widgets[$sbname]) ) { + $j = 1; + $sidebars_widgets[$sbname] = array(); + } else { + $j = count($sidebars_widgets[$sbname]); + if ( isset($_GET['addnew']) || !in_array($widget_id, $sidebars_widgets[$sbname], true) ) + $j++; + } + $selected = ''; + echo "\t\t\n"; + } + echo "
    +
    + +
    + + + + + + + +
    +
    +
    +
    +
    + + +
    + +

    + + +

    + + +

    + + + + +
    +
    +
    + +
    +

    +
    + +
    +
    +
    +
    +
    + +
    + +
    +

    + +
    +
    +
    +
    +
    + +
    +
    + $registered_sidebar ) { + if ( 'wp_inactive_widgets' == $sidebar ) + continue; + $closed = $i ? ' closed' : ''; ?> +
    + + +
    + +
    +
    +
    + +
    +
    +
    + +script_name = array_pop( explode( '/', $_SERVER['SCRIPT_NAME'] ) ); + $this->app_base = site_url( $this->script_name . '/' ); + + $this->selectors = array( + '@/service$@' => + array('GET' => 'get_service'), + '@/categories$@' => + array('GET' => 'get_categories_xml'), + '@/post/(\d+)$@' => + array('GET' => 'get_post', + 'PUT' => 'put_post', + 'DELETE' => 'delete_post'), + '@/posts/?(\d+)?$@' => + array('GET' => 'get_posts', + 'POST' => 'create_post'), + '@/attachments/?(\d+)?$@' => + array('GET' => 'get_attachment', + 'POST' => 'create_attachment'), + '@/attachment/file/(\d+)$@' => + array('GET' => 'get_file', + 'PUT' => 'put_file', + 'DELETE' => 'delete_file'), + '@/attachment/(\d+)$@' => + array('GET' => 'get_attachment', + 'PUT' => 'put_attachment', + 'DELETE' => 'delete_attachment'), + ); + } + + /** + * Handle ATOMPUB request. + * + * @since 2.2.0 + */ + function handle_request() { + global $always_authenticate; + + if ( !empty( $_SERVER['ORIG_PATH_INFO'] ) ) + $path = $_SERVER['ORIG_PATH_INFO']; + else + $path = $_SERVER['PATH_INFO']; + + $method = $_SERVER['REQUEST_METHOD']; + + log_app('REQUEST',"$method $path\n================"); + + $this->process_conditionals(); + //$this->process_conditionals(); + + // exception case for HEAD (treat exactly as GET, but don't output) + if ($method == 'HEAD') { + $this->do_output = false; + $method = 'GET'; + } + + // redirect to /service in case no path is found. + if (strlen($path) == 0 || $path == '/') + $this->redirect($this->get_service_url()); + + // check to see if AtomPub is enabled + if ( !get_option( 'enable_app' ) ) + $this->forbidden( sprintf( __( 'AtomPub services are disabled on this site. An admin user can enable them at %s' ), admin_url('options-writing.php') ) ); + + // dispatch + foreach ( $this->selectors as $regex => $funcs ) { + if ( preg_match($regex, $path, $matches) ) { + if ( isset($funcs[$method]) ) { + + // authenticate regardless of the operation and set the current + // user. each handler will decide if auth is required or not. + if ( !$this->authenticate() ) { + if ( $always_authenticate ) + $this->auth_required('Credentials required.'); + } + + array_shift($matches); + call_user_func_array(array(&$this,$funcs[$method]), $matches); + exit(); + } else { + // only allow what we have handlers for... + $this->not_allowed(array_keys($funcs)); + } + } + } + + // oops, nothing found + $this->not_found(); + } + + /** + * Retrieve XML for ATOMPUB service. + * + * @since 2.2.0 + */ + function get_service() { + log_app('function','get_service()'); + + if ( !current_user_can( 'edit_posts' ) ) + $this->auth_required( __( 'Sorry, you do not have the right to access this site.' ) ); + + $entries_url = esc_attr($this->get_entries_url()); + $categories_url = esc_attr($this->get_categories_url()); + $media_url = esc_attr($this->get_attachments_url()); + $accepted_media_types = ''; + foreach ($this->media_content_types as $med) { + $accepted_media_types = $accepted_media_types . "" . $med . ""; + } + $atom_prefix="atom"; + $atom_blogname = get_bloginfo('name'); + $service_doc = << + + <$atom_prefix:title>$atom_blogname Workspace + + <$atom_prefix:title>$atom_blogname Posts + $this->ATOM_CONTENT_TYPE;type=entry + + + + <$atom_prefix:title>$atom_blogname Media + $accepted_media_types + + + + +EOD; + + $this->output($service_doc, $this->SERVICE_CONTENT_TYPE); + } + + /** + * Retrieve categories list in XML format. + * + * @since 2.2.0 + */ + function get_categories_xml() { + log_app('function','get_categories_xml()'); + + if ( !current_user_can( 'edit_posts' ) ) + $this->auth_required( __( 'Sorry, you do not have the right to access this site.' ) ); + + $home = esc_attr(get_bloginfo_rss('url')); + + $categories = ""; + $cats = get_categories(array('hierarchical' => 0, 'hide_empty' => 0)); + foreach ( (array) $cats as $cat ) { + $categories .= " name) . "\" />\n"; + } + $output = << + $categories + +EOD; + $this->output($output, $this->CATEGORIES_CONTENT_TYPE); + } + + /** + * Create new post. + * + * @since 2.2.0 + */ + function create_post() { + global $user_ID; + $this->get_accepted_content_type($this->atom_content_types); + + $parser = new AtomParser(); + if ( !$parser->parse() ) + $this->client_error(); + + $entry = array_pop($parser->feed->entries); + + log_app('Received entry:', print_r($entry,true)); + + $catnames = array(); + foreach ( $entry->categories as $cat ) { + array_push($catnames, $cat["term"]); + } + + $wp_cats = get_categories(array('hide_empty' => false)); + + $post_category = array(); + + foreach ( $wp_cats as $cat ) { + if ( in_array($cat->name, $catnames) ) + array_push($post_category, $cat->term_id); + } + + $publish = ! ( isset( $entry->draft ) && 'yes' == trim( $entry->draft ) ); + + $cap = ($publish) ? 'publish_posts' : 'edit_posts'; + + if ( !current_user_can($cap) ) + $this->auth_required(__('Sorry, you do not have the right to edit/publish new posts.')); + + $blog_ID = get_current_blog_id(); + $post_status = ($publish) ? 'publish' : 'draft'; + $post_author = (int) $user_ID; + $post_title = $entry->title[1]; + $post_content = $entry->content[1]; + $post_excerpt = $entry->summary[1]; + $pubtimes = $this->get_publish_time($entry->published); + $post_date = $pubtimes[0]; + $post_date_gmt = $pubtimes[1]; + + if ( isset( $_SERVER['HTTP_SLUG'] ) ) + $post_name = $_SERVER['HTTP_SLUG']; + + $post_data = compact('blog_ID', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_name'); + + $this->escape($post_data); + log_app('Inserting Post. Data:', print_r($post_data,true)); + + $postID = wp_insert_post($post_data); + if ( is_wp_error( $postID ) ) + $this->internal_error($postID->get_error_message()); + + if ( !$postID ) + $this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.')); + + // getting warning here about unable to set headers + // because something in the cache is printing to the buffer + // could we clean up wp_set_post_categories or cache to not print + // this could affect our ability to send back the right headers + @wp_set_post_categories($postID, $post_category); + + do_action( 'atompub_create_post', $postID, $entry ); + + $output = $this->get_entry($postID); + + log_app('function',"create_post($postID)"); + $this->created($postID, $output); + } + + /** + * Retrieve post. + * + * @since 2.2.0 + * + * @param int $postID Post ID. + */ + function get_post($postID) { + global $entry; + + if ( !current_user_can( 'edit_post', $postID ) ) + $this->auth_required( __( 'Sorry, you do not have the right to access this post.' ) ); + + $this->set_current_entry($postID); + $output = $this->get_entry($postID); + log_app('function',"get_post($postID)"); + $this->output($output); + + } + + /** + * Update post. + * + * @since 2.2.0 + * + * @param int $postID Post ID. + */ + function put_post($postID) { + // checked for valid content-types (atom+xml) + // quick check and exit + $this->get_accepted_content_type($this->atom_content_types); + + $parser = new AtomParser(); + if ( !$parser->parse() ) + $this->bad_request(); + + $parsed = array_pop($parser->feed->entries); + + log_app('Received UPDATED entry:', print_r($parsed,true)); + + // check for not found + global $entry; + $this->set_current_entry($postID); + + if ( !current_user_can('edit_post', $entry['ID']) ) + $this->auth_required(__('Sorry, you do not have the right to edit this post.')); + + $publish = ! ( isset($parsed->draft) && 'yes' == trim($parsed->draft) ); + $post_status = ($publish) ? 'publish' : 'draft'; + + extract($entry); + + $post_title = $parsed->title[1]; + $post_content = $parsed->content[1]; + $post_excerpt = $parsed->summary[1]; + $pubtimes = $this->get_publish_time($entry->published); + $post_date = $pubtimes[0]; + $post_date_gmt = $pubtimes[1]; + $pubtimes = $this->get_publish_time($parsed->updated); + $post_modified = $pubtimes[0]; + $post_modified_gmt = $pubtimes[1]; + + $postdata = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt'); + $this->escape($postdata); + + $result = wp_update_post($postdata); + + if ( !$result ) + $this->internal_error(__('For some strange yet very annoying reason, this post could not be edited.')); + + do_action( 'atompub_put_post', $ID, $parsed ); + + log_app('function',"put_post($postID)"); + $this->ok(); + } + + /** + * Remove post. + * + * @since 2.2.0 + * + * @param int $postID Post ID. + */ + function delete_post($postID) { + + // check for not found + global $entry; + $this->set_current_entry($postID); + + if ( !current_user_can('edit_post', $postID) ) + $this->auth_required(__('Sorry, you do not have the right to delete this post.')); + + if ( $entry['post_type'] == 'attachment' ) { + $this->delete_attachment($postID); + } else { + $result = wp_delete_post($postID); + + if ( !$result ) { + $this->internal_error(__('For some strange yet very annoying reason, this post could not be deleted.')); + } + + log_app('function',"delete_post($postID)"); + $this->ok(); + } + + } + + /** + * Retrieve attachment. + * + * @since 2.2.0 + * + * @param int $postID Optional. Post ID. + */ + function get_attachment($postID = null) { + if ( !current_user_can( 'upload_files' ) ) + $this->auth_required( __( 'Sorry, you do not have permission to upload files.' ) ); + + if ( !isset($postID) ) { + $this->get_attachments(); + } else { + $this->set_current_entry($postID); + $output = $this->get_entry($postID, 'attachment'); + log_app('function',"get_attachment($postID)"); + $this->output($output); + } + } + + /** + * Create new attachment. + * + * @since 2.2.0 + */ + function create_attachment() { + + $type = $this->get_accepted_content_type(); + + if ( !current_user_can('upload_files') ) + $this->auth_required(__('You do not have permission to upload files.')); + + $fp = fopen("php://input", "rb"); + $bits = null; + while ( !feof($fp) ) { + $bits .= fread($fp, 4096); + } + fclose($fp); + + $slug = ''; + if ( isset( $_SERVER['HTTP_SLUG'] ) ) + $slug = $_SERVER['HTTP_SLUG']; + elseif ( isset( $_SERVER['HTTP_TITLE'] ) ) + $slug = $_SERVER['HTTP_TITLE']; + elseif ( empty( $slug ) ) // just make a random name + $slug = substr( md5( uniqid( microtime() ) ), 0, 7); + $ext = preg_replace( '|.*/([a-z0-9]+)|', '$1', $_SERVER['CONTENT_TYPE'] ); + $slug = sanitize_file_name( "$slug.$ext" ); + $file = wp_upload_bits( $slug, NULL, $bits); + + log_app('wp_upload_bits returns:',print_r($file,true)); + + $url = $file['url']; + $file = $file['file']; + + do_action('wp_create_file_in_uploads', $file); // replicate + + // Construct the attachment array + $attachment = array( + 'post_title' => $slug, + 'post_content' => $slug, + 'post_status' => 'attachment', + 'post_parent' => 0, + 'post_mime_type' => $type, + 'guid' => $url + ); + + // Save the data + $postID = wp_insert_attachment($attachment, $file); + + if (!$postID) + $this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.')); + + $output = $this->get_entry($postID, 'attachment'); + + $this->created($postID, $output, 'attachment'); + log_app('function',"create_attachment($postID)"); + } + + /** + * Update attachment. + * + * @since 2.2.0 + * + * @param int $postID Post ID. + */ + function put_attachment($postID) { + // checked for valid content-types (atom+xml) + // quick check and exit + $this->get_accepted_content_type($this->atom_content_types); + + $parser = new AtomParser(); + if (!$parser->parse()) { + $this->bad_request(); + } + + $parsed = array_pop($parser->feed->entries); + + // check for not found + global $entry; + $this->set_current_entry($postID); + + if ( !current_user_can('edit_post', $entry['ID']) ) + $this->auth_required(__('Sorry, you do not have the right to edit this post.')); + + extract($entry); + + $post_title = $parsed->title[1]; + $post_content = $parsed->summary[1]; + $pubtimes = $this->get_publish_time($parsed->updated); + $post_modified = $pubtimes[0]; + $post_modified_gmt = $pubtimes[1]; + + $postdata = compact('ID', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'post_modified', 'post_modified_gmt'); + $this->escape($postdata); + + $result = wp_update_post($postdata); + + if ( !$result ) + $this->internal_error(__('For some strange yet very annoying reason, this post could not be edited.')); + + log_app('function',"put_attachment($postID)"); + $this->ok(); + } + + /** + * Remove attachment. + * + * @since 2.2.0 + * + * @param int $postID Post ID. + */ + function delete_attachment($postID) { + log_app('function',"delete_attachment($postID). File '$location' deleted."); + + // check for not found + global $entry; + $this->set_current_entry($postID); + + if ( !current_user_can('edit_post', $postID) ) + $this->auth_required(__('Sorry, you do not have the right to delete this post.')); + + $location = get_post_meta($entry['ID'], '_wp_attached_file', true); + $filetype = wp_check_filetype($location); + + if ( !isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']) ) + $this->internal_error(__('Error occurred while accessing post metadata for file location.')); + + // delete file + @unlink($location); + + // delete attachment + $result = wp_delete_post($postID); + + if ( !$result ) + $this->internal_error(__('For some strange yet very annoying reason, this post could not be deleted.')); + + log_app('function',"delete_attachment($postID). File '$location' deleted."); + $this->ok(); + } + + /** + * Retrieve attachment from post. + * + * @since 2.2.0 + * + * @param int $postID Post ID. + */ + function get_file($postID) { + + // check for not found + global $entry; + $this->set_current_entry($postID); + + // then whether user can edit the specific post + if ( !current_user_can('edit_post', $postID) ) + $this->auth_required(__('Sorry, you do not have the right to edit this post.')); + + $location = get_post_meta($entry['ID'], '_wp_attached_file', true); + $location = get_option ('upload_path') . '/' . $location; + $filetype = wp_check_filetype($location); + + if ( !isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext']) ) + $this->internal_error(__('Error occurred while accessing post metadata for file location.')); + + status_header('200'); + header('Content-Type: ' . $entry['post_mime_type']); + header('Connection: close'); + + if ( $fp = fopen($location, "rb") ) { + status_header('200'); + header('Content-Type: ' . $entry['post_mime_type']); + header('Connection: close'); + + while ( !feof($fp) ) { + echo fread($fp, 4096); + } + + fclose($fp); + } else { + status_header ('404'); + } + + log_app('function',"get_file($postID)"); + exit; + } + + /** + * Upload file to blog and add attachment to post. + * + * @since 2.2.0 + * + * @param int $postID Post ID. + */ + function put_file($postID) { + + // first check if user can upload + if ( !current_user_can('upload_files') ) + $this->auth_required(__('You do not have permission to upload files.')); + + // check for not found + global $entry; + $this->set_current_entry($postID); + + // then whether user can edit the specific post + if ( !current_user_can('edit_post', $postID) ) + $this->auth_required(__('Sorry, you do not have the right to edit this post.')); + + $upload_dir = wp_upload_dir( ); + $location = get_post_meta($entry['ID'], '_wp_attached_file', true); + $filetype = wp_check_filetype($location); + + $location = "{$upload_dir['basedir']}/{$location}"; + + if (!isset($location) || 'attachment' != $entry['post_type'] || empty($filetype['ext'])) + $this->internal_error(__('Error occurred while accessing post metadata for file location.')); + + $fp = fopen("php://input", "rb"); + $localfp = fopen($location, "w+"); + while ( !feof($fp) ) { + fwrite($localfp,fread($fp, 4096)); + } + fclose($fp); + fclose($localfp); + + $ID = $entry['ID']; + $pubtimes = $this->get_publish_time($entry->published); + $post_date = $pubtimes[0]; + $post_date_gmt = $pubtimes[1]; + $pubtimes = $this->get_publish_time($parsed->updated); + $post_modified = $pubtimes[0]; + $post_modified_gmt = $pubtimes[1]; + + $post_data = compact('ID', 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt'); + $result = wp_update_post($post_data); + + if ( !$result ) + $this->internal_error(__('Sorry, your entry could not be posted. Something wrong happened.')); + + wp_update_attachment_metadata( $postID, wp_generate_attachment_metadata( $postID, $location ) ); + + log_app('function',"put_file($postID)"); + $this->ok(); + } + + /** + * Retrieve entries URL. + * + * @since 2.2.0 + * + * @param int $page Page ID. + * @return string + */ + function get_entries_url($page = null) { + if ( isset($GLOBALS['post_type']) && ( $GLOBALS['post_type'] == 'attachment' ) ) + $path = $this->MEDIA_PATH; + else + $path = $this->ENTRIES_PATH; + $url = $this->app_base . $path; + if ( isset($page) && is_int($page) ) + $url .= "/$page"; + return $url; + } + + /** + * Display entries URL. + * + * @since 2.2.0 + * + * @param int $page Page ID. + */ + function the_entries_url($page = null) { + echo $this->get_entries_url($page); + } + + /** + * Retrieve categories URL. + * + * @since 2.2.0 + * + * @param mixed $deprecated Not used. + * @return string + */ + function get_categories_url($deprecated = '') { + if ( !empty( $deprecated ) ) + _deprecated_argument( __FUNCTION__, '2.5' ); + return $this->app_base . $this->CATEGORIES_PATH; + } + + /** + * Display category URL. + * + * @since 2.2.0 + */ + function the_categories_url() { + echo $this->get_categories_url(); + } + + /** + * Retrieve attachment URL. + * + * @since 2.2.0 + * + * @param int $page Page ID. + * @return string + */ + function get_attachments_url($page = null) { + $url = $this->app_base . $this->MEDIA_PATH; + if (isset($page) && is_int($page)) { + $url .= "/$page"; + } + return $url; + } + + /** + * Display attachment URL. + * + * @since 2.2.0 + * + * @param int $page Page ID. + */ + function the_attachments_url($page = null) { + echo $this->get_attachments_url($page); + } + + /** + * Retrieve service URL. + * + * @since 2.3.0 + * + * @return string + */ + function get_service_url() { + return $this->app_base . $this->SERVICE_PATH; + } + + /** + * Retrieve entry URL. + * + * @since 2.7.0 + * + * @param int $postID Post ID. + * @return string + */ + function get_entry_url($postID = null) { + if (!isset($postID)) { + global $post; + $postID = (int) $post->ID; + } + + $url = $this->app_base . $this->ENTRY_PATH . "/$postID"; + + log_app('function',"get_entry_url() = $url"); + return $url; + } + + /** + * Display entry URL. + * + * @since 2.7.0 + * + * @param int $postID Post ID. + */ + function the_entry_url($postID = null) { + echo $this->get_entry_url($postID); + } + + /** + * Retrieve media URL. + * + * @since 2.2.0 + * + * @param int $postID Post ID. + * @return string + */ + function get_media_url($postID = null) { + if (!isset($postID)) { + global $post; + $postID = (int) $post->ID; + } + + $url = $this->app_base . $this->MEDIA_SINGLE_PATH ."/file/$postID"; + + log_app('function',"get_media_url() = $url"); + return $url; + } + + /** + * Display the media URL. + * + * @since 2.2.0 + * + * @param int $postID Post ID. + */ + function the_media_url($postID = null) { + echo $this->get_media_url($postID); + } + + /** + * Set the current entry to post ID. + * + * @since 2.2.0 + * + * @param int $postID Post ID. + */ + function set_current_entry($postID) { + global $entry; + log_app('function',"set_current_entry($postID)"); + + if (!isset($postID)) { + // $this->bad_request(); + $this->not_found(); + } + + $entry = wp_get_single_post($postID,ARRAY_A); + + if (!isset($entry) || !isset($entry['ID'])) + $this->not_found(); + + return; + } + + /** + * Display posts XML. + * + * @since 2.2.0 + * + * @param int $page Optional. Page ID. + * @param string $post_type Optional, default is 'post'. Post Type. + */ + function get_posts($page = 1, $post_type = 'post') { + log_app('function',"get_posts($page, '$post_type')"); + $feed = $this->get_feed($page, $post_type); + $this->output($feed); + } + + /** + * Display attachment XML. + * + * @since 2.2.0 + * + * @param int $page Page ID. + * @param string $post_type Optional, default is 'attachment'. Post type. + */ + function get_attachments($page = 1, $post_type = 'attachment') { + log_app('function',"get_attachments($page, '$post_type')"); + $GLOBALS['post_type'] = $post_type; + $feed = $this->get_feed($page, $post_type); + $this->output($feed); + } + + /** + * Retrieve feed XML. + * + * @since 2.2.0 + * + * @param int $page Page ID. + * @param string $post_type Optional, default is post. Post type. + * @return string + */ + function get_feed($page = 1, $post_type = 'post') { + global $post, $wp, $wp_query, $posts, $wpdb, $blog_id; + log_app('function',"get_feed($page, '$post_type')"); + ob_start(); + + $this->ENTRY_PATH = $post_type; + + if (!isset($page)) { + $page = 1; + } + $page = (int) $page; + + $count = get_option('posts_per_rss'); + + wp('posts_per_page=' . $count . '&offset=' . ($count * ($page-1) . '&orderby=modified')); + + $post = $GLOBALS['post']; + $posts = $GLOBALS['posts']; + $wp = $GLOBALS['wp']; + $wp_query = $GLOBALS['wp_query']; + $wpdb = $GLOBALS['wpdb']; + $blog_id = (int) $GLOBALS['blog_id']; + log_app('function',"query_posts(# " . print_r($wp_query, true) . "#)"); + + log_app('function',"total_count(# $wp_query->max_num_pages #)"); + $last_page = $wp_query->max_num_pages; + $next_page = (($page + 1) > $last_page) ? NULL : $page + 1; + $prev_page = ($page - 1) < 1 ? NULL : $page - 1; + $last_page = ((int)$last_page == 1 || (int)$last_page == 0) ? NULL : (int) $last_page; + $self_page = $page > 1 ? $page : NULL; +?> > +the_entries_url() ?> + +<?php bloginfo_rss('name') ?> + + + + + + + + + + +Copyright + +echo_entry(); + } + } +?> +ENTRY_PATH = 'attachment'; + $varname = 'attachment_id'; + break; + } + query_posts($varname . '=' . $postID); + if ( have_posts() ) { + while ( have_posts() ) { + the_post(); + $this->echo_entry(); + log_app('$post',print_r($GLOBALS['post'],true)); + $entry = ob_get_contents(); + break; + } + } + ob_end_clean(); + + log_app('get_entry returning:',$entry); + return $entry; + } + + /** + * Display post content XML. + * + * @since 2.3.0 + */ + function echo_entry() { ?> + + ID ); ?> + + <?php echo $content ?> + + + + + post_status == 'draft' ? 'yes' : 'no') ?> + + + + + + + +post_type == 'attachment') { ?> + + + + +post_content ) ) : +list($content_type, $content) = prep_atom_text_construct(get_the_content()); ?> + + + + + + + + + + + + + 302 Found + + +

    Found

    +

    The document has moved here.

    + + + +EOD; + header('HTTP/1.1 302 Moved'); + header('Content-Type: text/html'); + header('Location: ' . $url); + echo $content; + exit; + + } + + /** + * Set 'Client Error' (400) status header. + * + * @since 2.2.0 + */ + function client_error($msg = 'Client Error') { + log_app('Status','400: Client Error'); + header('Content-Type: text/plain'); + status_header('400'); + exit; + } + + /** + * Set created status headers (201). + * + * Sets the 'content-type', 'content-location', and 'location'. + * + * @since 2.2.0 + */ + function created($post_ID, $content, $post_type = 'post') { + log_app('created()::$post_ID',"$post_ID, $post_type"); + $edit = $this->get_entry_url($post_ID); + switch($post_type) { + case 'post': + $ctloc = $this->get_entry_url($post_ID); + break; + case 'attachment': + $edit = $this->app_base . "attachments/$post_ID"; + break; + } + header("Content-Type: $this->ATOM_CONTENT_TYPE"); + if (isset($ctloc)) + header('Content-Location: ' . $ctloc); + header('Location: ' . $edit); + status_header('201'); + echo $content; + exit; + } + + /** + * Set 'Auth Required' (401) headers. + * + * @since 2.2.0 + * + * @param string $msg Status header content and HTML content. + */ + function auth_required($msg) { + log_app('Status','401: Auth Required'); + nocache_headers(); + header('WWW-Authenticate: Basic realm="WordPress Atom Protocol"'); + header("HTTP/1.1 401 $msg"); + header('Status: 401 ' . $msg); + header('Content-Type: text/html'); + $content = << + + + 401 Unauthorized + + +

    401 Unauthorized

    +

    $msg

    + + + +EOD; + echo $content; + exit; + } + + /** + * Display XML and set headers with content type. + * + * @since 2.2.0 + * + * @param string $xml Display feed content. + * @param string $ctype Optional, default is 'atom+xml'. Feed content type. + */ + function output($xml, $ctype = 'application/atom+xml') { + status_header('200'); + $xml = ''."\n".$xml; + header('Connection: close'); + header('Content-Length: '. strlen($xml)); + header('Content-Type: ' . $ctype); + header('Content-Disposition: attachment; filename=atom.xml'); + header('Date: '. date('r')); + if ($this->do_output) + echo $xml; + log_app('function', "output:\n$xml"); + exit; + } + + /** + * Sanitize content for database usage. + * + * @since 2.2.0 + * + * @param array $array Sanitize array and multi-dimension array. + */ + function escape(&$array) { + global $wpdb; + + foreach ($array as $k => $v) { + if (is_array($v)) { + $this->escape($array[$k]); + } else if (is_object($v)) { + //skip + } else { + $array[$k] = $wpdb->escape($v); + } + } + } + + /** + * Access credential through various methods and perform login. + * + * @since 2.2.0 + * + * @return bool + */ + function authenticate() { + log_app("authenticate()",print_r($_ENV, true)); + + // if using mod_rewrite/ENV hack + // http://www.besthostratings.com/articles/http-auth-php-cgi.html + if (isset($_SERVER['HTTP_AUTHORIZATION'])) { + list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = + explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); + } else if (isset($_SERVER['REDIRECT_REMOTE_USER'])) { + // Workaround for setups that do not forward HTTP_AUTHORIZATION + // See http://trac.wordpress.org/ticket/7361 + list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = + explode(':', base64_decode(substr($_SERVER['REDIRECT_REMOTE_USER'], 6))); + } + + // If Basic Auth is working... + if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) { + log_app("Basic Auth",$_SERVER['PHP_AUTH_USER']); + + $user = wp_authenticate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']); + if ( $user && !is_wp_error($user) ) { + wp_set_current_user($user->ID); + log_app("authenticate()", $user->user_login); + return true; + } + } + + return false; + } + + /** + * Retrieve accepted content types. + * + * @since 2.2.0 + * + * @param array $types Optional. Content Types. + * @return string + */ + function get_accepted_content_type($types = null) { + + if (!isset($types)) { + $types = $this->media_content_types; + } + + if (!isset($_SERVER['CONTENT_LENGTH']) || !isset($_SERVER['CONTENT_TYPE'])) { + $this->length_required(); + } + + $type = $_SERVER['CONTENT_TYPE']; + list($type,$subtype) = explode('/',$type); + list($subtype) = explode(";",$subtype); // strip MIME parameters + log_app("get_accepted_content_type", "type=$type, subtype=$subtype"); + + foreach($types as $t) { + list($acceptedType,$acceptedSubtype) = explode('/',$t); + if ($acceptedType == '*' || $acceptedType == $type) { + if ($acceptedSubtype == '*' || $acceptedSubtype == $subtype) + return $type . "/" . $subtype; + } + } + + $this->invalid_media(); + } + + /** + * Process conditionals for posts. + * + * @since 2.2.0 + */ + function process_conditionals() { + + if (empty($this->params)) return; + if ($_SERVER['REQUEST_METHOD'] == 'DELETE') return; + + switch($this->params[0]) { + case $this->ENTRY_PATH: + global $post; + $post = wp_get_single_post($this->params[1]); + $wp_last_modified = get_post_modified_time('D, d M Y H:i:s', true); + $post = NULL; + break; + case $this->ENTRIES_PATH: + $wp_last_modified = mysql2date('D, d M Y H:i:s', get_lastpostmodified('GMT'), 0).' GMT'; + break; + default: + return; + } + $wp_etag = md5($wp_last_modified); + @header("Last-Modified: $wp_last_modified"); + @header("ETag: $wp_etag"); + + // Support for Conditional GET + if (isset($_SERVER['HTTP_IF_NONE_MATCH'])) + $client_etag = stripslashes($_SERVER['HTTP_IF_NONE_MATCH']); + else + $client_etag = false; + + $client_last_modified = trim( $_SERVER['HTTP_IF_MODIFIED_SINCE']); + // If string is empty, return 0. If not, attempt to parse into a timestamp + $client_modified_timestamp = $client_last_modified ? strtotime($client_last_modified) : 0; + + // Make a timestamp for our most recent modification... + $wp_modified_timestamp = strtotime($wp_last_modified); + + if ( ($client_last_modified && $client_etag) ? + (($client_modified_timestamp >= $wp_modified_timestamp) && ($client_etag == $wp_etag)) : + (($client_modified_timestamp >= $wp_modified_timestamp) || ($client_etag == $wp_etag)) ) { + status_header( 304 ); + exit; + } + } + + /** + * Convert RFC3339 time string to timestamp. + * + * @since 2.3.0 + * + * @param string $str String to time. + * @return bool|int false if format is incorrect. + */ + function rfc3339_str2time($str) { + + $match = false; + if (!preg_match("/(\d{4}-\d{2}-\d{2})T(\d{2}\:\d{2}\:\d{2})\.?\d{0,3}(Z|[+-]+\d{2}\:\d{2})/", $str, $match)) + return false; + + if ($match[3] == 'Z') + $match[3] = '+0000'; + + return strtotime($match[1] . " " . $match[2] . " " . $match[3]); + } + + /** + * Retrieve published time to display in XML. + * + * @since 2.3.0 + * + * @param string $published Time string. + * @return string + */ + function get_publish_time($published) { + + $pubtime = $this->rfc3339_str2time($published); + + if (!$pubtime) { + return array(current_time('mysql'),current_time('mysql',1)); + } else { + return array(date("Y-m-d H:i:s", $pubtime), gmdate("Y-m-d H:i:s", $pubtime)); + } + } + +} + +/** + * AtomServer + * @var AtomServer + * @global object $server + */ +$server = new AtomServer(); +$server->handle_request(); + +?> diff --git a/src/wp-atom.php b/src/wp-atom.php new file mode 100644 index 0000000..a83ac7d --- /dev/null +++ b/src/wp-atom.php @@ -0,0 +1,12 @@ + diff --git a/src/wp-blog-header.php b/src/wp-blog-header.php new file mode 100644 index 0000000..0f7118f --- /dev/null +++ b/src/wp-blog-header.php @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/src/wp-comments-post.php b/src/wp-comments-post.php new file mode 100644 index 0000000..9c17a35 --- /dev/null +++ b/src/wp-comments-post.php @@ -0,0 +1,105 @@ +comment_status) ) { + do_action('comment_id_not_found', $comment_post_ID); + exit; +} + +// get_post_status() will get the parent status for attachments. +$status = get_post_status($post); + +$status_obj = get_post_status_object($status); + +if ( !comments_open($comment_post_ID) ) { + do_action('comment_closed', $comment_post_ID); + wp_die( __('Sorry, comments are closed for this item.') ); +} elseif ( 'trash' == $status ) { + do_action('comment_on_trash', $comment_post_ID); + exit; +} elseif ( !$status_obj->public && !$status_obj->private ) { + do_action('comment_on_draft', $comment_post_ID); + exit; +} elseif ( post_password_required($comment_post_ID) ) { + do_action('comment_on_password_protected', $comment_post_ID); + exit; +} else { + do_action('pre_comment_on_post', $comment_post_ID); +} + +$comment_author = ( isset($_POST['author']) ) ? trim(strip_tags($_POST['author'])) : null; +$comment_author_email = ( isset($_POST['email']) ) ? trim($_POST['email']) : null; +$comment_author_url = ( isset($_POST['url']) ) ? trim($_POST['url']) : null; +$comment_content = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null; + +// If the user is logged in +$user = wp_get_current_user(); +if ( $user->ID ) { + if ( empty( $user->display_name ) ) + $user->display_name=$user->user_login; + $comment_author = $wpdb->escape($user->display_name); + $comment_author_email = $wpdb->escape($user->user_email); + $comment_author_url = $wpdb->escape($user->user_url); + if ( current_user_can('unfiltered_html') ) { + if ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) { + kses_remove_filters(); // start with a clean slate + kses_init_filters(); // set up the filters + } + } +} else { + if ( get_option('comment_registration') || 'private' == $status ) + wp_die( __('Sorry, you must be logged in to post a comment.') ); +} + +$comment_type = ''; + +if ( get_option('require_name_email') && !$user->ID ) { + if ( 6 > strlen($comment_author_email) || '' == $comment_author ) + wp_die( __('Error: please fill the required fields (name, email).') ); + elseif ( !is_email($comment_author_email)) + wp_die( __('Error: please enter a valid email address.') ); +} + +if ( '' == $comment_content ) + wp_die( __('Error: please type a comment.') ); + +$comment_parent = isset($_POST['comment_parent']) ? absint($_POST['comment_parent']) : 0; + +$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID'); + +$comment_id = wp_new_comment( $commentdata ); + +$comment = get_comment($comment_id); +if ( !$user->ID ) { + $comment_cookie_lifetime = apply_filters('comment_cookie_lifetime', 30000000); + setcookie('comment_author_' . COOKIEHASH, $comment->comment_author, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN); + setcookie('comment_author_email_' . COOKIEHASH, $comment->comment_author_email, time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN); + setcookie('comment_author_url_' . COOKIEHASH, esc_url($comment->comment_author_url), time() + $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN); +} + +$location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id; +$location = apply_filters('comment_post_redirect', $location, $comment); + +wp_redirect($location); +exit; +?> diff --git a/src/wp-commentsrss2.php b/src/wp-commentsrss2.php new file mode 100644 index 0000000..280766e --- /dev/null +++ b/src/wp-commentsrss2.php @@ -0,0 +1,12 @@ + diff --git a/src/wp-config-sample.php b/src/wp-config-sample.php new file mode 100644 index 0000000..d1cea2c --- /dev/null +++ b/src/wp-config-sample.php @@ -0,0 +1,89 @@ + diff --git a/src/wp-config.php b/src/wp-config.php new file mode 100644 index 0000000..117541d --- /dev/null +++ b/src/wp-config.php @@ -0,0 +1,89 @@ +DIYSO:./Vc9]=6slE09lmnc'); // Cambia esto por tu frase aleatoria. +define('LOGGED_IN_KEY', 'p[oo(DWyBGqu:OQ[t%td=d~ v)NxEukr~@cs[D%A|XJ4i%f;r#4m)KgVP;jX&, 8'); // Cambia esto por tu frase aleatoria. +define('NONCE_KEY', '`+f_GgA?|5=uy[=6jPw[-CJ,ERa|CSV`_gx&^Nx~1q|wAp`tZ'); // Cambia esto por tu frase aleatoria. +define('NONCE_SALT', 'L57JJ4Jd0v9P;B4f&v T?/2?N%ha;fyO`jqXM%?DR< CoZO>MmxgM~2&.kZkjR2~'); // Cambia esto por tu frase aleatoria. +/**#@-*/ + +/** + * Prefijo de la base de datos de WordPress. + * + * Cambia el prefijo si deseas instalar multiples blogs en una sola base de datos. + * Emplea solo números, letras y guión bajo. + */ +$table_prefix = 'wp_'; + +/** + * Idioma de WordPress. + * + * Cambia lo siguiente para tener WordPress en tu idioma. El correspondiente archivo MO + * del lenguaje elegido debe encontrarse en wp-content/languages. + * Por ejemplo, instala ca_ES.mo copiándolo a wp-content/languages y define WPLANG como 'ca_ES' + * para traducir WordPress al catalán. + */ +define ('WPLANG', 'es_ES'); + +/** + * Para desarrolladores: modo debug de WordPress. + * + * Cambia esto a true para activar la muestra de avisos durante el desarrollo. + * Se recomienda encarecidamente a los desarrolladores de temas y plugins que usen WP_DEBUG + * en sus entornos de desarrollo. + */ +define('WP_DEBUG', false); + +/* ¡Eso es todo, deja de editar! Feliz blogging */ + +/** WordPress absolute path to the Wordpress directory. */ +if ( !defined('ABSPATH') ) + define('ABSPATH', dirname(__FILE__) . '/'); + +/** Sets up WordPress vars and included files. */ +require_once(ABSPATH . 'wp-settings.php'); +?> diff --git a/src/wp-content/index.php b/src/wp-content/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/src/wp-content/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/wp-content/languages/es_ES.mo b/src/wp-content/languages/es_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..bdb789f4ce5a73a9276b77e206e6c49f74e5c72a GIT binary patch literal 404844 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%0D16lz6jN;gT2q}(v27aGell%x1tIjv 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/languages/es_ES.po b/src/wp-content/languages/es_ES.po new file mode 100644 index 0000000..179f55f --- /dev/null +++ b/src/wp-content/languages/es_ES.po @@ -0,0 +1,14470 @@ +# Translation of Development (future 3.2) in Spanish (Spain) +# This file is distributed under the same license as the Development (future 3.2) package. +msgid "" +msgstr "" +"PO-Revision-Date: 2011-07-05 05:59:15+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/0.1\n" +"Project-Id-Version: Development (future 3.2)\n" + +#: wp-admin/includes/theme.php:313 +msgid "Full Width Template" +msgstr "Plantilla a pantalla completa" + +#: wp-admin/includes/theme.php:315 +msgid "Post Formats" +msgstr "Formatos de entradas" + +#: wp-admin/includes/theme.php:311 +msgid "Featured Images" +msgstr "Imágenes destacadas" + +#: wp-admin/includes/theme.php:310 +msgid "Featured Image Header" +msgstr "Imagen de cabecera" + +#: wp-includes/formatting.php:2541 +msgid "The timezone you have entered is not valid. Please select a valid timezone." +msgstr "La zona horaria que has introducido no es válida. Por favor, selecciona una zona horaria válida." + +#: wp-admin/includes/dashboard.php:1181 +msgid "It looks like you're using an old version of %s. For the best WordPress experience, please update your browser." +msgstr "Parece que estás usando una versión antigua de %s. Para una mejor experiencia de WordPress, por favor, actualiza tu navegador." + +#: wp-admin/includes/dashboard.php:1179 +msgid "It looks like you're using an insecure version of %s. Using an outdated browser makes your computer unsafe. For the best WordPress experience, please update your browser." +msgstr "Parece que estás usando una versión insegura de %s. El uso de un navegador obsoleto hace que tu ordenador sea inseguro. Para una mejor experiencia con WordPress, por favor, actualiza tu navegador." + +#: wp-admin/includes/nav-menu.php:1118 +msgid "There are some invalid menu items. Please check or delete them." +msgstr "Hay algunos elementos de menú no válidos. Por favor, compruébalos o elimínalos." + +#: wp-includes/post.php:22 +msgctxt "add new on admin bar" +msgid "Post" +msgstr "Entrada" + +#: wp-includes/post.php:37 +msgctxt "add new on admin bar" +msgid "Page" +msgstr "Página" + +#: wp-admin/includes/nav-menu.php:73 +msgid "%s (Invalid)" +msgstr "%s (no válido)" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:141 +msgctxt "plugin name" +msgid "Name" +msgstr "Nombre" + +#: wp-admin/includes/class-wp-terms-list-table.php:100 +#: wp-admin/includes/class-wp-terms-list-table.php:339 +msgctxt "term name" +msgid "Name" +msgstr "Nombre" + +#: wp-admin/includes/template.php:428 wp-admin/includes/template.php:443 +#: wp-admin/includes/template.php:538 +msgctxt "meta name" +msgid "Name" +msgstr "Nombre" + +#: wp-admin/index.php:44 +msgid "WordPress Blog - Come here for the latest scoop." +msgstr "Blog oficial de WordPress - Ven aquí para ver las últimas noticias." + +#: wp-admin/user-new.php:34 +msgid "[%s] Your site invite" +msgstr "[%s] Tu sitio invita a" + +#: wp-admin/themes.php:212 +msgctxt "theme name" +msgid "Name" +msgstr "Nombre" + +#: wp-admin/edit-link-form.php:86 +#: wp-admin/includes/class-wp-links-list-table.php:80 +msgctxt "link name" +msgid "Name" +msgstr "Nombre" + +#: wp-includes/js/tinymce/langs/wp-langs.php:366 +msgctxt "html attribute" +msgid "Name" +msgstr "Nombre" + +#: wp-includes/js/tinymce/langs/wp-langs.php:323 +msgctxt "html attribute" +msgid "Name:" +msgstr "Nombre:" + +#: wp-admin/credits.php:174 +msgid "Blue Color Scheme" +msgstr "Paleta azul" + +#: wp-admin/credits.php:173 +msgid "Icon Design" +msgstr "Diseño del icono" + +#: wp-admin/theme-install.php:42 +msgid "You can find additional themes for your site by using the Theme Browser/Installer on this screen, which will display themes from the WordPress.org Theme Directory. These themes are designed and developed by third parties, are available free of charge, and are compatible with the license WordPress uses." +msgstr "Puedes encontrar más temas en el buscador/instalador de temas que hay en esta misma página, donde se mostrarán los temas del Directorio de temas. Estos temas son diseñados y desarrollados por terceros y estás disponibles sin cargo (gratis) y compatible con la licencia que utiliza WordPress." + +#: wp-admin/themes.php:43 +msgid "If you would like to see more themes to choose from, click on the “Install Themes” tab and you will be able to browse or search for additional themes from the WordPress.org Theme Directory. Themes in the WordPress.org Theme Directory are designed and developed by third parties, and are compatible with the license WordPress uses. Oh, and they’re free!" +msgstr "Si quieres ver más temas entre los que elegir haz clic en la pestaña “Instalar Temas” y podrás navegar o buscar más temas del Directorio de Temas de WordPress.org. Los temas del Directorio de WordPress.org están diseñados por terceros y son compabiltes con la licencia que utiliza Wordpress. Ah, y además ¡son gratis!" + +#: wp-admin/plugin-install.php:40 +msgid "Plugins hook into WordPress to extend its functionality with custom features. Plugins are developed independently from WordPress core by thousands of developers all over the world. All plugins in the official WordPress.org Plugin Directory are compatible with the license WordPress uses. You can find new plugins to install by searching or browsing the Directory right here in your own Plugins section." +msgstr "Los plugins se conectan con WordPress para extender su funcionalidad con características personalizadas. Los plugins los desarrollan de manera independiente del núcleo de WordPress miles de desarrolladores de tdoo el mundo. Todos los plugins en el directorio oficial de plugins de WordPress.org son compatibles con la licencia que utiliza WordPress. Puedes descubrir nuevos plugins para instalar buscando o navegando por el directorio desde aquí mismo, en tu propia sección de plugins." + +#: wp-includes/admin-bar.php:249 +msgctxt "add new from admin bar" +msgid "Media" +msgstr "Medio" + +#: wp-includes/admin-bar.php:261 +msgctxt "add new from admin bar" +msgid "Plugin" +msgstr "Plugin" + +#: wp-includes/admin-bar.php:252 +msgctxt "add new from admin bar" +msgid "Link" +msgstr "Enlace" + +#: wp-includes/admin-bar.php:258 +msgctxt "add new from admin bar" +msgid "Theme" +msgstr "Tema" + +#: wp-includes/admin-bar.php:255 +msgctxt "add new from admin bar" +msgid "User" +msgstr "Usuario" + +#: wp-admin/update-core.php:40 +msgid "Re-install Now" +msgstr "Reinstalar ahora" + +#: wp-admin/includes/file.php:255 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." +msgstr "El archivo subido excede la directiva upload_max_filesize en php.ini." + +#: wp-admin/includes/file.php:256 +msgid "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form." +msgstr "El archivo subido excede la directiva MAX_FILE_SIZE que se especificó en el formulario HTML." + +#: wp-includes/pluggable.php:870 +msgid "You should specify a nonce action to be verified by using the first parameter." +msgstr "Debes especificar una acción \"nonce\" a verificar mediante el primer parámetro." + +#: wp-includes/taxonomy.php:407 +msgid "View Tag" +msgstr "Ver etiqueta" + +#: wp-includes/taxonomy.php:407 +msgid "View Category" +msgstr "Ver categoría" + +#: wp-admin/tools.php:39 wp-admin/options-writing.php:94 +msgid "If your bookmarks toolbar is hidden: copy the code below, open your Bookmarks manager, create new bookmark, type Press This into the name field and paste the code into the URL field." +msgstr "Si tu barra de marcadores está oculta: copia el siguiente código, abre el gestor de marcadores, crea un nuevo marcador, teclea Publica esto en el campo de nombre y pega el código en el campo de la URL." + +#: wp-admin/credits.php:166 +msgid "Core Committer" +msgstr "Confirmador del núcleo" + +#: wp-admin/credits.php:167 +msgid "Guest Committer" +msgstr "Confirmador invitado" + +#: wp-admin/credits.php:172 +msgid "External Libraries" +msgstr "Librerías externas" + +#: wp-admin/press-this.php:623 +msgid "Add:" +msgstr "Añadir:" + +#: wp-admin/press-this.php:315 +msgid "Add Photos" +msgstr "Añadir fotos" + +#: wp-includes/js/tinymce/wp-mce-help.php:260 +msgid "Editor width in Distraction-free writing mode:" +msgstr "Ancho del editor en modo de escritura sin distracciones:" + +#: wp-includes/js/tinymce/wp-mce-help.php:261 +msgid "Wider" +msgstr "Más ancho" + +#: wp-includes/js/tinymce/wp-mce-help.php:262 +msgid "Narrower" +msgstr "Más estrecho" + +#: wp-includes/js/tinymce/wp-mce-help.php:263 +msgid "Default width" +msgstr "Ancho por defecto" + +#: wp-admin/credits.php:20 +msgid "Documentation on Contributing to WordPress" +msgstr "Documentación acerca de como colaborar con WordPress" + +#: wp-admin/credits.php:18 +msgid "WordPress always needs more people to report bugs, patch bugs, test betas, work on UI design, translate strings, write documentation, and add questions/answers/suggestions to the Support Forums. Join in!" +msgstr "WordPress siempre necesita más personas para informar de los errores, errores de parches, las versiones beta de prueba, el trabajo en el diseño de la interfaz de usuario, traducir cadenas, escribir documentación y agregar preguntas, respuestas y sugerencias a los foros de soporte técnico. ¡Participa!" + +#: wp-admin/credits.php:16 +msgid "Each name or handle is a link to that person’s profile in the WordPress.org community directory." +msgstr "Cada nombre o manejador es un enlace al perfil de esa persona en el directorio de la comunidad WordPress.org." + +#: wp-admin/nav-menus.php:452 +msgid "This feature allows you to use a custom menu in place of your theme’s default menus. If your theme does not support the custom menus feature yet (the new and old default themes, Twenty Eleven and Twenty Ten, do), you can learn about adding this support by following the Documentation link in this tab. You can still use the “Custom Menu” widget to add menus to a sidebar." +msgstr "Esta característica te permite usar un menú personalizado en lugar de menús predeterminados en tu tema. Si tu tema no es compatible con la función de los menús personalizados (los temas predeterminados nuevos y viejos, Twenty Eleven y Twenty Ten lo son), puedes aprender acerca de cómo agregar esta función siguiendo el enlace de documentación en esta pestaña. Puedes seguir utilizando el widget \"menú personalizado\" para añadir menús a una barra lateral." + +#: wp-admin/credits.php:17 +msgid "You can register your own profile at this link to start contributing." +msgstr "Puedes registrar tu propio perfil en este enlace para empezar a colaborar." + +#: wp-admin/index.php:36 +msgid "The left-hand navigation menu provides links to the administration screens in your WordPress application. You can expand or collapse navigation sections by clicking on the arrow that appears on the right side of each navigation item when you hover over it. You can also minimize the navigation menu to a narrow icon strip by clicking on the Collapse Menu arrow at the bottom of the nav menu, below Settings; when minimized, the submenu items will be displayed on hover." +msgstr "El menú de navegación de la izquierda ofrece enlaces a las pantallas de administración de WordPress. Puedes expandir o contraer secciones de navegación haciendo clic en la flecha que aparece a la derecha de cada elemento de navegación cuando pasas sobre él. También puedes minimizar el menú de navegación a una franja estrecha haciendo clic en la flecha de Cerrar menú en la parte inferior del menú de navegación, debajo de Ajustes. Cuando se minimiza, los elementos de submenú se mostrarán al pasar por encima." + +#: wp-admin/index.php:37 +msgid "You can arrange your dashboard by choosing which boxes, or modules, to display in the work area, how many columns to display them in, and where each box should be placed. You can hide/show boxes and select the number of columns in the Screen Options tab. To rearrange the boxes, drag and drop by clicking on the title bar of the selected box and releasing when you see a gray dotted-line rectangle appear in the location you want to place the box. You can also expand or collapse each box; click the title area or downward arrow of the box. In addition, some boxes are configurable, and will show a “Configure” link in the title bar if you hover over it." +msgstr "Puedes ordenar tu escritorio eligiendo que cajas, o módulos, mostrar en el área de trabajo, en cuantas columnas mostrarlas y donde debe estar cada caja. Puedes ocultar o mostrar cajas y elegir el número de columnas en la pestaña de Opciones de pantalla. Para reordenar las cajas arrastra y suéltalas haciendo clic en la barra de título de la caja elegida y suéltala cuando veas un rectángulo con una línea de puntos gris en el sitio donde quieras poner la caja. También peudes expandir o cerrar cada caja; haz clic en el área del título o en la flecha abajo de la caja. Además, algunas cajas son configurables, y mostrarán un enlace de “Configurar” en la barra de título al pasar sobre ella." + +#: wp-admin/edit-form-advanced.php:171 +msgid "Post Format - This designates how your theme will display a specific post. For example, you could have a standard blog post with a title and paragraphs, or a short aside that omits the title and contains a short text blurb. Please refer to the Codex for descriptions of each post format. Your theme could enable all or some of 10 possible formats." +msgstr "Formato de entrada - Esto se refiere a como tu tema mostrará una entrada específica. Por ejemplo, puedes tener una entrada de blog standard con título y párrafos, o una cita corta que omita el título y contenga un texto corto emergente. Por favor, remítete al Codex para las descripciones de cada formato de entrada. Tu tema puede permitir todos o solo alguno de los 10 posibles formatos." + +#: wp-admin/edit-form-advanced.php:182 +msgid "Creating a Page is very similar to creating a Post, and the screens can be customized in the same way using drag and drop, the Screen Options tab, and expanding/collapsing boxes as you choose. This screen also has the new in 3.2 distraction-free writing space, available in both the Visual and HTML modes via the Fullscreen buttons. The Page editor mostly works the same as the Post editor, but there are some Page-specific features in the Page Attributes box:" +msgstr "Crear una página es muy parecido a crear una entrada, y las pantallas pueden personalizarse del mismo modo, arrastrando y soltando, tienes la pestaña de Ajustes de pantalla, y puedes expandir o cerrar cajas a voluntad. Esta pantalla también dispone del espacio sin distracciones incorporado en 3.2, disponible tanto en los modos de editor visual como HTML desde los botones de pantalla completa. El editor de páginas trabaja prácticamente igual que el editor de entradas, solo que hay algunas características específicas para páginas en la caja Atributos de página:" + +#: wp-admin/index.php:35 +msgid "The Admin Bar at the top provides quick access to common tasks when you are viewing your site. If you miss the Favorite Actions dropdown, removed as of 3.2, you can find many of the same actions in the Admin Bar, such as Add New > Post." +msgstr "La barra de administración de la parte superior ofrece acceso rápido a tareas habituales cuando estás viendo tu sitio. Si echas de menos el desplegable de acciones preferidas, eliminado desde la versión 3.2, puedes encontrar muchas de esas acciones en la barra de administración, como por ejemplo Añadir nueva > Entrada." + +#: wp-admin/edit-comments.php:117 +msgid "In the Comment column, above each comment it says “Submitted on,” followed by the date and time the comment was left on your site. Clicking on the date/time link will take you to that comment on your live site. Hovering over any comment gives you options to approve, reply (and approve), quick edit, edit, spam mark, or trash that comment." +msgstr "En la columna de comentario, sobre cada comentario dice: \"Enviado el\", seguido de la fecha y hora se hizo un comentario en tu sitio. Al hacer clic en la fecha y hora, el enlace te llevará a ese comentario en tu sitio. Pasar por encima de cualquier comentario da opciones para aprobarlo, responderlo (con aprobación), edición rápida, edición normal, marcar como spam o mandar a la papelera ese comentario." + +#: wp-admin/options-privacy.php:20 +msgid "When this setting is in effect a reminder is shown in the Right Now box of the Dashboard that says, “Search Engines Blocked,” to remind you that your site is not being crawled." +msgstr "Cuando este ajuste está activado se muestra un aviso en la caja Ahora mismo del Escritorio que dice: \"Motores de búsqueda bloqueados\", para recordarte que tu sitio no está siendo rastreado." + +#: wp-admin/edit-form-advanced.php:169 +msgid "Post editor - Enter the text for your post. There are two modes of editing: Visual and HTML. Choose the mode by clicking on the appropriate tab. Visual mode gives you a WYSIWYG editor. Click the last icon in the row to get a second row of controls. The HTML mode allows you to enter raw HTML along with your post text. You can insert media files by clicking the icons above the post editor and following the directions. You can go the distraction-free writing screen, new in 3.2, via the Fullscreen icon in Visual mode (second to last in the top row) or the Fullscreen button in HTML mode (last in the row). Once there, you can make buttons visible by hovering over the top area. Exit Fullscreen back to the regular post editor." +msgstr "Editor de entradas - Introduce el texto de tu entrada. Hay dos modos de editar: Visual y HTML. Elige el modo haciendo clic en la pestaña adecuada. El modo visual te ofrece un editor WYSIWYG (lo que ves es lo que obtendrás). Haz clic en el último icono de la fila para mostrar una segunda fila de controles. El modo HTML permite introducir HTML en el texto de tu entrada. Puedes insertar archivos multimedia haciendo clic en los iconos por encima del editor y seguir las instrucciones. Puedes ir a la pantalla de escritura sin distracción, nueva en 3.2, a través del icono de Pantalla completa en el modo visual (segundo desde la derecha en la fila superior) o del botón de Pantalla completa del modo HTML (el último de la fila). Una vez ahí puedes hacer visibles los botones pasando sobre el área superior. Salir de pantalla completa te devuelve al editor de entradas normal." + +#: wp-admin/tools.php:16 +msgid "The Use This link for the Categories and Tags Converter will take you to the Import page, where that Converter is one of the plugins you can download. Once that plugin is installed, the link on this page takes you to a screen where you can choose conversion either way." +msgstr "Al usar este vínculo para el convertidor de las categorías y etiquetas te llevará a la página de importación, donde dicho convertidor es uno de los plugins que puedes descargar. Una vez que el plugin está instalado, el enlace en esta página te lleva a una pantalla donde se puede elegir la conversión adecuada." + +#: wp-admin/edit-form-advanced.php:167 +msgid "The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop, and can minimize or expand them by clicking the title bar of each box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen." +msgstr "El campo de título del área grande de edición de entradas es fijo, pero puedes cambiar la posición del resto de cajas solo con arrastrar y soltar, y puedes miniminzarlas o expandirlas haciendo clic en la barra de título de cada caja. Usa la pestaña de Ajustes de pantalla para mostrar más cajas (Extracto, Enviar trackbacks, Campos personalizados, Discusión, Slug, Autor) o para elegir un diseño de 1 o 2 columnas para esta pantalla." + +#: wp-admin/menu.php:219 +msgid "Available Tools" +msgstr "Herramientas disponibles" + +#: wp-admin/menu.php:225 +msgid "Network Setup" +msgstr "Configuración de la red" + +#: wp-admin/credits.php:165 +msgid "User Experience Lead" +msgstr "Líder de experiencia de usuario" + +#: wp-admin/credits.php:105 +msgctxt "Translate this to be the equivalent of English Translators in your language for the credits page Translators section" +msgid "Translators" +msgstr "Traductores" + +#: wp-admin/credits.php:92 wp-admin/credits.php:149 +msgid "http://codex.wordpress.org/Contributing_to_WordPress" +msgstr "http://codex.wordpress.org/Contributing_to_WordPress" + +#: wp-admin/credits.php:97 +msgid "WordPress is created by a worldwide team of passionate individuals. We couldn’t possibly list them all, but here some of the most influential people currently involved with the project:" +msgstr "WordPress está creado por un equipo de personas apasionadas de todas partes del mundo. No se pueden enumerar todas, pero estas son algunas de las personas más influyentes que en la actualidad participan en el proyecto:" + +#: wp-admin/freedoms.php:30 +msgid "WordPress grows when people like you tell their friends about it, and the thousands of businesses and services that are built on and around WordPress share that fact with their users. We’re flattered every time someone spreads the good word, just make sure to check out our trademark guidelines first." +msgstr "WordPress crece cuando la gente habla a sus amigos sobre él y los miles de negocios y servicios que se construyen en y alrededor de WordPress lo comparten con sus usuarios. Nos enorgullece cada vez que alguien difunde la buena nueva, simplemente asegúrate de echar un vistazo a nuestras guías de marca." + +#: wp-admin/freedoms.php:37 +msgid "Every plugin and theme in WordPress.org’s directory is 100%% GPL or a similarly free and compatible license, so you can feel safe finding plugins and themes there. If you get a plugin or theme from another source, make sure to ask them if it’s GPL first. If they don’t respect the WordPress license, we don’t recommend them." +msgstr "Cada plugin y tema del directorio de WordPress.org es 100%% GPL o con una licencia libre similar y compatible, así que puedes sentirte seguro buscando plugins y temas aquí. Si obtienes un plugin o tema desde otra fuente asegúrate de preguntar primero si es GPL. Si no respeta la licencia de WordPress no lo recomedamos." + +#: wp-admin/freedoms.php:21 +msgid "WordPress is Free and open source software, built by a distributed community of mostly volunteer developers from around the world. WordPress comes with some awesome, worldview-changing rights courtesy of its license, the GPL." +msgstr "WordPress es un software de código libre y abierto, construido por una comunidad de desarrolladores, en su mayoría voluntarios, distribuidos por todo el mundo. WordPress viene con la genial licencia que cambiará el mundo, la licencia GPL." + +#: wp-admin/edit-form-advanced.php:272 wp-admin/includes/post.php:1853 +msgid "Word count: %s" +msgstr "Número de palabras: %s" + +#: wp-admin/includes/post.php:1807 +msgid "Blockquote (Alt+Shift+Q)" +msgstr "Cita (Alt+Shift+Q)" + +#: wp-admin/credits.php:164 +msgid "Lead Developer" +msgstr "Jefe de Desarrollo" + +#: wp-admin/credits.php:168 +msgid "Developer" +msgstr "Desarrollador" + +#: wp-admin/includes/post.php:1813 +msgid "Help (Alt + Shift + H)" +msgstr "Ayuda (Alt + Mayús + H)" + +#: wp-admin/includes/schema.php:684 +msgid "" +"Dear User,\n" +"\n" +"Your new SITE_NAME site has been successfully set up at:\n" +"BLOG_URL\n" +"\n" +"You can log in to the administrator account with the following information:\n" +"Username: USERNAME\n" +"Password: PASSWORD\n" +"Log in Here: BLOG_URLwp-login.php\n" +"\n" +"We hope you enjoy your new site.\n" +"Thanks!\n" +"\n" +"--The Team @ SITE_NAME" +msgstr "" +"Estimado usuario:\n" +"\n" +"Tu nuevo sitio SITE_NAME se ha creado en:\n" +"BLOG_URL\n" +"\n" +"Puedes acceder a la administración de la cuenta con la siguiente información:\n" +"Nombre de usuario: USERNAME\n" +"Contraseña: PASSWORD\n" +"Acceda aquí: BLOG_URLwp-login.php\n" +"\n" +"Esperamos que disfrutes de tu nuevo sitio\n" +"Gracias\n" +"\n" +"-- El equipo @ SITE_NAME" + +#: wp-admin/credits.php:160 +msgid "Extended Core Team" +msgstr "Equipo Extendido del Core" + +#: wp-admin/credits.php:147 +msgid "Want to see your name in lights on this page? Get involved in WordPress." +msgstr "¿Quieres ver tu nombre destacado en esta página? Involúcrate en WordPress." + +#: wp-admin/credits.php:12 +msgid "Credits" +msgstr "Créditos" + +#: wp-admin/widgets.php:360 +msgctxt "removing-widget" +msgid "Deactivate" +msgstr "Desactivar" + +#: wp-admin/credits.php:82 +msgid "WordPress Credits" +msgstr "Créditos de WordPress" + +#: wp-admin/credits.php:163 +msgid "Cofounder, Project Lead" +msgstr "Co-fundador, jefe de proyecto" + +#: wp-admin/credits.php:171 +msgid "Internationalization" +msgstr "Internacionalización" + +#: wp-admin/admin-header.php:154 +msgid "Howdy, %1$s" +msgstr "Hola, %1$s" + +#: wp-admin/admin-header.php:156 +msgid "Edit your profile" +msgstr "Edita tu perfil" + +#: wp-admin/credits.php:162 +msgid "Core Contributors to WordPress %s" +msgstr "Colaboradores del núcleo de Wordpress %s" + +#: wp-admin/credits.php:161 +msgid "Recent Rockstars" +msgstr "Estrellas del rock recientes" + +#: wp-admin/includes/post.php:1784 +msgid "Exit fullscreen" +msgstr "Salir de pantalla completa" + +#: wp-admin/includes/post.php:1854 +msgid "Just write." +msgstr "Simplemente escribe." + +#: wp-admin/menu.php:117 +msgid "All Comments" +msgstr "Todos los comentarios" + +#: wp-admin/menu.php:185 +msgid "Installed Plugins" +msgstr "Plugins instalados" + +#: wp-admin/menu.php:202 +msgid "All Users" +msgstr "Todos los usuarios" + +#: wp-admin/credits.php:89 +msgid "WordPress is created by a worldwide team of passionate individuals. Get involved in WordPress." +msgstr "WordPress está creado por un equipo de personas apasionadas que están alrededor del todo el planeta.Involucrarse en WordPress." + +#: wp-admin/credits.php:159 +msgid "Project Leaders" +msgstr "Líderes de proyecto" + +#: wp-admin/credits.php:169 +msgid "Designer" +msgstr "Diseñador" + +#: wp-admin/freedoms.php:24 +msgid "You have the freedom to run the program, for any purpose." +msgstr "Tienes la libertad de usar el programa con cualquier propósito." + +#: wp-admin/includes/dashboard.php:1192 +msgid "

    Update %2$s or learn how to browse happy

    " +msgstr "

    Actualiza %2$s o aprende como navegar feliz

    " + +#: wp-admin/freedoms.php:25 +msgid "You have access to the source code, the freedom to study how the program works, and the freedom to change it to make it do what you wish." +msgstr "Tienes acceso al código fuente, la libertad de estudiar cómo funciona el programa, y ​​la libertad de cambiarlo para que haga lo que quieras." + +#: wp-admin/freedoms.php:26 +msgid "You have the freedom to redistribute copies of the original program so you can help your neighbor." +msgstr "Tienes la libertad de redistribuir copias del programa original y así ayudar a otros." + +#: wp-admin/admin-footer.php:27 +msgid "Credits" +msgstr "Créditos" + +#: wp-admin/freedoms.php:27 +msgid "You have the freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes." +msgstr "Eres libre de distribuir copias de tu versión modificada a quien quieras. Si lo haces, das la oportunidad de beneficiarse de tus cambios a toda la comunidad." + +#: wp-admin/includes/dashboard.php:33 +msgid "You are using an insecure browser!" +msgstr "¡Estás usando un navegador inseguro!" + +#: wp-admin/includes/dashboard.php:35 +msgid "Your browser is out of date!" +msgstr "¡Tu navegador está obsoleto!" + +#: wp-admin/freedoms.php:39 +msgid "Don’t you wish all software came with these freedoms? So do we! For more information, check out the Free Software Foundation." +msgstr "¿No te gustaría que todo el software tuviera esa libertad? Nosotros también. Para más información ve a la Free Software Foundation." + +#: wp-admin/admin-ajax.php:944 +msgid "Your login has expired. Please open a new browser window and log in again. " +msgstr "Tu acceso ha caducado. Por favor, abre una nueva ventana del navegador y accede de nuevo." + +#: wp-admin/admin-footer.php:25 +msgid "Freedoms" +msgstr "Derechos" + +#: wp-admin/freedoms.php:12 wp-admin/freedoms.php:19 +msgid "Freedoms" +msgstr "Derechos" + +#: wp-admin/custom-background.php:298 +msgid "Clear" +msgstr "Borrar" + +#: wp-admin/themes.php:146 wp-admin/themes.php:148 +msgid "Search Installed Themes" +msgstr "Buscar temas instalados" + +#: wp-admin/custom-header.php:542 +msgid "You can use one of these cool headers or show a random one on each page." +msgstr "Puedes usar una de estas cabeceras tan chulas o mostrarlas aleatoriamente en cada página." + +#: wp-admin/custom-header.php:540 +msgid "If you don‘t want to upload your own image, you can use one of these cool headers, or show a random one." +msgstr "Si no quieres subir tu propia imagen puedes usar una de estas cabeceras tan chulas o ir mostrándolas aleatoriamente." + +#: wp-admin/custom-header.php:528 +msgid "You can choose one of your previously uploaded headers, or show a random one." +msgstr "Puedes elegir una las cabeceras que ya has subido o que se muestren aleatoriamente." + +#: wp-includes/script-loader.php:320 +msgid "Approve and Reply" +msgstr "Aprobar y responder" + +#: wp-includes/post.php:1188 wp-admin/menu.php:75 +msgid "All Posts" +msgstr "Todas las entradas" + +#: wp-includes/post.php:1188 wp-admin/menu.php:100 +msgid "All Pages" +msgstr "Todas las páginas" + +#: wp-admin/menu-header.php:173 +msgid "Collapse menu" +msgstr "Cerrar menú" + +#: wp-admin/includes/class-wp-plugins-list-table.php:296 +msgid "Drop-ins are advanced plugins in the %s directory that replace WordPress functionality when present." +msgstr "Los infiltrados son plugins avanzados del directorio %s que reemplazan funcionalidades de WordPress cuando están disponibles." + +#: wp-admin/includes/class-wp-plugins-list-table.php:294 +msgid "Files in the %s directory are executed automatically." +msgstr "Los archivos del directorio %s se ejecutan automáticamente." + +#: wp-admin/includes/post.php:1835 +msgid "Updated." +msgstr "Actualizada." + +#: wp-includes/script-loader.php:89 +msgid "fullscreen" +msgstr "pantalla completa" + +#: wp-admin/custom-header.php:270 +msgid "Random: Show a different image on each page." +msgstr "Aleatoria: Muestra una imagen diferente en cada página." + +#: wp-admin/custom-header.php:526 +msgid "Uploaded Images" +msgstr "Imágenes subidas" + +#: wp-admin/edit-tags.php:216 +msgid "Documentation on Post Tags" +msgstr "Documentación sobre etiquetas de las entradas" + +#: wp-admin/media-upload.php:69 +msgid "Documentation on Uploading Media Files" +msgstr "Documentación sobre la carga de archivos multimedia" + +#: wp-admin/user-edit.php:47 +msgid "Documentation on User Profiles" +msgstr " Documentación sobre los perfiles de usuario" + +#: wp-admin/options-permalink.php:26 +msgid "Documentation on Permalinks Settings" +msgstr " Documentación sobre ajustes de enlaces permanentes" + +#: wp-admin/edit-tags.php:212 +msgid "Documentation on Categories" +msgstr "Documentación sobre las categorías" + +#: wp-admin/edit-tags.php:214 +msgid "Documentation on Link Categories" +msgstr " Documentación sobre categorías de enlaces" + +#: wp-admin/widgets.php:45 +msgid "Documentation on Widgets" +msgstr " Documentación sobre widgets" + +#: wp-admin/nav-menus.php:456 +msgid "Documentation on Menus" +msgstr " Documentación sobre menús " + +#: wp-admin/media.php:76 +msgid "Documentation on Edit Media" +msgstr "Documentación de editar objetos multimedia" + +#: wp-admin/edit-form-advanced.php:188 +msgid "Documentation on Editing Pages" +msgstr " Documentación de la edición de páginas" + +#: wp-admin/upload.php:148 +msgid "Documentation on Media Library" +msgstr "Documentación sobre la librería multimedia " + +#: wp-admin/tools.php:19 +msgid "Documentation on Tools" +msgstr "Documentación sobre herramientas " + +#: wp-admin/custom-header.php:106 +msgid "Documentation on Custom Header" +msgstr "Documentación sobre cabeceras personalizadas" + +#: wp-admin/export.php:45 +msgid "Documentation on Export" +msgstr "Documentación sobre exportación " + +#: wp-admin/options-general.php:69 +msgid "Documentation on General Settings" +msgstr "Documentación sobre ajustes generales" + +#: wp-admin/options-media.php:24 +msgid "Documentation on Media Settings" +msgstr "Documentación sobre Ajustes multimedia" + +#: wp-admin/update-core.php:413 +msgid "Documentation on Updating WordPress" +msgstr " Documentación sobre actualizar WordPress" + +#: wp-admin/edit-form-advanced.php:177 +msgid "Documentation on Writing and Editing Posts" +msgstr "Documentación sobre escritura y edición de entradas " + +#: wp-admin/comment.php:51 wp-admin/edit-comments.php:121 +msgid "Documentation on Comments" +msgstr "Documentación sobre comentarios" + +#: wp-admin/users.php:28 +msgid "Documentation on Managing Users" +msgstr "Documentación sobre la gestión de usuarios" + +#: wp-admin/options-discussion.php:22 +msgid "Documentation on Discussion Settings" +msgstr "Documentación sobre ajustes de comentarios" + +#: wp-admin/edit-link-form.php:47 +msgid "Documentation on Creating Links" +msgstr " Documentación sobre la creación de enlaces " + +#: wp-admin/options-reading.php:50 +msgid "Documentation on Reading Settings" +msgstr "Documentación sobre ajustes de lectura" + +#: wp-admin/plugin-install.php:45 +msgid "Documentation on Installing Plugins" +msgstr "Documentación sobre la instalación de plugins " + +#: wp-admin/edit.php:169 +msgid "Documentation on Managing Posts" +msgstr "Documentación sobre la gestión de entradas " + +#: wp-admin/options-privacy.php:23 +msgid "Documentation on Privacy Settings" +msgstr "Documentación sobre ajustes de privacidad" + +#: wp-admin/index.php:48 +msgid "Documentation on Dashboard" +msgstr "Documentación sobre el escritorio" + +#: wp-admin/plugin-editor.php:122 +msgid "Documentation on Editing Plugins" +msgstr "Documentación de la edición de plugins" + +#: wp-admin/custom-background.php:88 +msgid "Documentation on Custom Background" +msgstr " Documentación sobre fondo personalizado" + +#: wp-admin/import.php:23 +msgid "Documentation on Import" +msgstr "Documentación sobre importar" + +#: wp-admin/edit.php:178 +msgid "Documentation on Managing Pages" +msgstr "Documentación sobre la gestión de páginas" + +#: wp-admin/edit-form-advanced.php:187 +msgid "Documentation on Adding New Pages" +msgstr "Documentación sobre añadir nuevas páginas" + +#: wp-admin/options-writing.php:22 +msgid "Documentation on Writing Settings" +msgstr "Documentación sobre ajustes de escritura" + +#: wp-admin/link-manager.php:49 +msgid "Documentation on Managing Links" +msgstr "Documentación sobre la gestión de enlaces " + +#: wp-admin/user-new.php:149 +msgid "Documentation on Adding New Users" +msgstr "Documentación sobre agregar nuevos usuarios" + +#: wp-admin/includes/post.php:1801 +msgid "Bold (Ctrl + B)" +msgstr "Negrita (Ctrl + B)" + +#: wp-admin/includes/post.php:1802 +msgid "Italic (Ctrl + I)" +msgstr "Cursiva (Ctrl + I)" + +#: wp-admin/includes/post.php:1805 +msgid "Ordered list (Alt + Shift + O)" +msgstr "Lista ordenada (Alt + Mayúsculas + O)" + +#: wp-admin/includes/post.php:1804 +msgid "Unordered list (Alt + Shift + U)" +msgstr "Lista sin ordenar (Alt + Shift + U)" + +#: wp-admin/includes/post.php:1808 +msgid "Insert/edit image (Alt + Shift + M)" +msgstr "Insertar/editar imagen (Alt + Mayúsculas + M)" + +#: wp-admin/includes/post.php:1810 +msgid "Insert/edit link (Alt + Shift + A)" +msgstr "Insertar / editar enlace (Alt + Mayúsculas + A)" + +#: wp-admin/includes/post.php:1811 +msgid "Unlink (Alt + Shift + S)" +msgstr "Desvincular (Alt + Shift + S)" + +#: wp-admin/admin-ajax.php:1524 +msgid "Save failed" +msgstr "Error al guardar" + +#: wp-admin/users.php:164 +msgid "You have specified this user for deletion:" +msgid_plural "You have specified these users for deletion:" +msgstr[0] "Ha marcado a este usuario para su eliminación:" +msgstr[1] "Ha marcado a estos usuarios para su eliminación:" + +#: wp-admin/user-edit.php:161 +msgid "← Back to Users" +msgstr "← Volver a usuarios" + +#: wp-admin/admin-ajax.php:959 +msgid "Autosave disabled." +msgstr "Autoguardado desactivado." + +#: wp-admin/admin-ajax.php:962 +msgid "%s is currently editing this article. If you update it, you will overwrite the changes." +msgstr "%s está actualmente editando este artículo. Si lo actualizas, sobrescribirás los cambios." + +#: wp-includes/js/tinymce/wp-mce-help.php:271 +msgid "TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor released as Open Source under %sLGPL\tby Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances." +msgstr "TinyMCE es un editor Javascript HTML WYSIWYG basado en web e independiente de la plataforma, liberado como Código abierto bajo la licencia %sLGPL→ por Moxiecode Systems AB. Puede convertir campos u o tros elementos HTML en instancias del editor." + +#: wp-includes/js/tinymce/langs/wp-langs.php:40 +msgid "Indigo" +msgstr "Ãndigo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:39 +msgid "Navy Blue" +msgstr "Azul marino" + +#: wp-includes/js/tinymce/langs/wp-langs.php:37 +msgid "Dark green" +msgstr "Verde oscuro" + +#: wp-includes/js/tinymce/langs/wp-langs.php:51 +msgid "Amber" +msgstr "Ãmbar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:44 +msgid "Olive" +msgstr "Verde oliva" + +#: wp-includes/js/tinymce/langs/wp-langs.php:231 +msgid "Words:" +msgstr "Palabras:" + +#: wp-includes/js/tinymce/langs/wp-langs.php:42 +msgid "Maroon" +msgstr "Granate" + +#: wp-includes/js/tinymce/langs/wp-langs.php:461 +msgid "Poster" +msgstr "Cartel" + +#: wp-includes/js/tinymce/langs/wp-langs.php:460 +msgid "Preload" +msgstr "Precarga" + +#: wp-includes/js/tinymce/langs/wp-langs.php:459 +msgid "Alternative source 2" +msgstr "Fuente alternativa 2" + +#: wp-includes/js/tinymce/langs/wp-langs.php:458 +msgid "Alternative source 1" +msgstr "Fuente alternativa 1" + +#: wp-includes/js/tinymce/langs/wp-langs.php:224 +msgid "Disc" +msgstr "Disco" + +#: wp-includes/js/tinymce/langs/wp-langs.php:222 +msgid "Upper roman" +msgstr "Romana superior" + +#: wp-includes/js/tinymce/langs/wp-langs.php:62 +msgid "Aqua" +msgstr "Agua" + +#: wp-includes/js/tinymce/langs/wp-langs.php:61 +msgid "Lime" +msgstr "Lima" + +#: wp-includes/js/tinymce/langs/wp-langs.php:58 +msgid "Magenta" +msgstr "Magenta" + +#: wp-includes/js/tinymce/langs/wp-langs.php:55 +msgid "Royal blue" +msgstr "Azul real" + +#: wp-includes/js/tinymce/langs/wp-langs.php:54 +msgid "Turquoise" +msgstr "Turquesa" + +#: wp-includes/js/tinymce/langs/wp-langs.php:52 +msgid "Yellow green" +msgstr "Verde amarillento" + +#: wp-includes/js/tinymce/langs/wp-langs.php:221 +msgid "Upper alpha" +msgstr "Alfa superior" + +#: wp-includes/js/tinymce/langs/wp-langs.php:220 +msgid "Lower roman" +msgstr "Romana inferior" + +#: wp-includes/js/tinymce/langs/wp-langs.php:35 +msgid "Burnt orange" +msgstr "Naranja quemado" + +#: wp-includes/js/tinymce/langs/wp-langs.php:152 +msgid "Paste is now in plain text mode. Click again to toggle back to regular paste mode." +msgstr "Pegar está ahora en modo de texto sin formato. Haz clic de nuevo para volver al modo de pegado normal." + +#: wp-includes/js/tinymce/langs/wp-langs.php:72 +msgid "Plum" +msgstr "Ciruela" + +#: wp-includes/js/tinymce/langs/wp-langs.php:28 +msgid "{#field} must be a number" +msgstr "{#field} debe ser un número" + +#: wp-includes/js/tinymce/langs/wp-langs.php:57 +msgid "Medium gray" +msgstr "Gris medio" + +#: wp-includes/js/tinymce/langs/wp-langs.php:53 +msgid "Sea green" +msgstr "Verde mar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:151 +msgid "Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode." +msgstr "Pegar está ahora en modo de texto sin formato. Haz clic de nuevo para volver al modo de pegado regular. Después de pegar algo se te devolverá al modo de pegado normal." + +#: wp-includes/js/tinymce/langs/wp-langs.php:457 +msgid "HTML5 Video Options" +msgstr "Opciones de vídeo HTML5" + +#: wp-includes/js/tinymce/langs/wp-langs.php:41 +msgid "Very dark gray" +msgstr "Gris muy oscuro" + +#: wp-includes/js/tinymce/langs/wp-langs.php:296 +msgid "Press ALT F10 for toolbar. Press ALT 0 for help." +msgstr "Pulsa ALT F10 para la barra de herramientas. Pulsa ALT 0 para ayuda." + +#: wp-includes/js/tinymce/langs/wp-langs.php:295 +#: wp-includes/js/tinymce/langs/wp-langs.php:351 +msgid "Accessibility Help" +msgstr "Ayuda sobre accesibilidad" + +#: wp-includes/js/tinymce/langs/wp-langs.php:352 +msgid "General Usage" +msgstr "Uso general" + +#: wp-includes/js/tinymce/langs/wp-langs.php:29 +msgid "{#field} must be a number greater than {#min}" +msgstr "{#field} debe ser un número mayor que {#min}" + +#: wp-includes/js/tinymce/langs/wp-langs.php:38 +msgid "Dark azure" +msgstr "Azur oscuro" + +#: wp-includes/js/tinymce/langs/wp-langs.php:36 +msgid "Dark olive" +msgstr "Verde oliva oscuro" + +#: wp-includes/js/tinymce/langs/wp-langs.php:219 +msgid "Lower greek" +msgstr "Griega inferior" + +#: wp-includes/js/tinymce/langs/wp-langs.php:218 +msgid "Lower alpha" +msgstr "Alfa inferior" + +#: wp-includes/js/tinymce/langs/wp-langs.php:210 +msgid "Learn word" +msgstr "Aprender palabra" + +#: wp-includes/js/tinymce/langs/wp-langs.php:216 +msgid "Types" +msgstr "Tipos" + +#: wp-includes/js/tinymce/langs/wp-langs.php:298 +msgid "Toolbar" +msgstr "Barra de herramientas" + +#: wp-includes/js/tinymce/langs/wp-langs.php:30 +msgid "{#field} must be a number or percentage" +msgstr "{#field} debe ser un número o porcentaje" + +#: wp-includes/js/tinymce/langs/wp-langs.php:225 +msgid "Square" +msgstr "Cuadrado" + +#: wp-includes/js/tinymce/langs/wp-langs.php:59 +msgid "Gold" +msgstr "Dorado" + +#: wp-includes/js/tinymce/langs/wp-langs.php:71 +msgid "Light sky blue" +msgstr "Azul cielo claro" + +#: wp-includes/js/tinymce/langs/wp-langs.php:223 +msgid "Circle" +msgstr "Círculo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:67 +msgid "Peach" +msgstr "Melocotón" + +#: wp-includes/js/tinymce/wp-mce-help.php:272 +msgid "Copyright © 2003-2011, Moxiecode Systems AB, All rights reserved." +msgstr "Derechos de copia © 2003-2011, Moxiecode Systems AB, Todos los derechos reservados." + +#: wp-includes/js/tinymce/langs/wp-langs.php:63 +msgid "Sky blue" +msgstr "Azul cielo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:228 +#: wp-includes/js/tinymce/langs/wp-langs.php:297 +msgid "Rich Text Area" +msgstr "Ãrea de texto enriquecido" + +#: wp-includes/js/tinymce/langs/wp-langs.php:69 +msgid "Pale green" +msgstr "Verde pálido" + +#: wp-includes/js/tinymce/langs/wp-langs.php:68 +msgid "Light yellow" +msgstr "Amarillo claro" + +#: wp-includes/js/tinymce/langs/wp-langs.php:46 +msgid "Teal" +msgstr "Turquesa" + +#: wp-includes/js/tinymce/langs/wp-langs.php:70 +msgid "Pale cyan" +msgstr "Cian pálido" + +#: wp-includes/js/tinymce/langs/wp-langs.php:48 +msgid "Grayish blue" +msgstr "Azul grisáceo" + +#: wp-includes/class-http.php:146 +msgid "Destination directory for file streaming does not exist or is not writable." +msgstr "La carpeta de destino para cargar el archivo no existe o no tiene permisos de escritura." + +#: wp-includes/class-http.php:248 +msgid "There are no HTTP transports available which can complete the requested request." +msgstr "No hay medios de transporte HTTP disponibles que puedan completar la solicitud requerida." + +#: wp-includes/taxonomy.php:92 wp-includes/taxonomy.php:93 +#: wp-admin/edit-form-advanced.php:106 +msgctxt "post format" +msgid "Format" +msgstr "Formato" + +#: wp-content/plugins/akismet/admin.php:444 +msgid "Akismet has protected your site from %2$s spam comment already. " +msgid_plural "Akismet has protected your site from %2$s spam comments already. " +msgstr[0] "Akismet ha protegido su sitio de %2$s comentario de spam hasta ahora." +msgstr[1] "Akismet ha protegido su sitio de %2$s comentarios de spam hasta ahora." + +#: wp-content/plugins/akismet/admin.php:454 +msgid "There's %1$s comment in your spam queue right now." +msgid_plural "There are %1$s comments in your spam queue right now." +msgstr[0] "Hay %1$s comentario en la cola de spam en este momento." +msgstr[1] "Hay %1$s comentarios en la cola de spam en este momento." + +#: wp-admin/includes/class-wp-list-table.php:526 +msgctxt "paging" +msgid "%1$s of %2$s" +msgstr "%1$s de %2$s" + +#: wp-content/plugins/akismet/admin.php:450 +msgid "Akismet blocks spam from getting to your blog. " +msgstr "Akismet bloquea el spam que llegue a tu sitio." + +#: wp-admin/user-edit.php:216 wp-admin/user-edit.php:217 +msgid "Show Admin Bar" +msgstr "Mostrar la barra de administración" + +#: wp-admin/user-edit.php:220 +msgid "when viewing site" +msgstr "cuando se esté viendo el sitio" + +#: wp-content/plugins/akismet/admin.php:139 +msgid "Sign up success! Please check your email for your Akismet API Key and enter it below." +msgstr "¡Regístro completado! Por favor, consulta en tu correo electrónico tu clave de API de Akismet y añádela debajo." + +#: wp-admin/user-edit.php:223 +msgid "in dashboard" +msgstr "en el escritorio" + +#: wp-content/plugins/akismet/admin.php:325 +msgid "Flagged as spam by Akismet" +msgstr "Marcado como spam por Akismet" + +#: wp-content/plugins/akismet/widget.php:89 +msgid "" +msgid_plural "" +msgstr[0] "" +msgstr[1] "" + +#: wp-content/plugins/akismet/widget.php:15 +msgid "%1$s%2$s%3$s %4$sspam comment%5$s %6$sblocked by%7$s
    %8$sAkismet%9$s" +msgid_plural "%1$s%2$s%3$s %4$sspam comments%5$s %6$sblocked by%7$s
    %8$sAkismet%9$s" +msgstr[0] "%1$s%2$s%3$s %4$scomentario de spam%5$s %6$sbloqueado por%7$s
    %8$sAkismet%9$s" +msgstr[1] "%1$s%2$s%3$s %4$scomentarios de spam%5$s %6$sbloqueados por%7$s
    %8$sAkismet%9$s" + +#: wp-content/plugins/akismet/admin.php:342 +msgid "History" +msgstr "Historial" + +#: wp-content/plugins/akismet/admin.php:275 +msgctxt "comments" +msgid "Spam" +msgstr "Spam" + +#: wp-content/plugins/akismet/admin.php:460 +msgid "There's nothing in your spam queue at the moment." +msgstr "En este momento no tienes nada en la cola de spam. " + +#: wp-content/plugins/akismet/admin.php:327 +msgid "Cleared by Akismet" +msgstr "Borrado por Akismet" + +#: wp-admin/includes/internal-linking.php:77 +msgid "Enter the destination URL" +msgstr "Introduce la URL de destino" + +#: wp-admin/includes/file.php:65 +msgid "%s Page Template" +msgstr "%s Plantilla de Página" + +#: wp-admin/includes/internal-linking.php:89 +msgid "Or link to existing content" +msgstr "O enlaza a contenido ya existente" + +#: wp-admin/press-this.php:503 +msgid "Post Format:" +msgstr "Formato de entrada:" + +#: wp-admin/plugins.php:250 +msgid "This plugin may be active on other sites in the network." +msgid_plural "These plugins may be active on other sites in the network." +msgstr[0] "Este plugin puede estar activado para otros sitios de la red." +msgstr[1] "Estos plugins pueden estar activos para otros sitios de la red." + +#: wp-admin/plugins.php:345 +msgid "You cannot delete a plugin while it is active on the main site." +msgstr "No puedes borrar un plugin si está activado para el sitio principal." + +#: wp-admin/options-writing.php:65 +msgid "Default Post Format" +msgstr "Formato de entrada por defecto" + +#: wp-admin/update-core.php:18 wp-admin/update-core.php:448 +#: wp-admin/update-core.php:477 +msgid "You do not have sufficient permissions to update this site." +msgstr "No tienes los permisos adecuados para actualizar este sitio." + +#: wp-admin/users.php:365 wp-admin/user-edit.php:178 +msgctxt "user" +msgid "Add Existing" +msgstr "Añadir usuario existente" + +#: wp-admin/user-new.php:191 +msgctxt "user" +msgid "Add New User" +msgstr "Añadir nuevo usuario " + +#: wp-admin/user-new.php:343 +msgid "Add New User " +msgstr "Añadir nuevo usuario" + +#: wp-admin/user-new.php:258 +msgid "Add Existing User " +msgstr "Añadir usuario existente" + +#: wp-admin/plugin-editor.php:120 wp-admin/theme-editor.php:30 +msgid "Any edits to files from this screen will be reflected on all sites in the network." +msgstr "Cualquier modificación de los archivos se verá reflejada en todos los sitios de la red." + +#: wp-admin/user-new.php:193 +msgctxt "user" +msgid "Add Existing User" +msgstr "Añadir usuario existente" + +#: wp-includes/query.php:146 wp-includes/query.php:167 +#: wp-includes/query.php:187 wp-includes/query.php:211 +#: wp-includes/query.php:235 wp-includes/query.php:259 +#: wp-includes/query.php:288 wp-includes/query.php:308 +#: wp-includes/query.php:328 wp-includes/query.php:348 +#: wp-includes/query.php:369 wp-includes/query.php:389 +#: wp-includes/query.php:419 wp-includes/query.php:448 +#: wp-includes/query.php:468 wp-includes/query.php:495 +#: wp-includes/query.php:515 wp-includes/query.php:535 +#: wp-includes/query.php:555 wp-includes/query.php:575 +#: wp-includes/query.php:604 wp-includes/query.php:631 +#: wp-includes/query.php:651 wp-includes/query.php:671 +#: wp-includes/query.php:691 wp-includes/query.php:711 +msgid "Conditional query tags do not work before the query is run. Before then, they always return false." +msgstr "Las etiquetas de las consultas condicionales no funcionan antes de ejecutar la consulta. Haciéndolo antes, siempre devuelven falso." + +#: wp-admin/nav-menus.php:454 +msgid "To create a new custom menu, click on the + tab, give the menu a name, and click Create Menu. Next, add menu items from the appropriate boxes. You’ll be able to edit the information for each menu item, and can drag and drop to put them in order. You can also drag a menu item a little to the right to make it a submenu, to create menus with hierarchy. Drop the item into its new nested placement when the dotted rectangle target shifts over, also a little to the right. Don’t forget to click Save when you’re finished." +msgstr "Si quieres crear un nuevo menú personalizado, pulsa la pestaña +, ponle un nombre y haz clic en Crear menú. A continuación, añade al menú los elementos en las cajas correspondientes. Podrás editar la información de cada elemento del menú, y arrastrar y soltar para ponerlas en el orden que quieras. También puedes arrastrar el menú un poco a la derecha para hacerlo submenú, es decir, para crear menús jerárquicos. Suelta en la parte derecha el elemento en éste nuevo lugar anidado cuando aparezca el rectángulo con línea de puntos. No te olvides hacer clic en Guardar cuando hayas terminado." + +#: wp-admin/tools.php:15 +msgid "Press This is a bookmarklet that makes it easy to blog about something you come across on the web. You can use it to just grab a link, or to post an excerpt. Press This will even allow you to choose from images included on the page and use them in your post. Just drag the Press This link on this screen to your bookmarks bar in your browser, and you’ll be on your way to easier content creation. Clicking on it while on another website opens a popup window with all these options." +msgstr "" +"Publicar esto es un marcador de enlaces que hace fácil bloguear sobre algo con lo que te hayas topado en la web. Puedes usarlo para guardar un enlace, para publicar un resumen del mismo. Publicar esto te permite elegir de entre las imágenes de esa página cuál se utilizará para tu entrada. \n" +"Sólo tienes que arrastrar el enlace de Publicar esto de esta pantalla a la barra de enlaces favoritos de tu navegador y tendrás la forma más fácil de crear contenido. Haciendo clic en él mientras estés visitando cualquier sitio web se abre una ventana emergente con las opciones mencionadas. " + +#: wp-admin/plugin-editor.php:123 +msgid "Documentation on Writing Plugins" +msgstr "Documentación sobre cómo escribir plugins" + +#: wp-admin/index.php:38 +msgid "The boxes on your Dashboard screen are:" +msgstr "Las cajas en tu Escritorio son:" + +#: wp-admin/users.php:24 +msgid "This screen lists all the existing users for your site. Each user has one of five defined roles as set by the site admin: Site Administrator, Editor, Author, Contributor, or Subscriber. Users with roles other than Administrator will see fewer options in the dashboard navigation when they are logged in, based on their role." +msgstr "Esta pantalla muestra todos los usuarios existentes para tu sitio. Cada usuario dispone de uno de los cinco perfiles definidos según lo establecido por el administrador del sitio: Administrador del sitio, editor, autor, colaborador o suscriptor. Los usuarios con perfiles que no sean de administrador verán menos opciones en el panel de navegación cuando se hayan identificado, en base a su perfil." + +#: wp-admin/options-permalink.php:27 +msgid "Documentation on Using Permalinks" +msgstr "Documentación sobre el uso de enlaces permanentes" + +#: wp-admin/plugin-editor.php:119 +msgid "If you want to make changes but don’t want them to be overwritten when the plugin is updated, you may be ready to think about writing your own plugin. For information on how to edit plugins, write your own from scratch, or just better understand their anatomy, check out the links below." +msgstr "Si quieres hacer cambios pero no quieres que se sobreescriban cuando se actualice el plugin, deberías pensar en escribir tu propio plugin. Para obtener información acerca de cómo editar plugins, escribir desde cero el tuyo, o simplemente entender mejor su anatomía, echa un vistazo a los enlaces de aquí abajo." + +#: wp-admin/users.php:29 +msgid "Descriptions of Roles and Capabilities" +msgstr "Descripción de los perfiles y capacidades" + +#: wp-admin/export.php:42 +msgid "You can export a file of your site’s content in order to import it into another installation or platform. The export file will be an XML file format called WXR. Posts, pages, comments, custom fields, categories, and tags can be included. You can choose for the WXR file to include only certain posts or pages by setting the dropdown filters to limit the export by category, author, date range by month, or publishing status." +msgstr "Puedes exportar el contenido de tu sitio’s a un archivo para ser importado en otra instalación o plataforma. El archivo de importación es un archivo XML llamado WXR. Entradas, páginas, comentarios, campos personalizados, categorías y etiquetas se incluirán en él. Puedes elegir sólo algunas entradas o páginas, basta con limitar la exportación a determinadas categorías, autor, rango de fechas por meses o estatus de publicación en los filtros de descarte." + +#: wp-admin/edit-tags.php:184 +msgid "You can delete link categories in the Bulk Action pulldown, but that action does not delete the links within the category. Instead, it moves them to the default link category." +msgstr "Puedes borrar categorías de enlaces con la opción del desplegable Acciones en lote, pero eso no borrará los enlaces de la categoría. En su lugar, lo que hace en enviarlas a la categoría de enlaces por defecto." + +#: wp-admin/includes/upgrade.php:266 +msgid "sample-page" +msgstr "pagina-ejemplo" + +#: wp-admin/includes/upgrade.php:264 +msgid "Sample Page" +msgstr "Página de ejemplo" + +#: wp-includes/functions.php:3501 +msgid "%1$s was called incorrectly. %2$s %3$s" +msgstr "%1$s se llamó incorrectamente. %2$s %3$s" + +#: wp-includes/functions.php:3500 +msgid "(This message was added in version %s.)" +msgstr "(Este mensaje se añadió en la versión %s.)" + +#: wp-admin/options-discussion.php:216 +msgid "Retro (Generated)" +msgstr "Retro (generado)" + +#: wp-admin/includes/class-wp-themes-list-table.php:71 +msgid "You only have one theme enabled for this site right now. Visit the Network Admin to enable or install more themes." +msgstr "Sólo tienes un tema activado para este sitio. Ve a la administración de la red para activar or instalar más temas." + +#: wp-admin/includes/class-wp-themes-list-table.php:75 +msgid "You only have one theme enabled for this site right now. Visit the Network Admin to enable more themes." +msgstr "Sólo tienes un tema activado para este sitio. Ve a la administración de la red para activar más temas." + +#: wp-admin/includes/upgrade.php:246 +msgid "" +"This is an example page. It's different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this:\n" +"\n" +"
    Hi there! I'm a bike messenger by day, aspiring actor by night, and this is my blog. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin' caught in the rain.)
    \n" +"\n" +"...or something like this:\n" +"\n" +"
    The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickies to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.
    \n" +"\n" +"As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!" +msgstr "" +"Esta es una página de ejemplo, Es diferente a una entrada de un blog porque se mantiene estática y, en la mayoría de temas, se mostrará en la barra de navegación. Casi todo el mundo comienza con una página Sobre mí para presentarse a los potenciales visitantes. Puede decir algo así:\n" +"\n" +"
    ¡Hola!: Soy físico durante el día, lector de manga por las noches y este es mi blog. Vivo en Albacete y tengo un gato llamado Alex. Me encantan los mojitos (y mirar a la gente corriendo en los parques)
    \n" +"\n" +"O algo así:\n" +"\n" +"
    La empresa Calcetines XYC se fundó en 1973, y ha estado produciendo calcetines de calidad para sus clientes desde entonces. Se encuentra en Vetusta, tiene unos 2.000 empleados e intenta ayudar en lo que puede para mejorar la vida en Vestusta
    \n" +"\n" +"Deberías ir a tu escritorio, borrar esta página y crear algunas nuevas con tu contenido. ¡A divertirse!" + +#: wp-includes/user.php:111 +msgid "ERROR: The password you entered for the username %1$s is incorrect. Lost your password?" +msgstr "ERROR: La contraseña que introdujo para el usuario %1$s no es correcta. Has perdido tu contraseña?" + +#: wp-includes/class-wp-xmlrpc-server.php:3380 +msgid "Sorry, you cannot publish this post." +msgstr "Perdona, pero no puedes publicar esta entrada." + +#: wp-content/plugins/akismet/admin.php:27 +msgid "Comment History" +msgstr "Historial de comentarios" + +#: wp-content/plugins/akismet/admin.php:221 +msgid "Click here to confirm that Akismet.com is up." +msgstr "Haz click aquí para confirmar que Akismet.com está funcionando." + +#: wp-content/plugins/akismet/admin.php:14 +msgid "Akismet %s requires WordPress 3.0 or higher." +msgstr "Akismet %s necesita WordPress 3.0 o superior para funcionar." + +#: wp-content/plugins/akismet/admin.php:354 +msgid "%s approved" +msgid_plural "%s approved" +msgstr[0] "%s aprobado" +msgstr[1] "%s aprobados" + +#: wp-content/plugins/akismet/admin.php:521 +msgid "%s reported this comment as not spam" +msgstr "%s no considera este comentario como spam" + +#: wp-content/plugins/akismet/akismet.php:266 +msgid "Akismet caught this comment as spam" +msgstr "Akismet considera que este comentario es spam" + +#: wp-content/plugins/akismet/admin.php:570 +msgid "%s reported this comment as spam" +msgstr "%s considera que este comentario es spam" + +#: wp-content/plugins/akismet/akismet.php:459 +msgid "Akismet caught this comment as spam during an automatic retry." +msgstr "Akismet ha realizado una revisión auntomática y considera que este comentario es spam" + +#: wp-content/plugins/akismet/admin.php:211 +msgid "Re-trying" +msgstr "Intentándolo de nuevo" + +#: wp-content/plugins/akismet/admin.php:157 +msgid "Auto-delete spam submitted on posts more than a month old." +msgstr "Autoborrado de spam realizado para entradas con más de un mes de antiguedad." + +#: wp-content/plugins/akismet/admin.php:130 +msgid "Your WordPress home URL %s is invalid. Please fix the home option." +msgstr "La URL de la página de inicio de tu WordPress %s no es válida. Por favor, arregla la opción de página de inicio." + +#: wp-content/plugins/akismet/admin.php:158 +msgid "Show the number of comments you've approved beside each comment author." +msgstr "Mostrar el número de comentarios que has aprobado junto al autor de cada comentario." + +#: wp-content/plugins/akismet/admin.php:615 +msgid "%s changed the comment status to %s" +msgstr "%s cambió el estado del comentario a %s" + +#: wp-content/plugins/akismet/akismet.php:268 +#: wp-content/plugins/akismet/akismet.php:276 +msgid "Comment status was changed to %s" +msgstr "El estado del comentario se cambió a %s" + +#: wp-content/plugins/akismet/akismet.php:461 +msgid "Akismet cleared this comment during an automatic retry." +msgstr "Akismet borró este comentario durante una revisión automática." + +#: wp-content/plugins/akismet/akismet.php:271 +msgid "Akismet cleared this comment" +msgstr "Akismet borró este comentario" + +#: wp-content/plugins/akismet/akismet.php:274 +msgid "Comment was caught by wp_blacklist_check" +msgstr "Comentario pillado por wp_blacklist_check" + +#: wp-content/plugins/akismet/admin.php:302 +msgid "A server or network problem prevented Akismet from checking %d comment. It has been temporarily held for moderation and will be automatically re-checked in %s." +msgid_plural "A server or network problem prevented Akismet from checking %d comments. They have been temporarily held for moderation and will be automatically re-checked in %s." +msgstr[0] "Un problema del servidor o de la red impidió a Akismet revisar el comentario %d. Ha sido temporalmente puesto en moderación y se volverá a revisar en %s." +msgstr[1] "Un problema del servidor o de la red impidió a Akismet revisar los comentarios %d. Han sido temporalmente puestos en moderación y se volverán a revisar en %s." + +#: wp-content/plugins/akismet/admin.php:211 +msgid "Accessible" +msgstr "Accesible" + +#: wp-content/plugins/akismet/akismet.php:281 +msgid "Akismet was unable to check this comment (response: %s), will automatically retry again later." +msgstr "Akismet fue incapaz de revisar este comentario (respuesta: %s), se volverá a intentar más tarde." + +#: wp-admin/user-edit.php:268 +msgid "Super admin privileges cannot be removed because this user has the network admin email." +msgstr "Los privilegios del Super admin no se pueden eliminar porque este usuario tiene el correo electrónico de administrador de la red." + +#: wp-includes/pluggable.php:1102 +msgid "Permalink: %s" +msgstr "Enlace permanente: %s" + +#: wp-admin/includes/class-wp-themes-list-table.php:82 +msgid "You only have one theme installed right now. Live a little! You can choose from over 1,000 free themes in the WordPress.org Theme Directory at any time: just click on the Install Themes tab above." +msgstr "Tienes sólo un tema instalado. ¡Disfruta de la vida! Puedes elegir entre más de 1.000 temas gratuitos en el directorio de temas de WordPress.org cuando quieras: sólo tienes que hacer clic en la pestaña Instalar tema de arriba." + +#: wp-admin/maint/repair.php:81 +msgid "One or more database tables are unavailable. To allow WordPress to attempt to repair these tables, press the “Repair Database” button. Repairing can take a while, so please be patient." +msgstr "Una o más tablas no están disponibles. Para permitir a WordPress que intente repararlas, pulse el botón “Reparar bases de datos”. La reparación puede llevar un rato, ten paciencia, por favor." + +#: wp-admin/includes/file.php:14 +msgid "Visual Editor RTL Stylesheet" +msgstr "Editor visual de estilos RTL" + +#: wp-admin/theme-editor.php:175 +msgid "This child theme inherits templates from a parent theme, %s." +msgstr "Este tema hijo hereda plantillas de un tema padre, %s." + +#: wp-admin/theme-editor.php:242 +msgid "This is a file in your current parent theme." +msgstr "Este es un archivo del tema padre actual." + +#: wp-admin/includes/media.php:1587 +msgid "If you want to use all capabilities of the uploader, like uploading multiple files at once, please update to lighttpd 1.5." +msgstr "Si quieres usar todas las funciones del cargador, como subir varios archivos al mismo tiempo, por favor, actualiza a Lighttpd 1.5" + +#: wp-admin/includes/theme.php:247 +msgid "Updating this theme will lose any customizations you have made. 'Cancel' to stop, 'OK' to update." +msgstr "Al actualizar este tema se perderán todas las personalizaciones que hayas hecho. 'Cancelar' para parar, 'OK' para actualizar." + +#: wp-app.php:715 wp-app.php:752 wp-app.php:804 +msgid "Error occurred while accessing post metadata for file location." +msgstr "Ha ocurrido un error mientras se accedía a los metadatos de la entrada para la localización del archivo." + +#: wp-admin/includes/class-wp-upgrader.php:1086 +msgid "An error occurred while updating %1$s: %2$s." +msgstr "Ha ocurrido un error cuando se actualizaba %1$s: %2$s." + +#: wp-admin/admin-ajax.php:524 wp-admin/admin-ajax.php:1388 +msgid "An error has occurred. Please reload the page and try again." +msgstr "Ha ocurrido un error. Por favor, recarga la página e inténtalo de nuevo." + +#: wp-admin/upgrade.php:93 +msgid "Your WordPress database has been successfully updated!" +msgstr "¡La base de datos de WordPress se ha actualizado con éxito!" + +#: wp-admin/upgrade.php:82 +msgid "Update WordPress Database" +msgstr "Actualizar la base de datos de WordPress" + +#: wp-admin/update-core.php:85 +msgid "You are about to install WordPress %s in English (US). There is a chance this update will break your translation. You may prefer to wait for the localized version to be released." +msgstr "Se va a instalar WordPress %s en inglés (US). Existe la posibilidad de que esta actualización rompa tu traducción. Puede que prefieras esperar a que salga la versión local." + +#: wp-admin/upgrade.php:81 +msgid "The update process may take a little while, so please be patient." +msgstr "La actualización puede tardar un poco, así que sé paciente, por favor." + +#: wp-admin/upgrade.php:49 +msgid "WordPress › Update" +msgstr "Actualización de WordPress" + +#: wp-admin/upgrade.php:92 +msgid "Update Complete" +msgstr "Actualización completada" + +#: wp-admin/update-core.php:411 +msgid "To update themes or plugins from this screen, use the checkboxes to make your selection and click on the appropriate Update button. Check the box at the top of the Themes or Plugins section to select all and update them all at once." +msgstr "Para actualizar temas o plugins en esta pantalla usa las casillas de verificación para hacer tu selección y haz clic en el botón de actualizar correspondiente. Marca la casilla superior en la sección de temas o plugins para seleccionarlas todas y actualizarlas de una vez." + +#: wp-admin/upgrade.php:79 +msgid "Database Update Required" +msgstr "Es necesaria una actualización de la base de datos" + +#: wp-admin/upgrade.php:80 +msgid "WordPress has been updated! Before we send you on your way, we have to update your database to the newest version." +msgstr "¡WordPress se ha actualizado! Antes de continuar, tenemos que actualizar tu base de datos a la última versión." + +#: wp-admin/upgrade.php:60 +msgid "No Update Required" +msgstr "No es necesaria la actualización" + +#: wp-includes/functions.php:2672 +msgid "Your attempt to update this plugin: “%s” has failed." +msgstr "Su intento de actualizar este plugin: \"%s\" ha fallado." + +#: wp-admin/includes/class-wp-upgrader.php:377 +msgid "Plugin updated successfully." +msgstr "El plugin se ha actualizado con éxito." + +#: wp-admin/includes/class-wp-upgrader.php:1383 wp-admin/update.php:154 +msgid "Update Theme" +msgstr "Actualizar tema" + +#: wp-admin/includes/update.php:207 wp-admin/includes/update.php:282 +msgid "There is a new version of %1$s available. View version %4$s details or update automatically." +msgstr "Hay una versión nueva de %1$s disponible. Ver los detalles de la versión %4$s o actualizar automáticamente." + +#: wp-admin/includes/theme.php:253 +msgid "There is a new version of %1$s available. View version %3$s details. Automatic update is unavailable for this theme." +msgstr "Hay una nueva versión de %1$s disponible. Ver detalles de la versión %3$s. La actualización automática no está disponible para este tema." + +#: wp-admin/includes/class-wp-plugins-list-table.php:233 +msgid "Update Available (%s)" +msgid_plural "Update Available (%s)" +msgstr[0] "(%s) actualización disponible" +msgstr[1] "(%s) actualizaciones disponibles" + +#: wp-admin/includes/class-wp-upgrader.php:376 +msgid "Plugin update failed." +msgstr "Actualización de plugin fallida." + +#: wp-admin/includes/class-wp-upgrader.php:615 +msgid "Theme update failed." +msgstr "Actualización del tema fallida." + +#: wp-admin/includes/class-wp-upgrader.php:616 +msgid "Theme updated successfully." +msgstr "Tema actualizado correctamente." + +#: wp-admin/includes/theme.php:255 +msgid "There is a new version of %1$s available. View version %3$s details or update automatically." +msgstr "Hay una nueva versión de %1$s disponible. Ver detalles de la versión %3$s o actualizar automáticamente." + +#: wp-admin/includes/class-wp-upgrader.php:1026 wp-admin/update.php:54 +msgid "Update Plugin" +msgstr "Actualizar plugin" + +#: wp-admin/includes/update.php:205 wp-admin/includes/update.php:280 +msgid "There is a new version of %1$s available. View version %4$s details. Automatic update is unavailable for this plugin." +msgstr "Hay una nueva versión de %1$s disponible. Ver detalles de la versión %4$s. La actualización automática no está disponible para este plugin." + +#: wp-admin/includes/class-wp-upgrader.php:370 +#: wp-admin/includes/class-wp-upgrader.php:610 +#: wp-admin/includes/class-wp-upgrader.php:863 +msgid "Update package not available." +msgstr "Paquete de actualización no disponible." + +#: wp-includes/post.php:5128 +msgctxt "Post format" +msgid "Standard" +msgstr "Estándar" + +#: wp-admin/options-writing.php:68 wp-admin/includes/meta-boxes.php:256 +#: wp-admin/press-this.php:505 +msgid "Standard" +msgstr "Estándar" + +#: wp-includes/post.php:934 +msgid "Post types cannot exceed 20 characters in length" +msgstr "Los tipos de entradas no pueden exceder de 20 caracteres de longitud" + +#: wp-admin/export.php:145 wp-admin/export.php:177 +msgid "Date range:" +msgstr "Rango de fechas:" + +#: wp-admin/export.php:129 +msgid "This will contain all of your posts, pages, comments, custom fields, terms, navigation menus and custom posts." +msgstr "Esto contendrá todas tus entradas, páginas, comentarios, campos personalizados, menús de navegación y entradas personalizadas." + +#: wp-admin/export.php:125 +msgid "Choose what to export" +msgstr "Elige qué exportar" + +#: wp-admin/export.php:123 +msgid "Once you’ve saved the download file, you can use the Import function in another WordPress installation to import this site." +msgstr "Una vez que hayas guardado el archivo de descarga, puedes utilizar la función importar en otra instalación de WordPress para importar este sitio." + +#: wp-admin/export.php:138 wp-admin/export.php:170 +msgid "Authors:" +msgstr "Autores:" + +#: wp-admin/export.php:128 +msgid "All content" +msgstr "Todo el contenido" + +#: wp-includes/script-loader.php:335 +msgid "Add new Tag" +msgstr "Añadir nueva etiqueta" + +#: wp-includes/admin-bar.php:266 +msgctxt "admin bar menu group label" +msgid "Add New" +msgstr "Añadir nueva" + +#: wp-admin/includes/file.php:309 wp-admin/includes/file.php:429 +msgid "Sorry, this file type is not permitted for security reasons." +msgstr "Perdona, por razones de seguridad, este tipo de archivos no está permitido." + +#: wp-admin/options-media.php:84 wp-admin/options-media.php:85 +msgid "When possible, embed the media content from a URL directly onto the page. For example: links to Flickr and YouTube." +msgstr "Siempre que sea posible, incrusta el contenido multimedia pegando la URL directamente en la página. Por ejemplo: pegando los enlaces de Flickr y YouTube. " + +#: wp-includes/post.php:5137 +msgctxt "Post format" +msgid "Audio" +msgstr "Audio" + +#: wp-admin/user-new.php:22 +msgid "" +"Hi,\n" +"You've been invited to join '%1$s' at\n" +"%2$s as a %3$s.\n" +"If you do not want to join this site please ignore\n" +"this email. This invitation will expire in a few days.\n" +"\n" +"Please click the following link to activate your user account:\n" +"%%s" +msgstr "" +"Hola,\n" +"Has sido invitado a unirte a '%1$s' en\n" +"%2$s como %3$s.\n" +"Si no quieres unirte a este sitio, por favor ignora este correo electrónico\n" +"Esta invitación caducará en unos días.\n" +"\n" +"Por favor, haga click en el siguiente enlace para activar su cuenta de usuario:\n" +"%%s" + +#: wp-includes/class-wp-xmlrpc-server.php:2234 +#: wp-includes/class-wp-xmlrpc-server.php:2539 +msgid "Invalid post format" +msgstr "Formato de entrada no válido" + +#: wp-admin/admin-header.php:24 +msgid "%1$s — WordPress" +msgstr "%1$s — WordPress" + +#: wp-admin/admin-header.php:118 +msgid "%s Global Dashboard" +msgstr "%s Escritorio global" + +#: wp-admin/admin-header.php:116 +msgid "%s Network Admin" +msgstr "%s Administrador de la red" + +#: wp-admin/user-edit.php:212 +msgid "More information" +msgstr "Más información" + +#: wp-includes/pluggable.php:1077 wp-includes/pluggable.php:1190 +msgid "Whois : http://whois.arin.net/rest/ip/%s" +msgstr "Whois : http://whois.arin.net/rest/ip/%s" + +#: wp-admin/includes/internal-linking.php:85 +msgid "Open link in a new window/tab" +msgstr "Abrir enlace en una nueva ventana/pestaña" + +#: wp-admin/includes/internal-linking.php:105 +msgid "No search term specified. Showing recent items." +msgstr "" +"No se ha indicado ningún término de búsqueda. Se mostrarán\n" +" los objetos más recientes." + +#: wp-admin/includes/class-wp-comments-list-table.php:258 +msgctxt "column name" +msgid "In Response To" +msgstr "En respuesta a" + +#: wp-admin/includes/class-wp-comments-list-table.php:354 +msgid "Submitted on %2$s at %3$s" +msgstr "Enviado el %2$s a las %3$s" + +#: wp-includes/plugin.php:676 +msgid "Only a static class method or function can be used in an uninstall hook." +msgstr "Sólo una función o método de la clase estática pueden ser usados en un gancho de desinstalación." + +#: wp-admin/edit-comments.php:122 +msgid "Documentation on Comment Spam" +msgstr "Documentación sobre los comentarios de spam" + +#: wp-admin/edit-comments.php:123 +msgid "Documentation on Keyboard Shortcuts" +msgstr "Documentación sobre atajos de teclado" + +#: wp-admin/widgets.php:38 +msgid "The Available Widgets section contains all the widgets you can choose from. Once you drag a widget into a sidebar, it will open to allow you to configure its settings. When you are happy with the widget settings, click the Save button and the widget will go live on your site. If you click Delete, it will remove the widget." +msgstr "La sección de widgets disponibles contiene todos los widgets que puedes elegir. Cuando arrastres el widget al lateral, se abrirá para que puedas configurar sus opciones. Cuando las tengas a tu gusto, haz clic en botón de guardar y el widget se pondrá a funcionar en tu sitio. Si pulsas borrar, se quitará el widget." + +#: wp-admin/media.php:74 +msgid "Remember to click Update Media to save metadata entered or changed." +msgstr "Recuerda hacer clic en Actualizar archivos multimedia para guardar los metadatos que hayas introducido o cambiado." + +#: wp-admin/media.php:73 +msgid "Note that you crop the image by clicking on it (the Crop icon is already selected) and dragging the cropping frame to select the desired part. Then click Save to retain the cropping." +msgstr "Se recorta la imagen haciendo clic en la misma (el icono de recorte ya estará seleccionado) y arrastrando el marcho de recorte hasta donde se desee. Para fijarla, haz clic en guardar." + +#: wp-admin/media.php:72 +msgid "For images only, you can click on Edit Image under the thumbnail to expand out an inline image editor with icons for cropping, rotating, or flipping the image as well as for undoing and redoing. The boxes on the right give you more options for scaling the image, for cropping it, and for cropping the thumbnail in a different way than you crop the original image. You can click on Help in those boxes to get more information." +msgstr "(Sólo para imágenes) Puedes hacer clic en editar imágenes, debajo de la miniatura, para obtener el menú de edición de imágenes y recortar, rotar o invertir la imagen, así como deshacer y rehacer. Las cajas de la derecha te dan más opciones para escalar y recortar la imagen; y para recortar la miniatura de forma diferente de la imagen original. Puedes hacer clic en la ayuda en esas cajas para obtener más información." + +#: wp-admin/media.php:71 +msgid "This screen allows you to edit five fields for metadata in a file within the media library." +msgstr "Esta pantalla te permite editar cinco campos para metadatos de un archivo en la biblioteca multimedia." + +#: wp-admin/user-new.php:175 +msgid "The requested user does not exist." +msgstr "El usuario solicitado no existe" + +#: wp-admin/user-new.php:228 +msgid "Enter the email address of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite." +msgstr "Escribe el correo electrónico de un usuario de esta red para invitarlo a este sitio. A esa persona se le enviará uno correo electrónico para que confirme la invitación." + +#: wp-admin/user-new.php:232 +msgid "E-mail or Username" +msgstr "Correo electrónico o nombre usuario" + +#: wp-admin/user-new.php:226 +msgid "Add Existing User" +msgstr "Añadir usuario ya existente" + +#: wp-admin/user-new.php:178 +msgid "Please enter a valid email address." +msgstr "Por favor, escribe un correo electrónico válido." + +#: wp-admin/user-new.php:267 +msgid "Create a brand new user and add it to this site." +msgstr "Crear un nuevo usuario y añadirlo a este sitio." + +#: wp-admin/user-new.php:231 +msgid "Enter the email address or username of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite." +msgstr "Escribe el correo electrónico o el nombre de usuario de un miembro de esta red para invitarlo a este sitio. A esa persona se le enviará uno correo electrónico para que confirme la invitación." + +#: wp-includes/post.php:2312 +msgid "Passing an integer number of posts is deprecated. Pass an array of arguments instead." +msgstr "Pasar un número entero de entradas es obsoleto. Pasa una matriz de argumentos en su lugar." + +#: wp-admin/admin-header.php:26 +msgid "%1$s ‹ %2$s — WordPress" +msgstr "%1$s ‹ %2$s — WordPress" + +#: wp-includes/post.php:5129 +msgctxt "Post format" +msgid "Aside" +msgstr "Minientrada" + +#: wp-includes/post.php:5130 +msgctxt "Post format" +msgid "Chat" +msgstr "Chat" + +#: wp-includes/post.php:5131 +msgctxt "Post format" +msgid "Gallery" +msgstr "Galería" + +#: wp-includes/post.php:5132 +msgctxt "Post format" +msgid "Link" +msgstr "Enlace" + +#: wp-includes/post.php:5133 +msgctxt "Post format" +msgid "Image" +msgstr "Imagen" + +#: wp-includes/post.php:5134 +msgctxt "Post format" +msgid "Quote" +msgstr "Cita" + +#: wp-includes/post.php:5135 +msgctxt "Post format" +msgid "Status" +msgstr "Estado" + +#: wp-includes/post.php:5136 +msgctxt "Post format" +msgid "Video" +msgstr "Vídeo" + +#: wp-admin/user-new.php:254 wp-admin/user-new.php:338 +msgid "Add the user without sending them a confirmation email." +msgstr "Añadir el usuario sin enviarle un email de confirmación." + +#: wp-includes/post.php:1186 +msgid "No pages found in Trash." +msgstr "Ninguna página encontrada en la papelera." + +#: wp-includes/post.php:1185 +msgid "No pages found." +msgstr "No se encontraron páginas." + +#: wp-includes/post.php:1186 +msgid "No posts found in Trash." +msgstr "Ningún post encontrado en la papelera." + +#: wp-includes/admin-bar.php:165 +msgid "Shortlink" +msgstr "Enlace corto" + +#: wp-admin/maint/repair.php:83 +msgid "WordPress can automatically look for some common database problems and repair them. Repairing can take a while, so please be patient." +msgstr "WordPress puede revisar automáticamente algunos problemas habituales de bases de datos. Repararlos puede llevar un rato, ten paciencia, por favor." + +#: wp-includes/class-wp-xmlrpc-server.php:1581 +msgid "Invalid attachment ID." +msgstr "ID de adjunto no válido." + +#: wp-includes/class-wp-xmlrpc-server.php:1640 +msgid "Sorry, you cannot upload files." +msgstr "Perdona, pero no puedes subir archivos." + +#: wp-includes/registration-functions.php:7 wp-includes/registration.php:7 +msgid "This file no longer needs to be included." +msgstr "Ya no es necesario incluir este archivo." + +#: wp-admin/update-core.php:276 +msgid "Please Note: Any customizations you have made to theme files will be lost. Please consider using child themes for modifications." +msgstr "Atención: Se perderá cualquier personalización que hayas hecho a los archivos del tema. Por favor, considere el uso de temas hijos para mantener cambios." + +#: wp-admin/includes/class-wp-posts-list-table.php:178 +msgctxt "posts" +msgid "Sticky (%s)" +msgid_plural "Sticky (%s)" +msgstr[0] "(%s) fija" +msgstr[1] "(%s) fijas" + +#: wp-login.php:402 +msgid "Please enter your username or email address. You will receive a link to create a new password via email." +msgstr "Por favor, escribe tu nombre de usuario o tu correo electrónico. Recibirás un enlace para crear la contraseña nueva por correo electrónico." + +#: wp-admin/update-core.php:139 +msgid "Please select one or more plugins to update." +msgstr "Por favor, elige uno o más plugins a actualizar." + +#: wp-admin/update-core.php:137 +msgid "Please select one or more themes to update." +msgstr "Por favor, elige uno o más temas para actualizarlos." + +#: wp-admin/update-core.php:145 +msgid "Last checked on %1$s at %2$s." +msgstr "Última revisión el %1$s a las %2$s." + +#: wp-admin/update-core.php:146 +msgid "Check Again" +msgstr "Comprobar de nuevo" + +#: wp-includes/default-widgets.php:264 wp-includes/default-widgets.php:493 +msgid "Display as dropdown" +msgstr "Mostrar como desplegable" + +#: wp-includes/class-wp-xmlrpc-server.php:371 +msgid "Large size image height" +msgstr "Altura de la imagen de tamaño grande" + +#: wp-includes/class-wp-xmlrpc-server.php:356 +msgid "Medium size image width" +msgstr "Achura de la imagen de tamaño medio" + +#: wp-includes/class-wp-xmlrpc-server.php:361 +msgid "Medium size image height" +msgstr "Altura de la imagen de tamaño medio" + +#: wp-includes/class-wp-xmlrpc-server.php:366 +msgid "Large size image width" +msgstr "Tamaño grande de la imagen" + +#: wp-includes/class-wp-xmlrpc-server.php:351 +msgid "Crop thumbnail to exact dimensions" +msgstr "Recortar la miniatura a sus dimensiones exactas" + +#: wp-includes/class-wp-xmlrpc-server.php:346 +msgid "Thumbnail Height" +msgstr "Altura de la miniatura" + +#: wp-includes/class-wp-xmlrpc-server.php:341 +msgid "Thumbnail Width" +msgstr "Anchura de la miniatura" + +#: wp-admin/includes/class-wp-upgrader.php:1085 +msgid "The update process is starting. This process may take a while on some hosts, so please be patient." +msgstr "El proceso de actualización ha empezado. Puede llevar un rato en algunos servidores, ten paciencia, por favor." + +#: wp-includes/script-loader.php:282 +msgid "No matches found." +msgstr "No se han encontrado coincidencias." + +#: wp-login.php:459 +msgid "New password" +msgstr "Nueva contraseña" + +#: wp-login.php:463 +msgid "Confirm new password" +msgstr "Confirma la nueva contraseña" + +#: wp-login.php:218 +msgid "To reset your password, visit the following address:" +msgstr "Para restaurar la contraseña, visita la siguiente dirección:" + +#: wp-login.php:452 wp-login.php:471 +msgid "Reset Password" +msgstr "Restaurar contraseña" + +#: wp-login.php:441 +msgid "The passwords do not match." +msgstr "Las contraseñas no coinciden." + +#: wp-login.php:444 +msgid "Password Reset" +msgstr "Contraseña restaurada" + +#: wp-login.php:444 +msgid "Your password has been reset." +msgstr "Tu contraseña ha sido restaurada." + +#: wp-login.php:214 +msgid "Someone requested that the password be reset for the following account:" +msgstr "Alguien ha solicitado que sea restaurada la contraseña de la siguiente cuenta:" + +#: wp-login.php:217 +msgid "If this was a mistake, just ignore this email and nothing will happen." +msgstr "Si ha sido un error, ignora este correo y no pasará nada." + +#: wp-login.php:452 +msgid "Enter your new password below." +msgstr "Introduce tu nueva contraseña abajo." + +#: wp-includes/post.php:538 +msgid "Invalid post" +msgstr "Entrada no válida" + +#: wp-admin/admin-header.php:19 +msgid "Global Dashboard" +msgstr "Escritorio global" + +#: wp-includes/admin-bar.php:91 +msgid "Edit My Profile" +msgstr "Editar mi perfil" + +#: wp-includes/admin-bar.php:142 +msgid "Manage Comments" +msgstr "Gestionar comentarios" + +#: wp-admin/options-general.php:246 +msgid "Documentation on date and time formatting." +msgstr "Documentación sobre formatos de fecha y hora." + +#: wp-admin/includes/user.php:376 +msgid "You’re using the auto-generated password for your account. Would you like to change it to something easier to remember?" +msgstr "Estás utilizando la contraseña generada automáticamente para tu cuenta. ¿Quieres cambiarla por otra más fácil de recordar?" + +#: wp-admin/themes.php:157 +msgid "Theme filters" +msgstr "Filtros de temas" + +#: wp-admin/themes.php:183 +msgid "Apply Filters" +msgstr "Aplicar filtros" + +#: wp-admin/themes.php:185 +msgid "Close filters" +msgstr "Cerrar filtros" + +#: wp-admin/includes/theme.php:316 +msgid "RTL Language Support" +msgstr "Soporte del lenguaje RTL" + +#: wp-includes/admin-bar.php:133 wp-admin/includes/theme.php:303 +msgid "Blavatar" +msgstr "Blavatar" + +#: wp-admin/includes/theme.php:285 +msgid "Light " +msgstr "Brillante" + +#: wp-admin/includes/theme.php:304 +msgid "BuddyPress" +msgstr "BuddyPress" + +#: wp-admin/includes/theme.php:309 +msgid "Editor Style" +msgstr "Estilo del editor" + +#: wp-admin/includes/theme.php:312 +msgid "Front Page Posting" +msgstr "Escritura en la página principal" + +#: wp-admin/includes/theme.php:320 +msgid "Translation Ready" +msgstr "Traducción lista" + +#: wp-content/plugins/akismet/admin.php:342 +#: wp-content/plugins/akismet/admin.php:349 +msgid "View comment history" +msgstr "Ver histórico de comentarios" + +#: wp-content/plugins/akismet/admin.php:381 +msgid "Akismet" +msgstr "Akismet" + +#: wp-content/plugins/akismet/admin.php:688 +msgid "Akismet was unable to re-check this comment (response: %s)" +msgstr "Akismet ha sido incapaz de revisar de nuevo el comentario (respuesta: %s)" + +#: wp-content/plugins/akismet/admin.php:331 +msgid "Flagged as spam by %s" +msgstr "Marcado como spam por %s" + +#: wp-content/plugins/akismet/admin.php:680 +msgid "Akismet re-checked and caught this comment as spam" +msgstr "Akismet ha revisado de nuevo el comentario y lo considera spam" + +#: wp-content/plugins/akismet/admin.php:14 +msgid "Please upgrade WordPress to a current version, or downgrade to version 2.4 of the Akismet plugin." +msgstr "Por favor, actualiza WordPress a la versión actual, o vuelve a la version 2.4 el plugin de Akismet" + +#: wp-content/plugins/akismet/admin.php:333 +msgid "Un-spammed by %s" +msgstr "Desmarcado como spam por %s" + +#: wp-content/plugins/akismet/admin.php:684 +msgid "Akismet re-checked and cleared this comment" +msgstr "Akismet revisó de nuevo este comentario y lo ha marcado como bueno" + +#: wp-admin/themes.php:92 +msgid "Options:" +msgstr "Opciones:" + +#: wp-admin/comment.php:64 +msgid "You are not allowed to edit this comment." +msgstr "No tienes permiso para editar este comentario." + +#: wp-admin/includes/file.php:985 +msgid "To perform the requested action, WordPress needs to access your web server." +msgstr "Para realizar la operación que has solicitado WordPress necesita tener acceso a tu servidor web." + +#: wp-includes/query.php:1945 +msgid "\"caller_get_posts\" is deprecated. Use \"ignore_sticky_posts\" instead." +msgstr "\"caller_get_posts\" está obsoleto. Utilice \"ignore_sticky_posts\" en su lugar." + +#: wp-includes/taxonomy.php:70 +msgid "New Link Category Name" +msgstr "Nuevo nombre de categoría de enlaces" + +#: wp-includes/taxonomy.php:69 +msgid "Add New Link Category" +msgstr "Añadir nueva categoría de enlaces" + +#: wp-includes/taxonomy.php:68 +msgid "Update Link Category" +msgstr "Actualizar categoría de enlaces" + +#: wp-includes/taxonomy.php:66 +msgid "All Link Categories" +msgstr "Todas las categorías de enlaces" + +#: wp-includes/taxonomy.php:64 +msgid "Search Link Categories" +msgstr "Buscar categorías de enlaces" + +#: wp-includes/taxonomy.php:63 +msgid "Link Category" +msgstr "Categoría de enlaces" + +#: wp-admin/includes/class-wp-list-table.php:519 +msgid "Current page" +msgstr "Página actual" + +#: wp-admin/includes/class-wp-list-table.php:510 +msgid "Go to the previous page" +msgstr "Ir a la página anterior" + +#: wp-admin/includes/class-wp-themes-list-table.php:65 +#: wp-admin/includes/class-wp-list-table.php:187 +msgid "No items found." +msgstr "No se ha encontrado nada." + +#: wp-admin/includes/class-wp-list-table.php:530 +msgid "Go to the next page" +msgstr "Ir a la página siguiente" + +#: wp-admin/includes/class-wp-list-table.php:537 +msgid "Go to the last page" +msgstr "Ir a la última página" + +#: wp-admin/admin-ajax.php:231 wp-admin/includes/class-wp-list-table.php:485 +#: wp-admin/includes/class-wp-list-table.php:884 +msgid "1 item" +msgid_plural "%s items" +msgstr[0] "1 elemento" +msgstr[1] "%s elementos" + +#: wp-admin/includes/class-wp-users-list-table.php:79 +msgid "No matching users were found." +msgstr "No se han encontrado usuarios que se ajusten a lo que buscas." + +#: wp-admin/includes/class-wp-theme-install-list-table.php:109 +msgid "No themes match your request." +msgstr "Ningún tema se ajusta a lo que buscas." + +#: wp-admin/includes/class-wp-list-table.php:503 +msgid "Go to the first page" +msgstr "Ir a la primera página" + +#: wp-admin/includes/dashboard.php:471 +msgid "Search Sites" +msgstr "Buscar sitios" + +#: wp-admin/includes/dashboard.php:437 +msgid "Create a New User" +msgstr "Crear un nuevo usuario" + +#: wp-admin/includes/dashboard.php:445 +msgid "You have %1$s and %2$s." +msgstr "Tienes %1$s y %2$s." + +#: wp-admin/includes/dashboard.php:443 +msgid "%s site" +msgid_plural "%s sites" +msgstr[0] "%s sitio" +msgstr[1] "%s sitios" + +#: wp-admin/includes/dashboard.php:442 +msgid "%s user" +msgid_plural "%s users" +msgstr[0] "%s usuario" +msgstr[1] "%s usuarios" + +#: wp-admin/admin-header.php:17 wp-admin/admin-header.php:160 +msgid "Network Admin" +msgstr "Administrador de la red" + +#: wp-admin/update-core.php:155 +msgid "Important: before updating, please back up your database and files. For help with updates, visit the Updating WordPress Codex page." +msgstr "Importante: antes de la actualización, por favor, realiza un respaldo de la base de datos y ficheros. Si necesitas ayuda para la actualización, visita la página del Codex: Actualización de WordPress." + +#: wp-admin/includes/dashboard.php:89 +msgid "http://wordpress.org/news/" +msgstr "http://wordpress.org/news/" + +#: wp-admin/includes/dashboard.php:90 +msgid "http://wordpress.org/news/feed/" +msgstr "http://wordpress.org/news/feed/" + +#: wp-includes/wp-db.php:742 +msgid "" +"

    Can’t select database

    \n" +"

    We were able to connect to the database server (which means your username and password is okay) but not able to select the %1$s database.

    \n" +"
      \n" +"
    • Are you sure it exists?
    • \n" +"
    • Does the user %2$s have permission to use the %1$s database?
    • \n" +"
    • On some systems the name of your database is prefixed with your username, so it would be like username_%1$s. Could that be the problem?
    • \n" +"
    \n" +"

    If you don't know how to set up a database you should contact your host. If all else fails you may find help at the WordPress Support Forums.

    " +msgstr "" +"

    No se pudo elegir base de datos

    \n" +"

    Hemos podido conectar con el servidor de la bases de datos (lo que significa que tu nombre de usuario y la contraseña están correctos) pero no se pudo elegir la base de datos %1$s.

    \n" +"
      \n" +"
    • ¿Estás seguro que existe?
    • \n" +"
    • ¿El usuario %2$s tiene permiso para utilizar la base de datos %1$?
    • \n" +"
    • En algunos sistemas el nombre de la base de datos es el prefijo con el nombre de usuario, que sería como username_%1$s. ¿Podría ser ésto el problema?
    • \n" +"
    \n" +"

    Si no sabes cómo configurar una base de datos debes ponerte en contacto con el administrador de su hosting. Si todo lo demás falla puedes encontrar ayuda en los Foros de Soporte de WordPress.

    " + +#: wp-admin/options-discussion.php:63 +msgid "(Signup has been disabled. Only members of this site can comment.)" +msgstr "(El registro ha sido deshabilitado. Sólo los miembros de este sitio pueden comentar.)" + +#: wp-admin/update-core.php:52 +msgid "You can update to WordPress %2$s automatically or download the package and install it manually:" +msgstr "Puedes actualizar a WordPress %2$s automáticamente o descargar el paquete e instalarlo manualmente:" + +#: wp-admin/user-new.php:146 +msgid "New users will receive an email letting them know they’ve been added as a user for your site. By default, this email will also contain their password. Uncheck the box if you don’t want the password to be included in the welcome email." +msgstr "Los usuarios nuevos recibirán un correo electrónico haciéndoles saber que han sido añadidos como usuarios de tu sitio. De forma predeterminada, este correo electrónico también contendrá su contraseña. Desmarca la casilla si no quieres que la contraseña se incluya en el correo electrónico de bienvenida." + +#: wp-admin/includes/media.php:2211 +msgid "Link text, e.g. “Lucy on YouTube”" +msgstr "Texto del enlace, p.e. “Lucy en YouTube”" + +#: wp-admin/includes/theme.php:251 +msgid "There is a new version of %1$s available. View version %3$s details." +msgstr "Hay una nueva versión de %1$s disponible. Ver detalles de la versión %3$s." + +#: wp-admin/includes/update.php:203 wp-admin/includes/update.php:278 +msgid "There is a new version of %1$s available. View version %4$s details." +msgstr "Hay una nueva versión de %1$s disponible. Ver detalles de la versión %4$s. " + +#: wp-admin/includes/class-wp-upgrader.php:1233 +msgid "Go to themes page" +msgstr "Ir a la página de temas" + +#: wp-admin/edit.php:221 +msgid "Item moved to the Trash." +msgid_plural "%s items moved to the Trash." +msgstr[0] "Movido a la papelera" +msgstr[1] "%s movidos a la papelera." + +#: wp-admin/includes/class-wp-upgrader.php:1046 +#: wp-admin/includes/class-wp-upgrader.php:1201 +msgid "Go to plugins page" +msgstr "Ir a la página de plugins" + +#: wp-admin/includes/class-wp-upgrader.php:1202 +#: wp-admin/includes/class-wp-upgrader.php:1234 +msgid "Go to WordPress Updates page" +msgstr "Ir a la página de actualizaciones de WordPress" + +#: wp-admin/import.php:139 +msgid "If the importer you need is not listed, search the plugins directory to see if an importer is available." +msgstr "Si el importador que necesitas no está en la lista, busca en el directorio de plugins para ver si está disponible." + +#: wp-content/plugins/akismet/widget.php:43 +msgid "Spam Blocked" +msgstr "Spam bloqueado" + +#: wp-admin/includes/nav-menu.php:77 +msgid "%s (Pending)" +msgstr "%s (Pendiente)" + +#: wp-admin/includes/nav-menu.php:1115 +msgid "Click Save Menu to make pending menu items public." +msgstr "Haz click en Guardar menú para hacer públicos los elementos de menú pendientes." + +#: wp-content/plugins/akismet/admin.php:290 +msgid "You must enter your Akismet API key for it to work." +msgstr "Debes introducir tu clave de API de Akismet para que funcione." + +#: wp-content/plugins/akismet/admin.php:144 +msgid "For many people, Akismet will greatly reduce or even completely eliminate the comment and trackback spam you get on your site. If one does happen to get through, simply mark it as \"spam\" on the moderation screen and Akismet will learn from the mistakes. If you don't have an API key yet, you can get one at Akismet.com." +msgstr "En la mayoría de los casos, Akismet reduce enormemente (o incluso elimina) el spam en los comentarios y trackbacks de tu sitio. Si se cuela alguno simplemente debes marcar como spam en la pantalla de moderación y Akismet aprenderá de sus errores. SI todavía no tienes una clave de API puedes obtener una en Akismet.com." + +#: wp-content/plugins/akismet/admin.php:146 +msgid "Akismet API Key" +msgstr "Clave de API de Akismet" + +#: wp-content/plugins/akismet/admin.php:150 +msgid "What is this?" +msgstr "¿Qué es esto?" + +#: wp-includes/load.php:112 +msgid "Your server is running PHP version %1$s but WordPress %2$s requires at least %3$s." +msgstr "Tu servidor está ejecutando la versión %1$s de PHP, pero WordPess %2$s necesita, al menos, la versión %3$s." + +#: wp-admin/includes/dashboard.php:435 +msgid "Create a New Site" +msgstr "Crear nuevo sitio" + +#: wp-admin/plugins.php:319 +msgctxt "plugins per page (screen options)" +msgid "Plugins" +msgstr "Plugins" + +#: wp-admin/upload.php:140 +msgctxt "items per page (screen options)" +msgid "Media items" +msgstr "Elementos multimedia" + +#: wp-admin/edit-comments.php:112 +msgctxt "comments per page (screen options)" +msgid "Comments" +msgstr "Comentarios" + +#: wp-admin/users.php:20 +msgctxt "users per page (screen options)" +msgid "Users" +msgstr "Usuarios" + +#: wp-admin/custom-header.php:505 +msgid "Images of exactly %1$d × %2$d pixels will be used as-is." +msgstr "Las imágenes de exactamente %1$d x %2$d pixels se utilizarán tal cual." + +#: wp-admin/theme-install.php:46 +msgid "Documentation on Adding New Themes" +msgstr "Documentación sobre Añadir nuevos temas" + +#: wp-admin/custom-header.php:701 +msgid "Crop and Publish" +msgstr "Recortar y publicar" + +#: wp-admin/custom-header.php:104 +msgid "Some themes come with additional header images bundled. If you see multiple images displayed, select the one you’d like and click the Save Changes button." +msgstr "Algunos temas llevan incluidas imágenes de cabecera adicionales. Si ves que se muestran varias imágenes elige la que te guste y haz clic en el botón Guardar cambios." + +#: wp-includes/pluggable.php:1171 +msgid "A new trackback on the post \"%s\" is waiting for your approval" +msgstr "Un nuevo trackback a la entrada \"%s\" está esperando tu aprobación" + +#: wp-admin/theme-editor.php:28 +msgid "Upgrading to a newer version of the same theme will override changes made here. To avoid this, consider creating a child theme instead." +msgstr "Si actualizas a una versión más reciente del mismo tema sobreescribirá los cambios realizados aquí. Para evitar esto plantéate crear un tema hijo (child theme) en su lugar." + +#: wp-admin/plugins.php:323 +msgid "You can find additional plugins for your site by using the Plugin Browser/Installer functionality or by browsing the WordPress Plugin Directory directly and installing new plugins manually. To manually install a plugin you generally just need to upload the plugin file into your /wp-content/plugins directory. Once a plugin has been installed, you can activate it here." +msgstr "Puedes encontrar plugins adicionales para tu sitio usando la funcionalidad Instalador/navegador de plugins o navegando por el directorio de plugins de WordPress directamente e instalando manualmente nuevos plugins. Para instalar manualmente un plugin normalmente necesitarás subir el fichero del plugin a tu directorio /wp-content/plugins. Una vez se haya instalado el plugin puedes activarlo aquí." + +#: wp-admin/edit-link-form.php:45 +msgid "XFN stands for XHTML Friends Network, which is optional. WordPress allows the generation of XFN attributes to show how you are related to the authors/owners of the site to which you are linking." +msgstr "XFN se refiere a red de amigos XHTML (XHTML Friends Network), y es opcional. WordPress permite generar atributos XFN que muestran tu relación con los autores/propietarios del sitio al que estés enlazando." + +#: wp-admin/plugins.php:327 +msgid "Documentation on Managing Plugins" +msgstr "Documentación sobre cómo gestionar plugins" + +#: wp-admin/theme-editor.php:35 +msgid "Documentation on Template Tags" +msgstr "Documentación sobre etiquetas de plantilla" + +#: wp-admin/theme-editor.php:34 +msgid "Documentation on Editing Files" +msgstr "Documentación sobre cómo editar archivos" + +#: wp-admin/themes.php:46 wp-admin/theme-editor.php:33 +msgid "Documentation on Using Themes" +msgstr "Documentación sobre el uso de temas" + +#: wp-admin/theme-editor.php:32 +msgid "Documentation on Theme Development" +msgstr "Documentación sobre el desarrollo de temas" + +#: wp-admin/includes/file.php:995 +msgid "FTP Password" +msgstr "Contraseña FTP" + +#: wp-admin/includes/file.php:994 +msgid "FTP Username" +msgstr "Usuario FTP" + +#: wp-admin/includes/file.php:991 +msgid "FTP/SSH Password" +msgstr "Contraseña FTP/SSH" + +#: wp-admin/includes/file.php:990 +msgid "FTP/SSH Username" +msgstr "Usuario FTP/SSH" + +#: wp-admin/index.php:45 +msgid "Other WordPress News - Shows the feed from WordPress Planet. You can configure it to show a different feed of your choosing." +msgstr "Otras noticias sobre WordPress - Muestra el feed de WordPress Planet. Puedes configurarlo para que muestre un feed diferente, a tu elección." + +#: wp-admin/options-reading.php:46 +msgid "You can choose what’s displayed on the front page of your site. It can be posts in reverse chronological order (classic blog), or a fixed/static page. To set a static home page, you first need to create two Pages. One will become the front page, and the other will be where your posts are displayed." +msgstr "Puedes elegir lo que se muestra en la página principal de tu sitio. Pueden ser entradas en orden cronológico inverso (blog clásico) o una página fija/estática. Para definir una página de inicio estática primero tienes que crear dos páginas. Una será la página principal y la otra donde se mostrarán tus entradas." + +#: wp-admin/options-permalink.php:23 +msgid "The Optional fields let you customize the “category” and “tag” base names that will appear in archive URLs. For example, the page listing all posts in the “Uncategorized” category could be /topics/uncategorized instead of /category/uncategorized." +msgstr "Los campos opcionales te permiten personalizar los nombres base de “categoría” y “etiqueta” que aparecerán en las URLs del archivo. Por ejemplo, la página con el listado de todas las entradas de la categoría “Sin categoría” podrían ser como /temas/sin-categoria en vez de /category/sin-categoria." + +#: wp-admin/themes.php:208 +msgid "The following themes are installed but incomplete. Themes must have a stylesheet and a template." +msgstr "Los siguientes temas están instalados pero incompletos. Los temas deben tener una hoja de estilos y una plantilla." + +#: wp-admin/index.php:46 +msgid "Plugins - Features the most popular, newest, and recently updated plugins from the WordPress.org Plugin Directory." +msgstr "Plugins - Muestra los plugins más populares, más nuevos y los recientemente actualizados del directorio de plugins de WordPress.org." + +#: wp-admin/options-permalink.php:21 +msgid "When you assign multiple categories or tags to a post, only one can show up in the permalink: the lowest numbered category. This applies if your custom structure includes %category% or %tag%." +msgstr "Cuando asignas varias categorías o etiquetas a una entrada sólo se puede mostrar una en el enlace permanente: la categoría con el número más bajo. Esto es así si tu estructura personalizada contiene %category% o %tag%." + +#: wp-admin/options-permalink.php:20 +msgid "If you pick an option other than Default, your general URL path with structure tags, terms surrounded by %, will also appear in the custom structure field and your path can be further modified there." +msgstr "Si eliges una opción distinta de la que está por defecto tu ruta general de URL con etiquetas de estructura, los términos rodeados por %, también aparecerán en el campo de estructura personalizada y podrás cambiar aquí tu ruta en otro momento." + +#: wp-admin/widgets.php:42 +msgid "Many themes show some sidebar widgets by default until you edit your sidebars, but they are not automatically displayed in your sidebar management tool. After you make your first widget change, you can re-add the default widgets by adding them from the Available Widgets area." +msgstr "Muchos temas muestran varios widgets de barra lateral por defecto hasta que editas tus barras laterales, pero no se muestran automáticamente en tu herramienta de gestión de barras laterales. Una vez hagas tu primer cambio en un widget puedes volver a añadirlo desde el área de widgets disponibles." + +#: wp-admin/includes/class-wp-themes-list-table.php:188 +msgid "The template files are located in %2$s. The stylesheet files are located in %3$s. %4$s uses templates from %5$s. Changes made to the templates will affect both themes." +msgstr "Los archivos de la plantilla están situados en %2$s. Los archivos de la hoja de estilos están situados en %3$s. %4$s utiliza plantillas de %5$s. Los cambios que se hagan a las plantillas afectarán a ambos temas." + +#: wp-admin/widgets.php:39 +msgid "If you want to remove the widget but save its setting for possible future use, just drag it into the Inactive Widgets area. You can add them back anytime from there. This is especially helpful when you switch to a theme with fewer or different widget areas." +msgstr "Si quieres quitar el widget, pero también guardar los ajustes por si los necesitaras en el futuro, simplemente arrástralo al área de widgets inactivos. Puedes añadirlos de nuevo en cualquier otro momento desde ahí. Esto es especialmente útil cuando cambias a un tema con pocas o distintas áreas de widgets." + +#: wp-admin/users.php:26 +msgid "To add a new user for your site, click the Add New button at the top of the screen or Add New in the Users menu section." +msgstr "Para añadir un usuario nuevo a tu sitio haz clic en el botón Añadir nuevo en la parte superior de la pantalla o en la sección Añadir nuevo del menú Usuarios." + +#: wp-admin/options-media.php:19 +msgid "You can set maximum sizes for images inserted into your written content; you can also insert an image as Full Size." +msgstr "Puedes establecer los tamaños máximos para las imágenes insertadas en tu contenido; también puedes insertar una imagen a tamaño completo." + +#: wp-admin/plugin-install.php:41 +msgid "If you know what you’re looking for, Search is your best bet. The Search screen has options to search the WordPress.org Plugin Directory for a particular Term, Author, or Tag. You can also search the directory by selecting a popular tags. Tags in larger type mean more plugins have been labeled with that tag." +msgstr "Si ya sabes lo que estás buscando la Búsqueda es tu mejor apuesta. La pantalla Buscar tiene opciones para buscar en el directorio de de plugins de WordPress.org un término concreto, por autor o por etiquetas. También puedes buscar en el directorio eligiendo entre las etiquetas populares. Las etiquetas de mayor tamaño significan que hay más plugins etiquetados con esa etiqueta." + +#: wp-admin/media-upload.php:67 +msgid "There are two options for uploading files: Select Files will open the Flash-based uploader (multiple file upload allowed), or you can use the Browser Uploader. Clicking Select Files opens a navigation window showing you files in your operating system. Selecting Open after clicking on the file you want activates a progress bar on the uploader screen. Basic image editing is available after upload is complete. Make sure you click Save before leaving this screen." +msgstr "Hay dos opciones para subir archivos: Elegir archivos abrirá el cargador basado en Flash (permite subir varios archivos), o puedes usar el Cargador del navegador. Haciendo clic en Elegir archivos, se abre una ventana de navegación que muestra los archivos de tu sistema operativo. Eligiendo Abrir, después de hacer clic en el archivo que quieres, activa una barra de progreso en la pantalla del cargador. Hay disponible una edición básica de imágenes después de que la subida esté completa. Asegúrate de hacer clic en Guardar antes de salir de esta pantalla." + +#: wp-admin/options-media.php:20 +msgid "The Embed option allows you embed a video, image, or other media content into your content automatically by typing the URL (of the web page where the file lives) on its own line when you create your content." +msgstr "La opción de Incrustar te permite incrustar un vídeo, imagen u otro contenido multimedia automáticamente en tu contenido tecleando la URL (de la página web donde está el archivo) en su propia línea cuando creas tu contenido." + +#: wp-admin/options-general.php:63 +msgid "Most themes display the site title at the top of every page, in the title bar of the browser, and as the identifying name for syndicated feeds. The tagline is also displayed by many themes." +msgstr "La mayoría de los temas muestran el título del sitio en la parte superior de cada página, en la barra de título del navegador, y como nombre identificativo para los feeds. La descripción corta también se muestra en muchos temas." + +#: wp-admin/edit-form-advanced.php:185 +msgid "Order - Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field." +msgstr "Orden - Normalmente las páginas se ordenan alfabéticamente, pero puedes elegir tu propio orden introduciendo un número (1 para la primera, etc) en este campo." + +#: wp-admin/includes/file.php:989 +msgid "Please enter your FTP or SSH credentials to proceed." +msgstr "Por favor, introduce tus datos de acceso FTP o SSH para proceder." + +#: wp-admin/includes/file.php:993 +msgid "Please enter your FTP credentials to proceed." +msgstr "Por favor, introduce tus datos de acceso FTP para proceder." + +#: wp-admin/includes/file.php:999 +msgid "If you do not remember your credentials, you should contact your web host." +msgstr "Si no recuerdas tus datos de acceso deberías contactar con tu proveedor de alojamiento." + +#: wp-admin/upload.php:143 +msgid "All the files you’ve uploaded are listed in the Media Library, with the most recent uploads listed first. You can use the Screen Options tab to customize the display of this screen." +msgstr "Todos los archivos que has subido están listados en la Librería multimedia, con las subidas más recientes listadas al principio. Puedes usar la pestaña Opciones de pantalla para personalizar cómo se muestra esta pantalla. " + +#: wp-admin/theme-install.php:44 +msgid "You can Upload a theme manually if you have already downloaded its ZIP archive onto your computer (make sure it is from a trusted and original source). You can also do it the old-fashioned way and copy a downloaded theme’s folder via FTP into your /wp-content/themes directory." +msgstr "Pudes subir manualmente un tema si ya has descargado su archivo ZIP en tu ordenador (asegúrate de que sea de una fuente fiable y original). También puedes hacerlo al viejo estilo y copiar un tema descargado a través de FTP en tu directorio /wp-content/themes." + +#: wp-admin/user-edit.php:41 +msgid "Your profile contains information about you (your “account”) as well as some personal options related to using WordPress." +msgstr "Tu perfil contiene infomación sobre ti (tu “cuenta”) así como algunas opciones personales relacionadas con el uso de WordPress." + +#: wp-admin/edit-form-advanced.php:181 wp-admin/edit.php:174 +msgid "Pages are similar to Posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest Pages under other Pages by making one the “Parent” of the other, creating a group of Pages." +msgstr "Las páginas son similares a las entradas y tienen título, cuerpo de texto y metadatos asociados, pero son diferentes en que no forman parte de la secuencia cronológica tipo blog, son una especie de entradas permanentes. Las páginas no tienen categorías ni etiquetas, pero pueden tener una jerarquía. Puedes anidar páginas bajo otras páginas haciendo a una “Superior” de otra, creando así un grupo de páginas." + +#: wp-admin/edit-comments.php:118 +msgid "In the In Response To column, there are three elements. The text is the name of the post that inspired the comment, and links to the post editor for that entry. The “#” permalink symbol below leads to that post on your live site. The small bubble with the number in it shows how many comments that post has received. If the bubble is gray, you have moderated all comments for that post. If it is blue, there are pending comments. Clicking the bubble will filter the comments screen to show only comments on that post." +msgstr "En la columna En respuesta a hay tres elementos. El texto es el nombre de la entrada que inspiró el comentario, y está enlazado al editor de entradas de esa entrada. El enlace permanente del símbolo “#” lleva a esa entrada en tu sitio. La pequeña burbuja con número muestra cuántos comentarios ha recibido esa entrada. Si la burbuja es gris es que ya has moderado todos los comentarios de esa entrada. Si es azul es que hay comentarios pendientes. Haciendo clic en la burbuja se filtra la pantalla de comentarios para que muestre sólo los comentarios de esa entrada." + +#: wp-admin/edit-form-advanced.php:173 +msgid "Send Trackbacks - Trackbacks are a way to notify legacy blog systems that you’ve linked to them. Enter the URL(s) you want to send trackbacks. If you link to other WordPress sites they’ll be notified automatically using pingbacks, and this field is unnecessary." +msgstr "Enviar trackbacks - Los trackbacks son un modo de avisar a los sistemas antiguos de blogs que les has enlazado. Introduce la(s) URL(s) a la(s) que quieres enviar trackbacks. Si enlazas a otro sitio creado con WordPress recibirán aviso automáticamente por medio de los pingbacks, y este campo no sería necesario." + +#: wp-admin/options-permalink.php:22 +msgid "Note that permalinks beginning with the category, tag, author or postname structure tags require more advanced server resources. Double-check your hosting details to make sure those are in place or start your permalinks with other structure tags." +msgstr "Date cuenta de que los enlaces permanentes con etiquetas estructurales que llaman a categoría, etiqueta, autor o nombre de la entrada requieren recursos de servidor más avanzados. Revisa de nuevo los detalles del alojamiento para asegurarte de que que están en su lugar o empieza tus enlaces permanentes con otras etiquetas estructurales." + +#: wp-admin/index.php:34 +msgid "Welcome to your WordPress Dashboard! You will find helpful tips in the Help tab of each screen to assist you as you get to know the application." +msgstr "Bienvenido a tu escritorio de WordPress. Encontrarás consejos en la pestaña Ayuda de cada pantalla que te ayudarán a conocer la aplicación." + +#: wp-admin/upload.php:145 +msgid "Hovering over a row reveals action links: Edit, Delete Permanently, and View. Clicking Edit or on the media file’s name displays a simple screen to edit that individual file’s metadata. Clicking Delete Permanently will delete the file from the media library (as well as from any posts to which it is currently attached). View will take you to the display page for that file." +msgstr "Pasando por encima de la fila revela los enlaces de acción: Editar, Eliminar permanentemente, y Ver. Haciendo clic sobre Editar o sobre el nombre del archivo multimedia mostrará una pantalla simple para poder editar metadatos. Haciendo click en Eliminar permanentemente eliminará el archivo de la librería multimedia (como de las entradas que la estén usando). Ver te llevará a la pantalla de visualizado para el archivo." + +#: wp-admin/user-new.php:142 +msgid "Contributors can write and manage their posts but not publish posts or upload media files." +msgstr "Los Colaboradores pueden escribir y gestionar sus entradas, pero no pueden publicar entradas o subir archivos multimedia." + +#: wp-admin/user-new.php:141 +msgid "Authors can publish and manage their own posts." +msgstr "Los Autores pueden publicar y gestionar sus entradas." + +#: wp-admin/user-new.php:139 +msgid "Administrators have access to all the administration features." +msgstr "Los Administradores tienen acceso a todas las funciones de administración." + +#: wp-admin/plugin-editor.php:118 +msgid "The Documentation menu below the editor lists the PHP functions recognized in the plugin file. Clicking Lookup takes you to a web page about that particular function." +msgstr "El menú Documentación bajo el editor enumera las funciones PHP reconocidas en los archivos del plugin. Haciendo clic en Buscar te lleva a una página que habla de esa función en particular." + +#: wp-admin/plugin-editor.php:116 +msgid "You can use the editor to make changes to any of your plugins’ individual PHP files. Be aware that if you make changes, plugins updates will overwrite your customizations." +msgstr "Puedes usar el editor para realizar cambios a cualquier archivo php de tus plugins. Cuidado si realizas cambios, la actualización de los plugins producirá que tus modificaciones sean sobrescritas y se pierdan." + +#: wp-admin/link-manager.php:44 +msgid "You can add links here to be displayed on your site, usually using Widgets. By default, links to several sites in the WordPress community are included as examples." +msgstr "Aquí puedes añadir enlaces a mostrar en tu sitio, generalmente usando Widgets. Por defecto, los enlaces son a varios sitios de la comunidad de WordPress. Son incluidos como ejemplo." + +#: wp-admin/link-manager.php:47 +msgid "If you delete a link, it will be removed permanently, as Links do not have a Trash function yet." +msgstr "Si eliminas un enlace, será eliminado de forma permanente. Aún no existe una Papelera para los enlaces." + +#: wp-admin/update-core.php:410 +msgid "Updating your WordPress installation is a simple one-click procedure; just click on the Update button when it says a new version is available." +msgstr "Actualizar tu instalación de Wordpress es un proceso tan simple como realizar un solo clic; simplemente haz clic en el botón Actualizar cuando te muestre el mensaje de que hay una nueva actualización." + +#: wp-admin/custom-background.php:86 +msgid "Don’t forget to click on the Save Changes button when you are finished." +msgstr "No olvides hacer clic en el botón Guardar cambios cuando acabes." + +#: wp-admin/custom-header.php:103 +msgid "If you want to discard your custom header and go back to the default included in your theme, click on the buttons to remove the custom image and restore the original header image." +msgstr "Si quieres descartar tu cabecera personalizada y volver a las por defecto de tu tema, haz clic en la parte inferior para eliminar la imagen personalizada y restaurar la imagen original." + +#: wp-admin/custom-background.php:84 +msgid "To use a background image, simply upload it, then choose your display options below. You can display a single instance of your image, or tile it to fill the screen. You can have your background fixed in place, so your site content moves on top of it, or you can have it scroll with your site." +msgstr "Para usar una imagen de fondo, simplemente súbela y después selecciona las opciones de visualización. Puedes mostrar la imagen una sola vez o ponerla en mosaico para que rellene la pantalla. Puedes fijar tu fondo, tu sitio pasará por encima de ella o puedes hacer que se mueva con tu sitio (cuando subas o bajes la barra del navegador)." + +#: wp-admin/custom-background.php:83 +msgid "You can customize the look of your site without touching any of your theme’s code by using a custom background. Your background can be an image or a color." +msgstr "Puedes personalizar la imagen de tu sitio sin tocar nada del código del tema usando un fondo personalizado. Tu fondo puede ser una imagen o un color." + +#: wp-admin/custom-background.php:85 +msgid "You can also choose a background color. If you know the hexadecimal code for the color you want, enter it in the Color field. If not, click on the Select a Color link, and a color picker will allow you to choose the exact shade you want." +msgstr "También puedes elegir un color de fondo. Si sabes el código hexadecimal que quieres introdúcelo en el campo Color. Si no lo sabes, haz click en el enlace de elegir un color y un selector de colores te permitirá escoger el color exacto que quieras." + +#: wp-admin/custom-header.php:102 +msgid "You can set a custom image header for your site. Simply upload the image and crop it, and the new header will go live immediately." +msgstr "Puedes poner una imagen de cabecera personalizada en tu sitio. Simplemente sube una imagen, recórtala/ajústala y la nueva cabecera aparecerá inmediatamente en tu sitio." + +#: wp-admin/edit-tags.php:200 +msgid "Slug - The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens." +msgstr "Slug - La “slug ” es la versión amigable de la URL. Normalmente, son todo minúsculas y contiene sólo letras, números y guiones." + +#: wp-admin/edit.php:175 +msgid "Managing Pages is very similar to managing Posts, and the screens can be customized in the same way." +msgstr "Gestionar páginas es muy similar a gestionar entradas y la pantalla se puede personalizar de la misma forma." + +#: wp-admin/edit-form-advanced.php:175 +msgid "You can also create posts with the Press This bookmarklet." +msgstr "También puedes crear entradas con el marcador Publicar esto." + +#: wp-admin/plugins.php:347 +msgid "The plugin generated %d characters of unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin." +msgstr "El plugin ha generado %d caracteres de salida inesperada durante la activación. Si te sale el mensaje de advertencia “headers already sent” (cabeceras ya enviadas), problemas con las feeds u otros problemas, prueba a desactivar o eliminar este plugin." + +#: wp-admin/users.php:25 +msgid "You can customize the display of information on this screen as you can on other screens, by using the Screen Options tab and the on-screen filters." +msgstr "Puedes personalizar la información de esta pantalla al igual que en las otras, usando la pestaña Opciones de Pantalla y los filtros en pantalla." + +#: wp-admin/user-new.php:147 +msgid "Remember to click the Add User button at the bottom of this screen when you are finished." +msgstr "Acuérdate de hacer clic en el botón Añadir usuario en la parte inferior de la pantalla cuando finalices." + +#: wp-admin/user-edit.php:42 +msgid "You can change your password, turn on keyboard shortcuts, change the color scheme of your WordPress administration screens, and turn off the WYSIWYG (Visual) editor, among other things." +msgstr "Puedes cambiar tu contraseña, activar los atajos de teclado, cambiar el esquema de colores de la pantalla de administración de WordPress y desactivar el editor (visual) WYSIWYG entre de otras cosas." + +#: wp-admin/user-edit.php:43 +msgid "Your username cannot be changed, but you can use other fields to enter your real name or a nickname, and change which name to display on your posts." +msgstr "Tu nombre de usuario no puede cambiarse, pero puedes usar los otros campos para introducir tu nombre real o tu alias y utilizarlo para que se muestre en tus entradas." + +#: wp-admin/user-edit.php:44 +msgid "Required fields are indicated; the rest are optional. Profile information will only be displayed if your theme is set up to do so." +msgstr "Los campos necesarios están marcados. El resto son opcionales. El perfil sólo será mostrado si tu tema está configurado para ello." + +#: wp-admin/user-edit.php:45 +msgid "Remember to click the Update Profile button when you are finished." +msgstr "Recuerda hacer click en el botón actualizar Perfil cuando acabes." + +#: wp-admin/user-new.php:140 +msgid "Editors can publish posts, manage posts as well as manage other people’s posts, etc." +msgstr "Los Editores pueden publicar entradas, gestionar sus entradas y entradas de otras personas, etc." + +#: wp-admin/user-new.php:143 +msgid "Subscribers can read comments/comment/receive newsletters, etc." +msgstr "Los Suscriptores pueden leer comentarios/comentar/recibir noticias, etc." + +#: wp-admin/user-new.php:137 +msgid "To add a new user to your site, fill in the form on this screen. If you’re not sure which role to assign, you can use the link below to review the different roles and their capabilities. Here is a basic overview of roles:" +msgstr "Para añadir un nuevo usuario a tu sitio, rellena el cuestionario siguiente. Si no estás seguro de qué perfil debes asignarle, puedes utilizar el enlace siguiente para ver las diferentes capacidades de los diferentes perfiles. Aquí tienes una breve explicación de los perfiles:" + +#: wp-admin/user-new.php:145 +msgid "You must assign a password to the new user, but don’t worry; when they log in for the first time they will be prompted to change it. The username, however, cannot be changed." +msgstr "Debes asignar una contraseña al nuevo usuario, pero no te preocupes, cuando se identifique por primera vez se le preguntará si quiere cambiarla. El nombre de usuario no se puede cambiar." + +#: wp-admin/custom-background.php:271 +msgid "Background Repeat" +msgstr "Repetir fondo" + +#: wp-admin/comment.php:49 +msgid "You can also moderate the comment from this screen using the Status box, where you can also change the timestamp of the comment." +msgstr "También puedes moderar los comentarios desde esta pantalla usando la caja de estado, donde puedes cambiar el día/hora del comentario." + +#: wp-admin/comment.php:48 +msgid "You can edit the information left in a comment if needed. This is often useful when you notice that a commenter has made a typographical error." +msgstr "Si te es necesario puedes editar la información que falta en un comentario. Esto es muy útil si te advierten que un usuario ha cometido un error tipográfico al realizar un comentario." + +#: wp-admin/custom-background.php:281 +msgid "Background Attachment" +msgstr "Adjunto del fondo" + +#: wp-admin/nav-menus.php:554 +msgid "Automatically add new top-level pages" +msgstr "Añadir automáticamente las páginas de nivel superior" + +#: wp-admin/nav-menus.php:540 +msgid "Enter menu name here" +msgstr "Introduce el nombre del menú aquí." + +#: wp-admin/options-privacy.php:19 +msgid "You can choose whether or not your site will be crawled by robots, ping services, and spiders. If you want those services to ignore your site, click the second option here. Note that your privacy is not complete; your site is still visible on the web." +msgstr "Puedes decidir si tu sitio debe o no ser rastreado por robots, servicios de ping y arañas. Si deseas que todos esos servicios ignoren tu sitio, haz clic en la segunda opción. Atención, tu privacidad no es completa, tu sitio seguirá siendo visible en la web." + +#: wp-admin/options-media.php:21 +msgid "Uploading Options gives you folder and path choices for storing your files in your installation’s directory." +msgstr "Las opciones de subida te dan a escoger en qué directorio y ruta almacenar tus archivos." + +#: wp-admin/options-reading.php:47 +msgid "You can also control the display of your content in RSS feeds, including the maximum numbers of posts to display, whether to show full text or a summary, and the character set encoding." +msgstr "También puedes controlar la forma de mostrar tus contenidos en el canal RSS, incluyendo el número máximo de entradas a mostrar, si mostrar el texto íntegro o una fracción de éste y la codificación de caracteres." + +#: wp-admin/options-permalink.php:19 +msgid "This screen provides some common options for your default permalinks URL structure." +msgstr "Esta pantalla facilita unas opciones comunes para la estructura por defecto de la URL estructural de los enlaces permanentes." + +#: wp-admin/options-general.php:67 +msgid "Remember to click the Save Changes button at the bottom of the screen for new settings to take effect." +msgstr "Recuerda hacer clic en la parte inferior de la pantalla sobre el botón Guardar cambios para que los nuevos ajustes surtan efecto." + +#: wp-admin/options-writing.php:19 +msgid "You can submit content in several different ways; this screen holds the settings for all of them. The top section controls the editor within these administration screens, while the rest control external publishing methods. For more information on any of these methods, use the documentation links below." +msgstr "Puedes enviar contenido de varias formas; en esta pantalla encontrarás los ajustes para todas ellas. La sección superior controla el editor que hay en esta pantalla de administración, mientras que el resto controla métodos externos de publicación. Para más información de cualquiera de estos métodos, usa la documentación que encontrarás en los siguientes enlaces." + +#: wp-admin/options-general.php:66 +msgid "UTC means Coordinated Universal Time." +msgstr "UTC quiere decir Hora universal coordinada (Coordinated Universal Time)" + +#: wp-admin/options-general.php:62 +msgid "The fields on this screen determine some of the basics of your site setup." +msgstr "Los campos en esta pantalla determinan algunas configuraciones básicas de tu sitio." + +#: wp-admin/options-reading.php:45 +msgid "This screen contains the settings that affect the display of your content." +msgstr "Esta pantalla contiene los ajustes que afectarán a cómo se muestran tus contenidos." + +#: wp-admin/options-general.php:65 +msgid "If you want site visitors to be able to register themselves, as opposed to being registered by the site administrator, check the membership box. A default user role can be set for all new users, whether self-registered or registered by the site administrator." +msgstr "Si deseas que los visitantes se puedan registrar en tu sitio, en vez de que el administrador del sitio deba registrarlos, marca la casilla de miembros. Se otorgará un perfil predeterminado a cada nuevo usuario. Da igual que se registren ellos mismos o que les registre el administrador del sitio." + +#: wp-admin/options-discussion.php:20 wp-admin/options-privacy.php:21 +#: wp-admin/options-media.php:22 wp-admin/options-writing.php:20 +#: wp-admin/options-reading.php:48 wp-admin/options-permalink.php:24 +msgid "You must click the Save Changes button at the bottom of the screen for new settings to take effect." +msgstr "Debes hacer clic en el botón Guardar cambios en la parte inferior de la pantalla para que los nuevos ajustes tengan efecto." + +#: wp-admin/options-discussion.php:19 +msgid "This screen provides many options for controlling the management and display of comments and links to your posts/pages. So many, in fact, they won’t all fit here! :) Use the documentation link below to get information on what each discussion setting does." +msgstr "Esta pantalla proporciona muchas opciones para mostrar y gestionar los comentarios y enlaces en tus entradas/páginas. Son muchas, pero no caben todas aquí :) Usa el enlace a la documentación para conseguir más información y saber qué hace cada ajuste." + +#: wp-admin/options-general.php:64 +msgid "The WordPress URL and the Site URL can be the same (example.com) or different; for example, having the WordPress core files (example.com/wordpress) in a subdirectory instead of the root directory." +msgstr "La URL de WordPress y la URL del sitio pueden ser las mismas (ejemplo.com) o diferentes; por ejemplo, puedes tener los archivos del core de WordPress en un subdirectorio (ejemplo.com/wordpress) en vez de en el directorio raíz." + +#: wp-admin/edit-link-form.php:44 +msgid "The boxes for link name, web address, and description have fixed positions, while the others may be repositioned using drag and drop. You can also hide boxes you don’t use in the Screen Options tab, or minimize boxes by clicking on the title bar of the box." +msgstr "Las cajas para el nombre del enlace, dirección web y descripción tienen una posición fija. Las otras las puedes mover y colocar mediante arrastrar y soltar. Puedes esconder cajas que no quieras usar en la pestaña Opciones de pantalla o minimizar las cajas haciendo clic en la barra del título de la caja." + +#: wp-admin/update-core.php:171 +msgid "While your site is being updated, it will be in maintenance mode. As soon as your updates are complete, your site will return to normal." +msgstr "Mientras se actualiza tu sitio, éste permanecerá en modo mantenimiento. Tan pronto como finalice la actualización, tu sitio volverá a estar activo." + +#: wp-admin/update-core.php:191 +msgid "Your plugins are all up to date." +msgstr "Tus plugins están todos actualizados." + +#: wp-admin/update-core.php:151 +msgid "You have the latest version of WordPress." +msgstr "Tienes la última versión de WordPress. No es necesario actualizarla." + +#: wp-admin/update-core.php:267 +msgid "Your themes are all up to date." +msgstr "Tus temas están actualizados." + +#: wp-admin/update-core.php:159 +msgid "An updated version of WordPress is available." +msgstr "Hay disponible una nueva versión actualizada de WordPress." + +#: wp-admin/includes/nav-menu.php:176 +msgid "Original: %s" +msgstr "Original: %s" + +#: wp-admin/plugin-editor.php:138 +msgid "Function Name…" +msgstr "Nombre de la función…" + +#: wp-admin/import.php:113 +msgid "Activate importer" +msgstr "Activar importador" + +#: wp-admin/edit-link-form.php:43 +msgid "You can add or edit links on this screen by entering information in each of the boxes. Only the link’s web address and name (the text you want to display on your site as the link) are required fields." +msgstr "Puede añadir o editar enlaces desde esta pantalla introduciendo la información en cada caja. Sólo son necesarios el enlace a la web y el nombre (el texto que quieres mostrar en el enlace en tu sitio)." + +#: wp-admin/includes/class-wp-upgrader.php:1290 +msgid "Return to Importers" +msgstr "Volver a los importadores" + +#: wp-admin/includes/class-wp-upgrader.php:1280 +msgid "Activate Plugin & Run Importer" +msgstr "Activar plugin y Comenzar Importación" + +#: wp-includes/theme-compat/comments.php:26 +msgid "One Response to %2$s" +msgid_plural "%1$s Responses to %2$s" +msgstr[0] "Una Respuesta a %2$s" +msgstr[1] "%1$s Respuestas a %2$s" + +#: wp-admin/tools.php:52 +msgid "Use this to convert categories to tags or tags to categories." +msgstr "Usa esto para convertir categorías en etiquetas o etiquetas en categorías." + +#: wp-admin/edit-tags.php:277 +msgid "Categories can be selectively converted to tags using the category to tag converter." +msgstr "Las categorías se pueden convertir a voluntad en etiquetas usando el conversor de categorías a etiquetas." + +#: wp-admin/edit-tags.php:282 +msgid "Tags can be selectively converted to categories using the tag to category converter" +msgstr "Las etiquetas se pueden convertir a voluntad a categorías usando el conversor de etiquetas a categorías" + +#: wp-admin/includes/nav-menu.php:733 +msgctxt "nav menu front page title" +msgid "Home: %s" +msgstr "Inicio: %s" + +#: wp-admin/import.php:56 +msgid "ERROR:" +msgstr "ERROR:" + +#: wp-admin/import.php:56 +msgid "The %s importer is invalid or is not installed." +msgstr "El importador %s no es válido o no está instalado." + +#: wp-admin/edit-form-advanced.php:123 +msgid "Page Attributes" +msgstr "Atributos de página" + +#: wp-admin/includes/meta-boxes.php:580 +msgid "Need help? Use the Help tab in the upper right of your screen." +msgstr "¿Necesitas ayuda? Usa la pestaña Ayuda en la parte superior derecha de la pantalla." + +#: wp-admin/tools.php:17 +msgid "Note: Turbo/Gears is no longer promoted on this screen as it was in previous versions due to the fact that Google has discontinued support for it." +msgstr "Nota: Turbo/Gears ya no está disponible en esta pantalla como en versiones anteriores ya que Google ha dejado de darle soporte." + +#: wp-admin/import.php:20 +msgid "This screen lists links to plugins to import data from blogging/content management platforms. Choose the platform you want to import from, and click Install Now when you are prompted in the popup window. If your platform is not listed, click the link to search the plugin directory for other importer plugins to see if there is one for your platform." +msgstr "Esta pantalla lista los enlaces a los plugins de importación de datos de blogs/contenido de diferentes plataformas. Elige la plataforma desde la que quieres importar datos y haz clic en Instalar ahora cuando seas preguntado en la ventana emergente. Si tu plataforma no está en la lista, haz clic en el enlace de buscar en el directorio de plugins para ver si hay uno para tu plataforma." + +#: wp-admin/export.php:43 +msgid "Once generated, your WXR file can be imported by another WordPress site or by another blogging platform able to access this format." +msgstr "Una vez generado, tu archivo WXR puede ser importado por otro sitio WordPress o por otra plataforma de blogs que pueda acceder a este formato." + +#: wp-admin/import.php:21 +msgid "In previous versions of WordPress, all the importers were built-in, but they have been turned into plugins as of version 3.0 since most people only use them once or infrequently." +msgstr "En versiones anteriores de WordPress, todos los importadores estaban incluidos. Ahora han sido convertidos en plugins para la versión 3.0. Mucha gente sólo lo utilizaba una vez o ni eso." + +#: wp-admin/link-manager.php:46 +msgid "You can customize the display of this screen using the Screen Options tab and/or the dropdown filters above the links table." +msgstr "Puedes personalizar cómo se muestra esta pantalla usando la pestaña Opciones de pantalla y/o el menú desplegable de filtros encima de la tabla de enlaces." + +#: wp-admin/plugin-editor.php:117 +msgid "Choose a plugin to edit from the menu in the upper right and click the Select button. Click once on any file name to load it in the editor, and make your changes. Don’t forget to save your changes (Update File) when you’re finished." +msgstr "Elige un plugin a editar en el menú superior derecha y haz clic en el botón Seleccionar. Haz clic una vez sobre cualquier nombre de archivo para cargarlo en el editor. No olvides guardar tus cambios (Actualizar archivo) cuando acabes." + +#: wp-admin/plugins.php:324 +msgid "Most of the time, plugins play nicely with the core of WordPress and with other plugins. Sometimes, though, a plugin’s code will get in the way of another plugin, causing compatibility issues. If your site starts doing strange things, this may be the problem. Try deactivating all your plugins and re-activating them in various combinations until you isolate which one(s) caused the issue." +msgstr "La mayoría de las veces los plugins funcionan perfectamente con el núcleo de WordPress y con los otros plugins. Algunas veces, puede haber incompatibilidades entre algunos plugins produciendo problemas. Tu sitio podría comenzar a hacer cosas raras, esto podría ser un problema. Prueba a desactivar tus plugin e ir activándolos uno a uno y comprobando que el problema no reaparezca. Es la forma de detectar el plugin problemático o la combinación de plugins problemáticos." + +#: wp-admin/plugin-install.php:43 +msgid "If you want to install a plugin that you’ve downloaded elsewhere, click Upload in the upper left. You will be prompted to upload the .zip package, and once uploaded, you can activate the new plugin." +msgstr "Si deseas instalar un plugin que has descargado de cualquier sitio, haz click en la parte superior izquierda. Se te preguntará por un archivo comprimido en .zip y, una vez subido, podrás activarlo." + +#: wp-admin/plugin-install.php:42 +msgid "If you just want to get an idea of what’s available, you can browse Featured, Popular, Newest, and Recently Updated plugins by using the links in the upper left of the screen. These sections rotate regularly." +msgstr "Si quieres hacerte una idea de lo que está disponible, puedes navegar por Destacados, Populares, Nuevos y Actualizados recientemente, usando los enlaces en la parte superior izquierda de la pantalla. Esta sección rota regularmente." + +#: wp-admin/themes.php:41 +msgid "You can see your active theme at the top of the screen. Below are the other themes you have installed that are not currently in use. You can see what your site would look like with one of these themes by clicking the Preview link. To change themes, click the Activate link." +msgstr "Puedes ver tu tema activo en la parte superior de la pantalla. Debajo están los otros temas que tienes instalados pero que no están actualmente en uso. Puedes ver cómo quedaría tu sitio con uno de estos temas haciendo clic en el enlace Previsualizar. Para cambiar de tema, haz clic en Activar." + +#: wp-admin/themes.php:40 +msgid "Aside from the default theme included with your WordPress installation, themes are designed and developed by third parties." +msgstr "Aparte del tema por defecto incluido en su instalación de WordPress, los temas han sido diseñados y desarrollados por terceros." + +#: wp-admin/theme-editor.php:25 +msgid "For PHP files, you can use the Documentation dropdown to select from functions recognized in that file. Lookup takes you to a web page with reference material about that particular function." +msgstr "Para los archivos PHP, puedes usar el menú desplegable de Documentación para elegir las funciones reconocidas que son usadas en ese archivo. Buscar te lleva a una página con material de referencia de esa función en particular." + +#: wp-admin/widgets.php:40 +msgid "Widgets may be used multiple times. You can give each widget a title, to display on your site, but it’s not required." +msgstr "Los widgets pueden usarse varias veces. Puedes proporcionar a cada widget un título para ser mostrado en tu sitio, pero no es necesario." + +#: wp-admin/widgets.php:41 +msgid "Enabling Accessibility Mode, via Screen Options, allows you to use Add and Edit buttons instead of using drag and drop." +msgstr "Activar el modo de accesibilidad, vía Opciones de Pantalla, te permite usar botones de Añadir y Editar en vez de arrastrar y soltar." + +#: wp-admin/theme-editor.php:23 +msgid "You can use the Theme Editor to edit the individual CSS and PHP files which make up your theme." +msgstr "Puedes usar el Editor de temas para editar de forma individual los archivos css y php que crean la apariencia de tu sitio." + +#: wp-admin/theme-editor.php:24 +msgid "Begin by choosing a theme to edit from the dropdown menu and clicking Select. A list then appears of all the template files. Clicking once on any file name causes the file to appear in the large Editor box." +msgstr "Comienza seleccionando qué tema quieres editar en el menú desplegable y haz clic en Elegir. Una lista de todas las plantillas aparecerá. Apretando una vez sobre el nombre de un archivo, éste aparecerá en la gran caja de edición." + +#: wp-admin/widgets.php:37 +msgid "Widgets are independent sections of content that can be placed into any widgetized area provided by your theme (commonly called sidebars). To populate your sidebars/widget areas with individual widgets, drag and drop the title bars into the desired area. By default, only the first widget area is expanded. To populate additional widget areas, click on their title bars to expand them." +msgstr "Los Widgets son secciones independientes de contenido que pueden ser colocados en cualquier parte de tu tema que esté preparado para ello (comúnmente llamados sidebars). Para colocar en tus áreas sidebar/widget con widgets de forma individual, arrastra y suelta la barra del título del widget al área deseada. Por defecto, sólo la primera área está desplegada. Para poner widgets en otras aéreas haz clic en el barra del título para desplegarlas." + +#: wp-admin/theme-install.php:43 +msgid "You can Search for themes by keyword, author, or tag, or can get more specific and search by criteria listed in the feature filter. Alternately, you can browse the themes that are Featured, Newest, or Recently Updated. When you find a theme you like, you can preview it or install it." +msgstr "Puedes buscar temas por palabras clave, autor o etiquetas o puedes ser más específico y buscar por criterios utilizando los filtros. De forma alternativa, puedes ver los temas Destacados, Nuevos o Actualizados Recientemente. Cuando encuentres el tema que te guste, puedes realizar una previsualización o instalarlo." + +#: wp-admin/theme-editor.php:27 +msgid "Advice: think very carefully about your site crashing if you are live-editing the theme currently in use." +msgstr "Advertencia: piensa detenidamente en la posibilidad de que tu sitio produzca errores y sea inaccesible si estás editando el tema en uso y cometes algún error." + +#: wp-admin/theme-editor.php:26 +msgid "After typing in your edits, click Update File." +msgstr "Después de introducir tus modificaciones, haz click en Actualizar archivo." + +#: wp-admin/nav-menus.php:453 +msgid "You can create custom menus for your site. These menus may contain links to pages, categories, custom links or other content types (use the Screen Options tab to decide which ones to show on the screen). You can specify a different navigation label for a menu item as well as other attributes. You can create multiple menus. If your theme includes more than one menu, you can choose which custom menu to associate with each. You can also use custom menus in conjunction with the Custom Menus widget." +msgstr "Puedes crear menús personalizados para tu sitio. Estos menús pueden contener enlaces a páginas, categorías y enlaces personalizados o otro tipo de contenido (usa la pestaña Opciones de pantalla para decidir cuales se muestran en esta pantalla). Puedes especificar diferentes niveles de navegación para un elemento del menú como para otros atributos. Puedes crear múltiples menús. Si tu tema incluye más de un menú, puedes elegir qué menú personalizado asociarás a cada espacio. También puedes usar los menús personalizados conjuntamente con el widget Menús personalizados." + +#: wp-admin/includes/meta-boxes.php:559 +msgid "(no parent)" +msgstr "(sin superior)" + +#: wp-admin/edit.php:176 +msgid "You can also perform the same types of actions, including narrowing the list by using the filters, acting on a Page using the action links that appear when you hover over a row, or using the Bulk Actions menu to edit the metadata for multiple Pages at once." +msgstr "También puedes realizar el mismo tipo que acciones, incluyendo reducir el listado usando filtros, acciones en una página usando las acciones que aparecen cuando te pones sobre ellas o usar el menú Acciones en lote para editar los metadatos de múltiples páginas de una sola vez." + +#: wp-admin/edit-form-advanced.php:184 +msgid "Template - Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you’ll see them in this dropdown menu." +msgstr "Plantilla - Algunos temas tienen plantillas personalizadas que pueden usarse para añadir algunas características adicionales o diseños personalizados. Si las hay, las encontrarás en el menú desplegable." + +#: wp-admin/edit-form-advanced.php:183 +msgid "Parent - You can arrange your pages in hierarchies. For example, you could have an “About” page that has “Life Story” and “My Dog” pages under it. There are no limits to how many levels you can nest pages." +msgstr "Superiores - Puedes ordenar tus páginas en jerarquías. Por ejemplo, podrías tener una página “Sobre” que bajo ella las páginas “Historia de mi vida” y “Mi perro”. No hay límites en cuántos niveles puedes anidar páginas." + +#: wp-admin/includes/class-wp-upgrader.php:1089 +msgid "All updates have been completed." +msgstr "Todas las actualizaciones han sido completadas." + +#: wp-admin/includes/nav-menu.php:1093 +msgid "Select menu items (pages, categories, links) from the boxes at left to begin building your custom menu." +msgstr "Selecciona elementos de menú (páginas, categorías, enlaces) de la caja de la izquierda para comenzar a construir tu propio menú." + +#: wp-admin/edit-tags.php:191 +msgid "When adding a new tag on this screen, you’ll fill in the following fields:" +msgstr "Cuando añadas una nueva etiqueta en esta pantalla, rellenarás los siguientes campos:" + +#: wp-admin/edit-tags.php:177 +msgid "You can use categories to define sections of your site and group related posts. The default category is “Uncategorized” until you change it in your writing settings." +msgstr "Puedes usar categorías para definir secciones para las entradas de tu sitio y grupo. La categoría por defecto es “Sin categoría” hasta que la cambies en tus ajustes de escritura." + +#: wp-admin/edit-tags.php:181 +msgid "You can assign keywords to your posts using Post Tags. Unlike categories, tags have no hierarchy, meaning there’s no relationship from one tag to another." +msgstr "Puedes asignar palabras clave a tus entradas usando las etiquetas de entradas. A diferencia de las categorías, las etiquetas no tienen jerarquías, lo que quiere decir que no están relacionadas entre sí." + +#: wp-admin/edit-tags.php:186 +msgid "What’s the difference between categories and tags? Normally, tags are ad-hoc keywords that identify important information in your post (names, subjects, etc) that may or may not recur in other posts, while categories are pre-determined sections. If you think of your site like a book, the categories are like the Table of Contents and the tags are like the terms in the index." +msgstr "¿Cuál es la diferencia entre categorías y etiquetas? Normalmente, las etiquetas son palabras clave que identifican información importante en tus entradas (nombres, asuntos, etc...) que pueden ser recurrentes o no en otras entradas, mientras que las categorías son secciones predeterminadas. Si piensas en tu sitio como en un libro, las categorías sería la tabla de contenidos mientras que las etiquetas serían como los términos en el índice." + +#: wp-admin/edit-tags.php:208 +msgid "You can change the display of this screen using the Screen Options tab to set how many items are displayed per screen and to display/hide columns in the table." +msgstr "Puedes cambiar la forma de visualización de esta pantalla usando la pestaña Opciones de pantalla para marcar cuántos elementos se muestran por pantalla y mostrar/esconder columnas." + +#: wp-admin/edit-tags.php:206 +msgid "Description - The description is not prominent by default; however, some themes may display it." +msgstr "Descripción - La descripción no se muestra por defecto, pero algunos temas la podrían mostrar." + +#: wp-admin/edit-tags.php:203 +msgid "Parent - Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown." +msgstr "Categorías - Superiores, a diferencia de las etiquetas, pueden tener jerarquías. Puedes tener la categoría Jazz y bajo esta, tener unas categorías hijas para Bebop y Big Band. Totalmente Opcional. Para crear una subcategoría, tan solo selecciona otra categoría del menú desplegable de Superiores." + +#: wp-admin/edit-tags.php:196 +msgid "Name - The name is how it appears on your site." +msgstr "Nombre - El nombre es como aparece en tu sitio" + +#: wp-admin/edit-tags.php:189 +msgid "When adding a new category on this screen, you’ll fill in the following fields:" +msgstr "Cuando añades una nueva categoría en esta pantalla, rellenas los siguientes campos." + +#: wp-admin/upload.php:146 +msgid "If a media file has not been attached to any post, you will see that in the Attached To column, and can click on Attach File to launch a small popup that will allow you to search for a post and attach the file." +msgstr "Si un archivo multimedia no se ha adjuntado a ninguna entrada, lo verás que en la columna Adjunto a y haciendo click en Adjuntar archivo te desplegará una pequeña ventana emergente que te permitirá buscar una entrada y adjuntarle el archivo." + +#: wp-admin/upload.php:144 +msgid "You can narrow the list by file type/status using the text link filters at the top of the screen. You also can refine the list by date using the dropdown menu above the media table." +msgstr "Puedes reducir el listado por tipo/estado usando los filtros en la parte superior de la pantalla. También puedes refinar la búsqueda por fecha usando el menú desplegable junto a la tabla de multimedia." + +#: wp-admin/media-upload.php:66 +msgid "You can upload media files here without creating a post first. This allows you to upload files to use with posts and pages later and/or to get a web link for a particular file that you can share." +msgstr "Desde aquí puedes subir archivos multimedia sin tener que crear primero una entrada. Esto te permite subir archivos para usarlos en tus entradas y páginas y/o conseguir un enlace al archivo en particular que puedes compartir" + +#: wp-admin/link-manager.php:45 +msgid "Links may be separated into categories; these are different than the categories used on your posts." +msgstr "Los enlaces deben ser separados en categorías. Estas son diferentes de las que utilizas en tus entradas." + +#: wp-admin/includes/template.php:1668 +msgid "Header Image" +msgstr "Imagen de cabecera" + +#: wp-admin/custom-header.php:537 +msgid "Default Images" +msgstr "Imágenes por defecto" + +#: wp-admin/custom-header.php:683 +msgid "Crop Header Image" +msgstr "Recortar imagen de cabecera" + +#: wp-admin/link-manager.php:48 wp-admin/user-new.php:148 wp-admin/index.php:47 +#: wp-admin/edit-link-form.php:46 wp-admin/options-general.php:68 +#: wp-admin/themes.php:45 wp-admin/media.php:75 wp-admin/custom-header.php:105 +#: wp-admin/options-discussion.php:21 wp-admin/plugin-editor.php:121 +#: wp-admin/plugin-install.php:44 wp-admin/options-privacy.php:22 +#: wp-admin/theme-editor.php:31 wp-admin/tools.php:18 +#: wp-admin/edit-form-advanced.php:176 wp-admin/edit-form-advanced.php:186 +#: wp-admin/comment.php:50 wp-admin/edit-comments.php:120 +#: wp-admin/import.php:22 wp-admin/custom-background.php:87 +#: wp-admin/options-media.php:23 wp-admin/edit.php:168 wp-admin/edit.php:177 +#: wp-admin/upload.php:147 wp-admin/export.php:44 wp-admin/theme-install.php:45 +#: wp-admin/users.php:27 wp-admin/options-writing.php:21 +#: wp-admin/update-core.php:412 wp-admin/options-reading.php:49 +#: wp-admin/options-permalink.php:25 wp-admin/user-edit.php:46 +#: wp-admin/widgets.php:44 wp-admin/credits.php:19 wp-admin/plugins.php:326 +#: wp-admin/edit-tags.php:209 wp-admin/media-upload.php:68 +#: wp-admin/nav-menus.php:455 +msgid "For more information:" +msgstr "Para más información:" + +#: wp-admin/custom-header.php:554 +msgid "This will remove the header image. You will not be able to restore any customizations." +msgstr "Esto eliminará la imagen de cabecera. No podrás restaurar ninguna personalización." + +#: wp-admin/edit-tags.php:179 +msgid "You can create groups of links by using link categories. Link category names must be unique and link categories are separate from the categories you use for posts." +msgstr "Puedes crear grupos de enlaces usando las categorías de enlaces. Los nombres de las categorías de enlaces deben ser únicos y diferentes a las categorías que usas para las entradas." + +#: wp-admin/custom-header.php:504 +msgid "You can upload a custom header image to be shown at the top of your site instead of the default one. On the next screen you will be able to crop the image." +msgstr "Puedes subir una imagen de cabecera personalizada para que se vea en tu sitio web en vez de la que viene por defecto. En la siguiente pantalla podrás recortar la imagen." + +#: wp-admin/custom-header.php:555 +msgid "Remove Header Image" +msgstr "Eliminar imagen de cabecera" + +#: wp-admin/custom-header.php:562 +msgid "Reset Image" +msgstr "Restaurar imagen" + +#: wp-admin/custom-header.php:564 +msgid "This will restore the original header image. You will not be able to restore any customizations." +msgstr "Esto restaurará la imagen de cabecera original. No te será posible restaurar ninguna personalización." + +#: wp-admin/custom-header.php:565 +msgid "Restore Original Header Image" +msgstr "Restaurar imagen de cabecera original" + +#: wp-admin/custom-header.php:576 +msgid "Display Text" +msgstr "Visualización de texto" + +#: wp-admin/custom-header.php:587 +msgid "Text Color" +msgstr "Color de texto" + +#: wp-admin/custom-header.php:591 +msgid "If you want to hide header text, add #blank as text color." +msgstr "Si quieres ocultar el texto de la cabecera, añade #blank como color de texto." + +#: wp-admin/custom-header.php:600 +msgid "Reset Text Color" +msgstr "Restaurar color de texto" + +#: wp-admin/custom-header.php:602 +msgid "This will restore the original header text. You will not be able to restore any customizations." +msgstr "Esto restaurará el texto original de la cabecera. No te será posible restaurar ninguna personalización." + +#: wp-admin/custom-header.php:603 +msgid "Restore Original Header Text" +msgstr "Restaurar texto original de la cabecera" + +#: wp-admin/custom-header.php:636 +msgid "Image Upload Error" +msgstr "Error al subir la imagen" + +#: wp-admin/custom-header.php:687 +msgid "You need Javascript to choose a part of the image." +msgstr "Necesitas Javascript para elegir una parte de la imagen." + +#: wp-admin/edit-comments.php:115 +msgid "A yellow row means the comment is waiting for you to moderate it." +msgstr "Una fila amarilla significa que el comentario está esperando a que lo moderes." + +#: wp-admin/edit-comments.php:116 +msgid "In the Author column, in addition to the author’s name, email address, and blog URL, the commenter’s IP address is shown. Clicking on this link will show you all the comments made from this IP address." +msgstr "En la columna Autor, además del nombre del autor, la dirección de correo electrónico y la url del sitio se muestra la dirección IP del que ha realizado el comentario. Haciendo clic en este enlace te mostrará todos los comentarios realizados desde esa dirección IP." + +#: wp-admin/edit-comments.php:114 +msgid "You can manage comments made on your site similar to the way you manage Posts and other content. This screen is customizable in the same ways as other management screens, and you can act on comments using the on-hover action links or the Bulk Actions." +msgstr "Puedes gestionar los comentarios realizados en tu sitio de forma similar a la que gestionas las Entradas y otros contenidos. Esta pantalla es personalizable, de la misma forma que las otras pantallas de gestión. Puedes actuar sobre cada comentario usando los enlaces de acción que aparecerán al ponerte sobre ellos o utilizando la Acción en lote." + +#: wp-admin/edit-comments.php:119 +msgid "Many people take advantage of keyboard shortcuts to moderate their comments more quickly. Use the link below to learn more." +msgstr "Mucha gente saca partido a los atajos de teclado para moderar comentarios de forma rápida. Utiliza el siguiente enlace para aprender más." + +#: wp-admin/includes/class-wp-posts-list-table.php:542 +msgid "Edit this item" +msgstr "Editar este elemento" + +#: wp-admin/includes/class-wp-posts-list-table.php:543 +msgid "Edit this item inline" +msgstr "Editar este elemento en línea" + +#: wp-admin/includes/class-wp-posts-list-table.php:547 +msgid "Restore this item from the Trash" +msgstr "Restaurar este elemento desde la papelera" + +#: wp-admin/includes/class-wp-posts-list-table.php:549 +msgid "Move this item to the Trash" +msgstr "Mover este elemento a la papelera" + +#: wp-admin/includes/class-wp-posts-list-table.php:551 +msgid "Delete this item permanently" +msgstr "Borrar este elemento permanentemente" + +#: wp-admin/includes/meta-boxes.php:447 +msgid "Allow comments." +msgstr "Permitir comentarios." + +#: wp-admin/import.php:32 +msgid "Install the LiveJournal importer to import posts from LiveJournal using their API." +msgstr "Instala el importador de LiveJournal para importar entradas usando su API" + +#: wp-admin/includes/media.php:1484 +msgid "Sorry, you have filled your storage quota (%s MB)." +msgstr "Lo sentimos, usted ha ocupado su cuota de almacenamiento (%s MB)." + +#: wp-admin/includes/nav-menu.php:483 wp-admin/nav-menus.php:450 +msgid "The current theme does not natively support menus, but you can use the “Custom Menu” widget to add any menus you create here to the theme’s sidebar." +msgstr "El tema actual no soporta menús de forma nativa, pero puedes usar el widget “Menús personalizados” para añadir los menús que has creado a la barra lateral de tu tema." + +#: wp-admin/includes/class-wp-upgrader.php:1202 +#: wp-admin/includes/class-wp-upgrader.php:1234 +msgid "Return to WordPress Updates" +msgstr "Volver a las actualizaciones de WordPress" + +#: wp-admin/edit-form-advanced.php:170 +msgid "Publish - You can set the terms of publishing your post in the Publish box. For Status, Visibility, and Publish (immediately), click on the Edit link to reveal more options. Visibility includes options for password-protecting a post or making it stay at the top of your blog indefinitely (sticky). Publish (immediately) allows you to set a future or past date and time, so you can schedule a post to be published in the future or backdate a post." +msgstr "Publicar - Puedes fijar las características de publicación en la caja de publicación. Para el estado, visibilidad y publicar (inmediatamente), haz clic en el enlace \"editar\" para ver más opciones. La visibilidad incluye opciones para proteger una entrada con contraseña o para hacer que se quede en la parte superior de tu sitio indefinidamente (entrada fija). Publicar (inmediatamente) te permite fijar una fecha de publicación pasada o futura, con lo que puedes programar una entrada para publicarse después o atrasar la fecha de una entrada." + +#: wp-admin/edit-form-advanced.php:172 +msgid "Featured Image - This allows you to associate an image with your post without inserting it. This is usually useful only if your theme makes use of the featured image as a post thumbnail on the home page, a custom header, etc." +msgstr "Imagen destacada - Esto te permite asociar una imagen con su entrada sin tener que insertarla, Es útil sólo si tu tema usa la imagen destacada para mostrar una miniatura en la página de inicio, en una cabecera personalizada, etc." + +#: wp-admin/edit-form-advanced.php:168 +msgid "Title - Enter a title for your post. After you enter a title, you’ll see the permalink below, which you can edit." +msgstr "Título - Introduce el título de tu entrada. Después de introducir el título, podrás ver el enlace permanente el cual podrás editar." + +#: wp-admin/edit-form-advanced.php:174 +msgid "Discussion - You can turn comments and pings on or off, and if there are comments on the post, you can see them here and moderate them." +msgstr "Comentarios - Puedes activar o desactivar los comentarios y pings, y si hay comentario en las entradas, puedes verlos aquí y moderarlos." + +#: wp-admin/edit.php:158 +msgid "You can refine the list to show only posts in a specific category or from a specific month by using the dropdown menus above the posts list. Click the Filter button after making your selection. You also can refine the list by clicking on the post author, category or tag in the posts list." +msgstr "Puedes refinar lo que muestra el listado de entradas haciendo que sólo se muestren las de una categoría específica o de un mes determinado usando el menú desplegable que encontrarás sobre el listado de entradas. Realiza un clic sobre el botón Filtro después de realizar tu selección. También puedes refinar el listado haciendo clic sobre el autor de una entrada, categoría o etiqueta del listado de entradas." + +#: wp-admin/edit.php:157 +msgid "You can view posts in a simple title list or with an excerpt. Choose the view you prefer by clicking on the icons at the top of the list on the right." +msgstr "Puedes ver las entradas en un listado que muestre sólo los títulos o un fragmento del contenido. Selecciona la vista que prefieras realizando un clic en los iconos que encontrarás en la parte superior derecha del listado." + +#: wp-admin/edit.php:155 +msgid "You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab." +msgstr "Puedes esconder/mostrar columnas basándote en tus necesidades y decidir cuántas entradas se mostrarán por pantalla utilizando la pestaña Opciones de pantalla." + +#: wp-admin/edit.php:156 +msgid "You can filter the list of posts by post status using the text links in the upper left to show All, Published, Draft, or Trashed posts. The default view is to show all posts." +msgstr "Puedes filtrar la lista de entradas por estados usando los enlaces que aparecen en la parte superior izquierda para mostrar Todas, Publicado, Borrador o entradas en Papelera. La vista por defecto es mostrar todas las entradas." + +#: wp-admin/edit.php:153 +msgid "You can customize the display of this screen in a number of ways:" +msgstr "Puedes personalizar cómo se muestra esta pantalla de diferentes formas:" + +#: wp-admin/edit.php:160 +msgid "Hovering over a row in the posts list will display action links that allow you to manage your post. You can perform the following actions:" +msgstr "Pasando sobre la línea de la entrada, mostrará los enlaces de las acciones, permitiéndote gestionar la entrada. Puedes realizar las siguientes acciones:" + +#: wp-admin/edit.php:167 +msgid "You can also edit multiple posts at once. Select the posts you want to edit using the checkboxes, select Edit from the Bulk Actions menu and click Apply. You will be able to change the metadata (categories, author, etc.) for all selected posts at once. To remove a post from the grouping, just click the x next to its name in the Bulk Edit area that appears." +msgstr "También puedes editar múltiples entradas de una sola vez. Elige las entradas marcando en sus casillas de verificación, elige Editar en el menú Acciones en lote y haz clic en Aplicar. Esto te permitirá cambiar los metadatos (categorías, autor, etc) de todas las entradas elegidas a la vez. Para eliminar una entrada del grupo, simplemente haz click en la x que está junto a su nombre en el área de Edición en lote." + +#: wp-admin/edit.php:165 +msgid "Preview will show you what your draft post will look like if you publish it. View will take you to your live site to view the post. Which link is available depends on your post’s status." +msgstr "Previsualizar te mostrará cómo se verá la entrada antes de publicarla. Ver te llevará a tu sitio público para ver tu entrada publicada. Cada uno de los enlaces está disponible dependiendo del estado de tu entrada." + +#: wp-admin/edit.php:164 +msgid "Trash removes your post from this list and places it in the trash, from which you can permanently delete it." +msgstr "Papelera elimina la entrada de esta lista y la coloca en la papelera. Desde ahí la podrás eliminar de forma permanente." + +#: wp-admin/edit.php:163 +msgid "Quick Edit provides inline access to the metadata of your post, allowing you to update post details without leaving this screen." +msgstr "Edición rápida te da acceso en línea a los metadatos de tu entrada, permitiéndote actualizar los detalles de tu entrada sin abandonar la pantalla." + +#: wp-admin/edit.php:162 +msgid "Edit takes you to the editing screen for that post. You can also reach that screen by clicking on the post title." +msgstr "Editar te lleva a la pantalla de edición de entradas. También puedes acceder a esta pantalla haciendo clic sobre el título de cada entrada." + +#: wp-includes/default-widgets.php:1057 wp-admin/includes/theme.php:308 +msgid "Custom Menu" +msgstr "Menú personalizado" + +#: wp-includes/default-widgets.php:1056 +msgid "Use this widget to add one of your custom menus as a widget." +msgstr "Usa este widget para añadir uno de tus menús de navegación como widget." + +#: wp-admin/plugins.php:396 +msgid "Search Installed Plugins" +msgstr "Buscar Plugins Instalados" + +#: wp-admin/includes/nav-menu.php:492 +msgid "Your theme supports %s menu. Select which menu you would like to use." +msgid_plural "Your theme supports %s menus. Select which menu appears in each location." +msgstr[0] "Tu tema soporta %s menú. Selecciona qué menú quieres utilizar." +msgstr[1] "Tu tema soporta %s menús. Selecciona qué menú quieres utilizar en cada posición." + +#: wp-admin/update-core.php:409 +msgid "This screen lets you update to the latest version of WordPress as well as update your themes and plugins from the WordPress.org repository. When updates are available, the number of available updates will appear in a bubble on the left hand menu as a notification. It is very important to keep your WordPress installation up to date for security reasons, so when you see a number appear, make sure you take the time to update, which is an easy process." +msgstr "Esta pantalla te permite actualizar a la última versión de WordPress, así como actualizar tu temas y plugins desde el repositorio de WordPress.org. Cuando hay actualizaciones disponibles, el número de actualizaciones disponibles aparecerá en una burbuja en el menú de la izquierda como una notificación. Es muy importante mantener tu instalación de WordPress al día por razones de seguridad, así que cuando veas que aparece un número, asegúrate de que realizas las actualizaciones, que es un proceso muy fácil." + +#: wp-admin/index.php:41 +msgid "Incoming Links - Shows links to your site found by Google Blog Search." +msgstr "Enlaces entrantes - Muestra enlaces que apuntan a tu sitio encontrados por la búsqueda de blogs de Google." + +#: wp-admin/index.php:42 +msgid "QuickPress - Allows you to create a new post and either publish it or save it as a draft." +msgstr "Publicación rápida - Te permite crear entradas nuevas y publicarlas o guardarlas como borradores." + +#: wp-admin/index.php:43 +msgid "Recent Drafts - Displays links to the 5 most recent draft posts you’ve started." +msgstr "Borradores recientes - Muestra un enlace a los últimos 5 borradores de entradas que hayas comenzado." + +#: wp-admin/index.php:39 +msgid "Right Now - Displays a summary of the content on your site and identifies which theme and version of WordPress you are using." +msgstr "Ahora mismo - Muestra un resumen de tu sitio e identifica qué tema y versión estás usando." + +#: wp-admin/index.php:40 +msgid "Recent Comments - Shows the most recent comments on your posts (configurable, up to 30) and allows you to moderate them." +msgstr "Comentario recientes - Muestra los comentarios más recientes en tus entradas (es configurable, hasta 30 comentarios) y te permite moderarlos." + +#: wp-admin/nav-menus.php:19 +msgid "Your theme does not support navigation menus or widgets." +msgstr "El tema actual no soporta menús de navegación o widgets." + +#: wp-includes/script-loader.php:245 wp-admin/async-upload.php:56 +msgid "“%s” has failed to upload due to an error" +msgstr "Ha habido un error al subir “%s”" + +#: wp-admin/includes/dashboard.php:488 +msgid "Post published. View post | Edit post" +msgstr "Entrada publicada. Ver entrada | Editar entrada" + +#: wp-admin/includes/dashboard.php:492 +msgid "Draft saved. Preview post | Edit post" +msgstr "Borrador guardado. Previsualizar entrada | Editar entrada" + +#: wp-admin/tools.php:51 wp-admin/import.php:31 +msgid "Categories and Tags Converter" +msgstr "Conversor de etiquetas y categorías" + +#: wp-admin/import.php:31 +msgid "Install the category/tag converter to convert existing categories to tags or tags to categories, selectively." +msgstr "Instala el conversor de categorías existentes en etiquetas o las etiquetas en categorías, de forma selectiva." + +#: wp-includes/pluggable.php:1092 +msgid "New pingback on your post \"%s\"" +msgstr "Nuevo pingback en tu entrada \"%s\"" + +#: wp-includes/pluggable.php:1178 +msgid "A new pingback on the post \"%s\" is waiting for your approval" +msgstr "Un nuevo pingback a la entada \"%s\" está esperando tu aprobación" + +#: wp-includes/pluggable.php:1185 +msgid "A new comment on the post \"%s\" is waiting for your approval" +msgstr "Un nuevo comentario a la entrada \"%s\" está esperando tu aprobación" + +#: wp-includes/pluggable.php:1083 +msgid "New trackback on your post \"%s\"" +msgstr "Nuevo trackback a tu entrada \"%s\"" + +#: wp-includes/pluggable.php:1072 +msgid "New comment on your post \"%s\"" +msgstr "Nuevo comentario a tu entrada \"%s\"" + +#: wp-admin/user-edit.php:335 +msgid "There is a pending change of your e-mail to %1$s. Cancel" +msgstr "Hay un cambio pendiente en tu correo electrónico a %1$s. Cancelar" + +#: wp-admin/includes/nav-menu.php:664 +msgid "Most Recent" +msgstr "Más reciente" + +#: wp-admin/export.php:151 wp-admin/export.php:183 +msgid "End Date" +msgstr "Fecha de finalización" + +#: wp-admin/export.php:147 wp-admin/export.php:179 +msgid "Start Date" +msgstr "Fecha de inicio" + +#: wp-includes/taxonomy.php:2035 +msgid "A term with the name provided already exists." +msgstr "Ya existe un término igual al facilitado." + +#: wp-admin/custom-background.php:272 +msgid "No Repeat" +msgstr "No repetir" + +#: wp-includes/theme-compat/sidebar.php:74 +msgid "XFN" +msgstr "XFN" + +#: wp-includes/theme-compat/sidebar.php:74 +msgid "XHTML Friends Network" +msgstr "Red de amigos de XHTML" + +#: wp-includes/theme-compat/sidebar.php:73 +msgid "Valid XHTML" +msgstr "Valida XHTML" + +#: wp-includes/theme-compat/footer.php:19 +msgid "%1$s and %2$s." +msgstr "%1$s y %2$s." + +#: wp-includes/theme-compat/sidebar.php:38 +msgid "F, Y" +msgstr "j F Y" + +#: wp-includes/theme-compat/sidebar.php:47 +msgid "You are currently browsing the %2$s blog archives." +msgstr "Estás navegando por el archivo de %2$s." + +#: wp-includes/theme-compat/sidebar.php:38 +msgid "You are currently browsing the %2$s blog archives for %3$s." +msgstr "Actualmente estás viendo el archivo del sitio %2$s de %3$s." + +#: wp-includes/theme-compat/comments.php:49 +msgid "Comments are closed." +msgstr "Los comentarios están cerrados." + +#: wp-includes/theme-compat/sidebar.php:41 +msgid "You are currently browsing the %2$s blog archives for the year %3$s." +msgstr "Actualmente estás viendo el archivo del sitio %2$s del año %3$s." + +#: wp-includes/theme-compat/comments.php:73 +msgid "Logged in as %2$s." +msgstr "Identificado como %2$s." + +#: wp-includes/theme-compat/comments-popup.php:71 +msgid "Logged in as %2$s. Log out »" +msgstr "Identificado como %2$s. Salir »" + +#: wp-includes/theme-compat/comments.php:92 +msgid "Submit Comment" +msgstr "Enviar comentario" + +#: wp-includes/theme-compat/footer.php:17 +msgid "%1$s is proudly powered by %2$s" +msgstr "%1$s funciona gracias a %2$s" + +#: wp-includes/theme-compat/comments-popup.php:85 +msgid "URL" +msgstr "URL" + +#: wp-includes/theme-compat/comments-popup.php:90 +msgid "Your Comment" +msgstr "Tu comentario" + +#: wp-includes/theme-compat/comments-popup.php:98 +msgid "Say It!" +msgstr "Enviar" + +#: wp-includes/theme-compat/comments-popup.php:108 +msgid "Close this window." +msgstr "Cerrar esta ventana." + +#: wp-includes/theme-compat/comments-popup.php:114 +msgid "Sorry, no posts matched your criteria." +msgstr "Lo siento, no hay nada que se ajuste a lo que buscas." + +#: wp-includes/theme-compat/comments-popup.php:118 +msgid "Powered by WordPress" +msgstr "Gestionado con WordPress" + +#: wp-includes/theme-compat/comments.php:73 +msgid "Log out of this account" +msgstr "Salir de esta cuenta" + +#: wp-includes/theme-compat/comments.php:73 +msgid "Log out »" +msgstr "Salir »" + +#: wp-includes/theme-compat/comments.php:81 +msgid "Mail (will not be published)" +msgstr "Correo electrónico (no será publicado)" + +#: wp-includes/theme-compat/comments.php:88 +msgid "XHTML: You can use these tags: %s" +msgstr "XHTML: Puedes usar estas etiquetas: %s" + +#: wp-includes/theme-compat/sidebar.php:44 +msgid "You have searched the %2$s blog archives for ‘%3$s’. If you are unable to find anything in these search results, you can try one of these links." +msgstr "Has buscado en el archivo del sitio %2$s el término ‘%3$s’. Si no te es posible encontrar nada en los resultados, puedes probar uno de estos enlaces." + +#: wp-includes/theme-compat/sidebar.php:35 +msgid "l, F jS, Y" +msgstr "j F Y" + +#: wp-includes/theme-compat/sidebar.php:35 +msgid "You are currently browsing the %2$s blog archives for the day %3$s." +msgstr "Actualmente estás navegando por el archivo del sitio %2$s del día %3$s." + +#: wp-includes/theme-compat/sidebar.php:32 +msgid "You are currently browsing the archives for the %s category." +msgstr "Actualmente estás navegando por el archivo de la categoría %s" + +#: wp-includes/theme-compat/footer.php:20 +msgid "%d queries. %s seconds." +msgstr "%d consultas. %s segundos." + +#: wp-includes/theme-compat/footer.php:19 +msgid "Comments (RSS)" +msgstr "Comentarios (RSS)" + +#: wp-includes/theme-compat/footer.php:19 +msgid "Entries (RSS)" +msgstr "Artículos (RSS)" + +#: wp-includes/theme-compat/comments-popup.php:67 +msgid "Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: %s" +msgstr "Las líneas y párrafos saltan automáticamente, nunca se mostrarán los correos electrónicos. HTMLpermitido: %s" + +#: wp-includes/theme-compat/comments.php:17 +msgid "This post is password protected. Enter the password to view comments." +msgstr "Esta entrada está protegida. Para verla, escribe la contraseña:" + +#: wp-includes/theme-compat/sidebar.php:73 +msgid "This page validates as XHTML 1.0 Transitional" +msgstr "Esta página valida como XHTML 1.0 transicional" + +#: wp-includes/theme-compat/comments-popup.php:103 +msgid "Sorry, the comment form is closed at this time." +msgstr "Lo siento, el formulario de comentarios está cerrado en este momento." + +#: wp-includes/theme-compat/comments-popup.php:14 +msgid "%1$s - Comments on %2$s" +msgstr "%1$s - Comentarios en %2$s" + +#: wp-includes/theme-compat/comments-popup.php:35 +msgid "RSS feed for comments on this post." +msgstr "RSS feed para los comentarios de esta entrada." + +#: wp-includes/theme-compat/comments-popup.php:38 +msgid "The URL to TrackBack this entry is: %s" +msgstr "La URL para realizar un TrackBack a esta entrada es: %s" + +#: wp-includes/theme-compat/comments-popup.php:56 +msgid "by %1$s — %2$s @ %4$s" +msgstr "por %1$s — %2$s @ %4$s" + +#: wp-includes/theme-compat/comments-popup.php:66 +msgid "Leave a comment" +msgstr "Deja un comentario" + +#: wp-admin/includes/template.php:1795 +msgctxt "Screen Options" +msgid "Show on screen" +msgstr "Mostrar en pantalla" + +#: wp-admin/import.php:36 +msgid "Install the WordPress importer to import posts, pages, comments, custom fields, categories, and tags from a WordPress export file." +msgstr "Instala el importador de WordPress para importar entradas, páginas, comentarios, campos personalizados, categorías y etiquetas de un archivo de exportación de WordPress." + +#: wp-admin/import.php:35 +msgid "Install the RSS importer to import posts from an RSS feed." +msgstr "Instala el importador RSS para Importar entradas de una fuente RSS." + +#: wp-admin/import.php:34 +msgid "Install the blogroll importer to import links in OPML format." +msgstr "Instala el importador de sitios de interés para importar enlaces en formato OPML." + +#: wp-admin/import.php:33 +msgid "Install the Movable Type importer to import posts and comments from a Movable Type or TypePad blog." +msgstr "Instala el importador de Movable Type para importar entradas y comentarios de un blog de Movable Type o TypePad." + +#: wp-admin/import.php:30 +msgid "Install the Blogger importer to import posts, comments, and users from a Blogger blog." +msgstr "Instala el importador de Blogger para importar entradas, comentarios y usuarios de un blog de Blogger." + +#: wp-admin/import.php:119 +msgid "Install importer" +msgstr "Instalar importador" + +#: wp-includes/post-template.php:1416 +msgctxt "revisions column name" +msgid "New" +msgstr "Nuevo" + +#: wp-includes/post-template.php:1415 +msgctxt "revisions column name" +msgid "Old" +msgstr "Antiguo" + +#: wp-includes/post-template.php:1417 +msgctxt "revisions column name" +msgid "Date Created" +msgstr "Fecha de creación" + +#: wp-includes/taxonomy.php:413 wp-admin/press-this.php:583 +msgid "Choose from the most used tags" +msgstr "Elige entre las etiquetas más utilizadas" + +#: wp-admin/theme-editor.php:198 +msgctxt "Theme stylesheets in theme editor" +msgid "Styles" +msgstr "Estilos" + +#: wp-admin/includes/plugin-install.php:128 +msgctxt "Plugin Installer" +msgid "Tag" +msgstr "Etiqueta" + +#: wp-admin/includes/theme-install.php:63 +msgctxt "Theme Installer" +msgid "Tag" +msgstr "Etiqueta" + +#: wp-admin/includes/media.php:1809 +msgctxt "verb" +msgid "Clear" +msgstr "Limpiar" + +#: wp-admin/edit-tags.php:355 wp-admin/edit-tag-form.php:63 +msgctxt "Taxonomy Description" +msgid "Description" +msgstr "Descripción" + +#: wp-admin/edit-tags.php:340 wp-admin/edit-tag-form.php:46 +msgctxt "Taxonomy Slug" +msgid "Slug" +msgstr "Slug" + +#: wp-admin/edit-tags.php:334 wp-admin/edit-tag-form.php:40 +msgctxt "Taxonomy Name" +msgid "Name" +msgstr "Nombre" + +#: wp-admin/edit-tags.php:347 wp-admin/edit-tag-form.php:53 +msgctxt "Taxonomy Parent" +msgid "Parent" +msgstr "Superior" + +#: wp-admin/edit-form-comment.php:51 +msgctxt "adjective" +msgid "Pending" +msgstr "Pendiente" + +#: wp-admin/includes/class-wp-comments-list-table.php:192 +msgctxt "comment" +msgid "Mark as Spam" +msgstr "Marcar como spam" + +#: wp-includes/comment-template.php:1538 +msgid "You may use these HTML tags and attributes: %s" +msgstr "Puedes usar las siguientes etiquetas y atributos HTML: %s" + +#: wp-admin/custom-background.php:294 +msgid "Color" +msgstr "Color" + +#: wp-admin/custom-background.php:180 wp-admin/includes/template.php:1674 +msgid "Background Image" +msgstr "Imagen de fondo" + +#: wp-admin/custom-background.php:213 +msgid "Remove Background Image" +msgstr "Quitar imagen de fondo" + +#: wp-includes/script-loader.php:230 +msgid "This file exceeds the maximum upload size for this site." +msgstr "El tamaño del archivo excede el tamaño permitido en este sitio." + +#: wp-admin/includes/media.php:1570 wp-admin/includes/media.php:1585 +msgid "Maximum upload file size: %d%s" +msgstr "Tamaño máximo de subida de archivos: %d%s" + +#: wp-admin/edit-comments.php:108 wp-admin/edit-comments.php:133 +msgid "Comments on “%s”" +msgstr "Comentarios en “%s”" + +#: wp-admin/includes/nav-menu.php:1104 +msgid "The Walker class named %s does not exist." +msgstr "La clase Walker para el nombre %s no existe." + +#: wp-admin/includes/nav-menu.php:1140 +msgid "Show advanced menu properties" +msgstr "Mostrar propiedades avanzadas de menú" + +#: wp-admin/includes/template.php:1768 +msgctxt "Columns" +msgid "Show on screen" +msgstr "Mostrar en pantalla" + +#: wp-admin/includes/template.php:1761 +msgctxt "Metaboxes" +msgid "Show on screen" +msgstr "Mostrar en pantalla " + +#: wp-admin/includes/nav-menu.php:386 +msgid "Theme Locations" +msgstr "Ubicación del tema" + +#: wp-includes/taxonomy.php:400 +msgctxt "taxonomy singular name" +msgid "Category" +msgstr "Categoría" + +#: wp-includes/taxonomy.php:401 +msgid "Search Tags" +msgstr "Buscar etiquetas" + +#: wp-includes/taxonomy.php:402 +msgid "Popular Tags" +msgstr "Etiquetas populares" + +#: wp-includes/taxonomy.php:410 +msgid "New Category Name" +msgstr "Nombre de la nueva categoría" + +#: wp-includes/taxonomy.php:410 +msgid "New Tag Name" +msgstr "Nombre de la nueva etiqueta" + +#: wp-includes/taxonomy.php:409 +msgid "Add New Category" +msgstr "Añadir nueva categoría" + +#: wp-includes/taxonomy.php:409 +msgid "Add New Tag" +msgstr "Añadir nueva etiqueta" + +#: wp-includes/taxonomy.php:408 +msgid "Update Tag" +msgstr "Etiqueta actualizada" + +#: wp-includes/taxonomy.php:405 +msgid "Parent Category:" +msgstr "Categoría superior:" + +#: wp-includes/taxonomy.php:404 +msgid "Parent Category" +msgstr "Categoría superior" + +#: wp-includes/taxonomy.php:403 +msgid "All Tags" +msgstr "Todas las etiquetas" + +#: wp-includes/taxonomy.php:399 +msgctxt "taxonomy general name" +msgid "Categories" +msgstr "Categorías" + +#: wp-includes/taxonomy.php:400 +msgctxt "taxonomy singular name" +msgid "Post Tag" +msgstr "Etiqueta de la entrada" + +#: wp-includes/taxonomy.php:399 +msgctxt "taxonomy general name" +msgid "Post Tags" +msgstr "Etiquetas de las entradas" + +#: wp-admin/includes/meta-boxes.php:351 wp-admin/press-this.php:546 +msgid "+ %s" +msgstr "+ %s" + +#: wp-admin/includes/dashboard.php:405 +msgid "Theme %1$s with %2$s Widget" +msgid_plural "Theme %1$s with %2$s Widgets" +msgstr[0] "Tema %1$s con %2$s widget" +msgstr[1] "Tema %1$s con %2$s widgets" + +#: wp-includes/post.php:1184 +msgid "Search Pages" +msgstr "Buscar páginas" + +#: wp-includes/post.php:1180 +msgid "Add New Post" +msgstr "Añadir nueva entrada" + +#: wp-includes/post.php:1187 +msgid "Parent Page:" +msgstr "Página superior:" + +#: wp-includes/post.php:1177 +msgctxt "post type general name" +msgid "Posts" +msgstr "Entradas" + +#: wp-includes/post.php:1181 +msgid "Edit Page" +msgstr "Editar página" + +#: wp-includes/post.php:1184 +msgid "Search Posts" +msgstr "Buscar entradas" + +#: wp-includes/post.php:1180 +msgid "Add New Page" +msgstr "Añadir nueva página" + +#: wp-includes/post.php:1177 +msgctxt "post type general name" +msgid "Pages" +msgstr "Páginas" + +#: wp-includes/post.php:1178 +msgctxt "post type singular name" +msgid "Page" +msgstr "Página" + +#: wp-includes/post.php:1178 +msgctxt "post type singular name" +msgid "Post" +msgstr "Entrada" + +#: wp-admin/update-core.php:252 wp-admin/update-core.php:302 +msgid "You have version %1$s installed. Update to %2$s." +msgstr "Estás usando la versión %1$s. Actualiza a %2$s." + +#: wp-admin/includes/nav-menu.php:744 +msgctxt "nav menu home label" +msgid "Home" +msgstr "Inicio" + +#: wp-admin/themes.php:64 +msgid "New theme activated. This theme supports widgets, please visit the widgets settings screen to configure them." +msgstr "Nuevo tema activado. Este tema soporta widgets, por favor, visita la pantalla configuración de widgets para configurarlos." + +#: wp-login.php:300 wp-admin/includes/user.php:164 +msgid "ERROR: This username is invalid because it uses illegal characters. Please enter a valid username." +msgstr "ERROR: Este nombre de usuario no es válido, ya que usa caracteres no permitidos. Por favor, introduce un nombre de usuario válido." + +#: wp-admin/includes/dashboard.php:373 +msgctxt "comment" +msgid "Spam" +msgid_plural "Spam" +msgstr[0] "Spam" +msgstr[1] "Spam" + +#: wp-admin/includes/class-wp-comments-list-table.php:197 +#: wp-admin/includes/class-wp-comments-list-table.php:402 +msgctxt "comment" +msgid "Not Spam" +msgstr "No es spam" + +#: wp-includes/comment-template.php:1531 +msgid "Required fields are marked %s" +msgstr "Los campos necesarios están marcados %s" + +#: wp-admin/custom-background.php:227 +msgid "This will restore the original background image. You will not be able to restore any customizations." +msgstr "Esto restaurará la imagen de fondo original. No te será posible restaurar ninguna personalización." + +#: wp-includes/theme-compat/footer.php:10 +#: wp-includes/theme-compat/sidebar.php:10 +#: wp-includes/theme-compat/comments.php:10 +#: wp-includes/theme-compat/header.php:10 +#: wp-includes/theme-compat/comments-popup.php:10 +msgid "Please include a %1$s template in your theme." +msgstr "Por favor, incluye la plantilla %1$s en tu tema" + +#: wp-includes/theme-compat/footer.php:10 +#: wp-includes/theme-compat/sidebar.php:10 +#: wp-includes/theme-compat/comments.php:10 +#: wp-includes/theme-compat/header.php:10 +#: wp-includes/theme-compat/comments-popup.php:10 +msgid "Theme without %1$s" +msgstr "Tema sin %1$s" + +#: wp-includes/general-template.php:405 +msgid "The %s option is deprecated for the family of bloginfo() functions." +msgstr "La opción %s es obsoleta, ya no se utiliza en la familia de funciones bloginfo()." + +#: wp-includes/general-template.php:405 +msgid "Use the %s option instead." +msgstr "Usa la opción %s en su lugar." + +#: wp-admin/includes/nav-menu.php:557 +msgid "Label" +msgstr "Etiqueta" + +#: wp-admin/nav-menus.php:494 +msgid "Add New Menu" +msgstr "Añadir nuevo menú" + +#: wp-admin/nav-menus.php:587 +msgid "When you have finished building your custom menu, make sure you click the Save Menu button." +msgstr "Cuando hayas terminado de crear tu menú personalizado, asegúrate de hacer clic en el botón Guardar menú." + +#: wp-admin/nav-menus.php:586 +msgid "After you have added your items, drag and drop to put them in the order you want. You can also click each item to reveal additional configuration options." +msgstr "Después de añadir tus objetos, arrastra y suéltalos en el orden que desees. También puedes hacer clic en cada objeto para ver opciones de configuración avanzadas." + +#: wp-admin/nav-menus.php:559 +msgid "Create Menu" +msgstr "Crear menú" + +#: wp-admin/nav-menus.php:585 +msgid "To create a custom menu, give it a name above and click Create Menu. Then choose items like pages, categories or custom links from the left column to add to this menu." +msgstr "Para crear un menú personalizado dale un nombre y haz clic en Crear menú. Después elige objetos como páginas, categorías o enlaces personalizados de la columna izquierda para añadirlos a este menú." + +#: wp-includes/default-widgets.php:17 +msgid "Your site’s WordPress Pages" +msgstr "Las Páginas de tu sitio de WordPress" + +#: wp-admin/includes/upgrade.php:322 +msgid "" +"Your new WordPress site has been successfully set up at:\n" +"\n" +"%1$s\n" +"\n" +"You can log in to the administrator account with the following information:\n" +"\n" +"Username: %2$s\n" +"Password: %3$s\n" +"\n" +"We hope you enjoy your new site. Thanks!\n" +"\n" +"--The WordPress Team\n" +"http://wordpress.org/\n" +msgstr "" +"Se ha configurado correctamente tu nuevo sitio de WordPress en:\n" +"\n" +"%1$s\n" +"\n" +"Puedes identificarte como administrador con la siguiente información:\n" +"\n" +"Nombre de usuario: %2$s\n" +"Contraseña: %3$s\n" +"\n" +"Esperamos que disfrutes de tu nuevo sitio. ¡Gracias!\n" +"\n" +"--El equipo de WordPress\n" +"http://es.wordpress.org/\n" + +#: wp-admin/includes/dashboard.php:91 +msgid "WordPress Blog" +msgstr "Blog oficial WordPress" + +#: wp-content/plugins/akismet/admin.php:169 +msgid "Your web host or server administrator has disabled PHP's fsockopen or gethostbynamel functions. Akismet cannot work correctly until this is fixed. Please contact your web host or firewall administrator and give them this information about Akismet's system requirements." +msgstr "Tu servidor tiene desactivada la función fsockopen o la función gethostbynamel de PHP. Akismet no puede funcionar correctamente si esto está desactivado. Por favor, ponte en contacto con tu proveedor e infórmales sobre los requisitos de Akismet." + +#: wp-includes/class-wp-xmlrpc-server.php:1796 +msgid "Sorry, you do not have access to user data on this site." +msgstr "Disculpa, no tienes acceso a los datos de los usuarios de este sitio." + +#: wp-includes/class-wp-xmlrpc-server.php:2018 +msgid "Sorry, you are not allowed to post on this site." +msgstr "Disculpa, no tienes autorización para publicar en este sitio." + +#: wp-includes/class-wp-xmlrpc-server.php:2210 +#: wp-includes/class-wp-xmlrpc-server.php:2223 +#: wp-includes/class-wp-xmlrpc-server.php:2499 +#: wp-includes/class-wp-xmlrpc-server.php:2517 +#: wp-includes/class-wp-xmlrpc-server.php:2528 +msgid "Sorry, you are not allowed to publish posts on this site." +msgstr "Disculpa, no tienes autorización para publicar entradas en este sitio." + +#: wp-includes/class-wp-xmlrpc-server.php:3000 +#: wp-includes/class-wp-xmlrpc-server.php:3192 +msgid "Sorry, you must be able to edit posts on this site in order to view categories." +msgstr "Disculpa, para ver las categorías tienes que estar autorizado para editar entradas en este sitio." + +#: wp-includes/class-wp-xmlrpc-server.php:2199 +#: wp-includes/class-wp-xmlrpc-server.php:2508 +msgid "Sorry, you are not allowed to publish pages on this site." +msgstr "Disculpa, no tienes autorización para publicar páginas en este sitio." + +#: wp-admin/user-edit.php:255 wp-admin/user-edit.php:257 +msgid "— No role for this site —" +msgstr "— No hay perfil para este sitio —" + +#: wp-app.php:287 +msgid "AtomPub services are disabled on this site. An admin user can enable them at %s" +msgstr "En este sitio están desactivados los servicios AtomPub. Un administrador puede activarlos visitando %s." + +#: wp-includes/class-wp-xmlrpc-server.php:793 +msgid "Sorry, you cannot edit posts on this site." +msgstr "Disculpa, no puedes editar entradas en este sitio." + +#: wp-includes/class-wp-xmlrpc-server.php:957 +msgid "Sorry, you must be able to edit posts to this site in order to view categories." +msgstr "Disculpa, para ver las categorías tienes que estar autorizado para editar entradas en este sitio." + +#: wp-includes/class-wp-xmlrpc-server.php:1338 +#: wp-includes/class-wp-xmlrpc-server.php:1397 +#: wp-includes/class-wp-xmlrpc-server.php:1423 +#: wp-includes/class-wp-xmlrpc-server.php:1449 +msgid "You are not allowed access to details about this site." +msgstr "No tienes autorización para ver los detalles de este sitio." + +#: wp-admin/tools.php:35 wp-admin/options-writing.php:90 +msgid "Use Press This to clip text, images and videos from any web page. Then edit and add more straight from Press This before you save or publish it in a post on your site." +msgstr "Utiliza Publicar esto para copiar texto, imágenes y vídeos de cualquier página Web. Después corrige y añade más directamente desde Publicar esto antes de guardarlo o publicarlo en una entrada del sitio." + +#: wp-includes/default-widgets.php:513 +msgid "The most recent posts on your site" +msgstr "Las entradas más recientes de tu sitio" + +#: wp-includes/default-widgets.php:330 +msgid "A calendar of your site’s posts" +msgstr "Un calendario de las entradas de tu sitio" + +#: wp-includes/default-widgets.php:217 +msgid "A monthly archive of your site’s posts" +msgstr "Un archivo mensual de las entradas de tu sitio" + +#: wp-includes/default-widgets.php:174 +msgid "A search form for your site" +msgstr "Un formulario de búsqueda para tu sitio" + +#: wp-app.php:324 wp-app.php:365 +msgid "Sorry, you do not have the right to access this site." +msgstr "Lo sentimos, no tienes autorización para acceder a este sitio." + +#: wp-admin/users.php:332 +msgid "User removed from this site." +msgstr "Usuario eliminado de este sitio." + +#: wp-includes/pluggable.php:1260 +msgid "New user registration on your site %s:" +msgstr "Registrado un nuevo usuario en tu sitio %s:" + +#: wp-includes/user.php:102 +msgid "Site Suspended." +msgstr "Sitio suspendido." + +#: wp-includes/class-wp-xmlrpc-server.php:993 +#: wp-includes/class-wp-xmlrpc-server.php:1135 +#: wp-includes/class-wp-xmlrpc-server.php:1138 +#: wp-includes/class-wp-xmlrpc-server.php:1185 +#: wp-includes/class-wp-xmlrpc-server.php:1188 +msgid "You are not allowed to moderate comments on this site." +msgstr "No tienes autorización para moderar comentarios en este sitio." + +#: wp-includes/class-wp-xmlrpc-server.php:828 +msgid "Sorry, you must be able to edit posts on this site in order to view tags." +msgstr "Disculpa, para ver las etiquetas tienes que estar autorizado para editar entradas en este sitio." + +#: wp-includes/class-wp-xmlrpc-server.php:321 +msgid "Site Tagline" +msgstr "Descripción corta" + +#: wp-includes/class-wp-xmlrpc-server.php:304 +msgid "Site URL" +msgstr "URL del sitio" + +#: wp-admin/users.php:264 +msgid "Remove Users from Site" +msgstr "Eliminar usuarios del sitio" + +#: wp-includes/class-wp-xmlrpc-server.php:159 +#: wp-includes/class-wp-xmlrpc-server.php:181 +msgid "XML-RPC services are disabled on this site. An admin user can enable them at %s" +msgstr "El servicio XML-RPC está desactivado en este sitio. Un administrador puede activarlo en %s" + +#: wp-admin/includes/post.php:546 +msgid "You are not allowed to create posts or drafts on this site." +msgstr "No tienes autorización para crear entradas o borradores en este sitio." + +#: wp-admin/includes/plugin.php:401 +msgid "Custom site deleted message." +msgstr "Mensaje personalizado para sitios eliminados." + +#: wp-admin/includes/plugin.php:403 +msgid "Custom site suspended message." +msgstr "Mensaje personalizado para sitios suspendidos." + +#: wp-admin/includes/plugin.php:402 +msgid "Custom site inactive message." +msgstr "Mensaje personalizado para sitios inactivos." + +#: wp-admin/includes/meta-boxes.php:408 +msgid "Trackbacks are a way to notify legacy blog systems that you’ve linked to them. If you link other WordPress sites they’ll be notified automatically using pingbacks, no other action necessary." +msgstr "Los trackbacks son un modo de avisar a sistemas antiguos de que les has enlazado. Si enlazas a otros sitios creados con WordPress recibirán un aviso automático gracias a los pingbacks, sin tener que hacer nada." + +#: wp-admin/includes/post.php:544 +msgid "You are not allowed to create pages on this site." +msgstr "No tienes autorización para crear páginas en este sitio." + +#: wp-admin/includes/schema.php:200 +msgid "My Site" +msgstr "Mi sitio" + +#: wp-admin/install.php:133 +msgid "Allow my site to appear in search engines like Google and Technorati." +msgstr "Permitir que mi sitio aparezca en motores de búsqueda como Google y Technorati." + +#: wp-admin/includes/upgrade.php:337 +msgid "New WordPress Site" +msgstr "Nuevo sitio de WordPress" + +#: wp-admin/update.php:194 wp-admin/update.php:224 +msgid "You do not have sufficient permissions to install themes for this site." +msgstr "No tienes suficientes permisos para instalar temas en este sitio." + +#: wp-admin/update.php:93 wp-admin/update.php:124 +msgid "You do not have sufficient permissions to install plugins for this site." +msgstr "No tienes suficientes permisos para instalar plugins en este sitio." + +#: wp-admin/update.php:148 wp-admin/update.php:168 +msgid "You do not have sufficient permissions to update themes for this site." +msgstr "No tienes suficientes permisos para actualizar temas en este sitio." + +#: wp-admin/update.php:24 wp-admin/update.php:50 wp-admin/update.php:69 +msgid "You do not have sufficient permissions to update plugins for this site." +msgstr "No tienes suficientes permisos para actualizar plugins en este sitio." + +#: wp-includes/load.php:426 +msgid "The site you have requested is not installed properly. Please contact the system administrator." +msgstr "El sitio que has solicitado no está instalado correctamente. Por favor, ponte en contacto con el administrador del sistema." + +#: wp-admin/theme-install.php:16 +msgid "You do not have sufficient permissions to install themes on this site." +msgstr "No tienes suficientes permisos para instalar temas en este sitio." + +#: wp-admin/theme-editor.php:18 +msgid "You do not have sufficient permissions to edit templates for this site." +msgstr "No tienes suficientes permisos para editar las plantillas de este sitio." + +#: wp-admin/plugins.php:41 wp-admin/plugins.php:71 wp-admin/plugins.php:131 +msgid "You do not have sufficient permissions to activate plugins for this site." +msgstr "No tienes suficientes permisos para activar plugins en este sitio." + +#: wp-admin/plugin-install.php:16 +msgid "You do not have sufficient permissions to install plugins on this site." +msgstr "No tienes suficientes permisos para instalar plugins en este sitio." + +#: wp-admin/plugins.php:154 wp-admin/plugins.php:167 +msgid "You do not have sufficient permissions to deactivate plugins for this site." +msgstr "No tienes suficientes permisos para desactivar plugins en este sitio." + +#: wp-admin/plugins.php:190 +msgid "You do not have sufficient permissions to delete plugins for this site." +msgstr "No tienes suficientes permisos para eliminar plugins en este sitio." + +#: wp-admin/link-add.php:13 +msgid "You do not have sufficient permissions to add links to this site." +msgstr "No tienes suficientes permisos para añadir enlaces a este sitio." + +#: wp-admin/link-manager.php:12 wp-admin/link-manager.php:56 +#: wp-admin/link.php:18 +msgid "You do not have sufficient permissions to edit the links for this site." +msgstr "No tienes suficientes permisos para editar los enlaces en este sitio." + +#: wp-admin/export.php:13 +msgid "You do not have sufficient permissions to export the content of this site." +msgstr "No tienes suficientes permisos para exportar el contenido de este sitio." + +#: wp-admin/import.php:15 +msgid "You do not have sufficient permissions to import content in this site." +msgstr "No tienes suficientes permisos para importar contenidos en este sitio." + +#: wp-admin/import.php:58 +msgid "If you have posts or comments in another system, WordPress can import those into this site. To get started, choose a system to import from below:" +msgstr "Si tienes entradas o comentarios en otro sistema, WordPress los puede importar a este sitio. Para comenzar, elige el sistema desde el que los importarás:" + +#: wp-admin/plugin-editor.php:30 +msgid "There are no plugins installed on this site." +msgstr "No hay plugins instalados en este sitio." + +#: wp-admin/plugin-editor.php:18 +msgid "You do not have sufficient permissions to edit plugins for this site." +msgstr "No tienes suficientes permisos para editar los plugins de este sitio." + +#: wp-admin/includes/nav-menu.php:609 wp-admin/includes/nav-menu.php:828 +msgid "No items." +msgstr "Sin elementos." + +#: wp-admin/nav-menus.php:539 +msgid "Menu Name" +msgstr "Nombre del menú" + +#: wp-admin/includes/nav-menu.php:1143 +msgid "CSS Classes" +msgstr "Clases CSS" + +#: wp-admin/includes/nav-menu.php:134 +msgid "Navigation Label" +msgstr "Etiqueta de navegación" + +#: wp-includes/script-loader.php:441 +msgctxt "search results" +msgid "No results found." +msgstr "No se han encontrado resultados." + +#: wp-includes/nav-menu.php:226 wp-includes/nav-menu.php:233 +msgid "The menu name %s conflicts with another menu name. Please try another." +msgstr "El nombre de menú %s está creando un conflicto con otro nombre de menú. Por favor, selecciona otro nombre." + +#: wp-admin/includes/schema.php:774 +msgid "To use a subdomain configuration, you must have a wildcard entry in your DNS. This usually means adding a * hostname record pointing at your web server in your DNS configuration tool." +msgstr "Para hacer uso de la configuración en subdominios debes tener una entrada de registro wildcard en tu DNS. Normalmente esto se consigue añadiendo el registro * en tu nombre de servidor, apuntando a tu servidor o dominio en las herramientas de configuración de tu servidor o dominio." + +#: wp-admin/includes/schema.php:770 +msgid "The installer attempted to contact a random hostname (%1$s) on your domain." +msgstr "El instalador ha tratado de contactar con un servidor aleatorio (%1$s) en tu dominio." + +#: wp-admin/includes/nav-menu.php:387 +msgid "Custom Links" +msgstr "Enlaces personalizados" + +#: wp-includes/nav-menu.php:275 +msgid "The given object ID is not that of a menu item." +msgstr "El ID de objeto dado no es de un objeto de menú." + +#: wp-admin/install.php:108 +msgid "Usernames can have only alphanumeric characters, spaces, underscores, hyphens, periods and the @ symbol." +msgstr "Los nombres de usuario sólo pueden tener caracteres alfanuméricos, espacios, guiones bajos, guiones, puntos y el símbolo @." + +#: wp-admin/install.php:197 +msgid "the username you provided has invalid characters." +msgstr "el nombre de usuario proporcionado tiene caracteres inválidos." + +#: wp-admin/includes/nav-menu.php:114 +msgid "Move down" +msgstr "Mover abajo" + +#: wp-admin/nav-menus.php:237 +msgid "The menu item has been successfully deleted." +msgstr "La opción del menú se ha eliminado correctamente." + +#: wp-admin/includes/nav-menu.php:101 +msgid "Move up" +msgstr "Mover arriba" + +#: wp-admin/nav-menus.php:519 wp-admin/nav-menus.php:529 +msgid "Add menu" +msgstr "Añadir menú" + +#: wp-includes/formatting.php:2426 wp-includes/formatting.php:2434 +msgid "The email address entered did not appear to be a valid email address. Please enter a valid email address." +msgstr "La dirección de correo electrónico parece que no es válida. Por favor, introduce una válida." + +#: wp-includes/formatting.php:2517 +msgid "The WordPress address you entered did not appear to be a valid URL. Please enter a valid URL." +msgstr "La dirección de WordPress parece no ser una URL válida. Por favor, introduce una válida." + +#: wp-includes/formatting.php:2527 +msgid "The Site address you entered did not appear to be a valid URL. Please enter a valid URL." +msgstr "La dirección del sitio no parece ser una URL válida. Por favor, introduce una válida." + +#: wp-includes/taxonomy.php:2020 +msgid "A term with the name provided already exists with this parent." +msgstr "Un término con el nombre dado ya existe en este nivel." + +#: wp-admin/includes/class-wp-theme-install-list-table.php:98 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:86 +msgid "Try again" +msgstr "Inténtalo de nuevo" + +#: wp-admin/includes/plugin-install.php:50 wp-admin/includes/theme.php:406 +msgid "An unknown error occurred." +msgstr "Ha ocurrido un error desconocido." + +#: wp-admin/includes/plugin-install.php:46 wp-admin/includes/theme.php:402 +msgid "An Unexpected HTTP Error occurred during the API request." +msgstr "Hubo un error HTTP inesperado durante la petición API." + +#: wp-admin/admin-ajax.php:866 +msgid "Please provide a custom field name." +msgstr "Por favor, proporciona un nombre al campo personalizado." + +#: wp-includes/locale.php:186 +msgid "number_format_decimal_point" +msgstr "," + +#: wp-includes/comment-template.php:1537 +msgid "Your email address will not be published." +msgstr "Tu dirección de correo electrónico no será publicada." + +#: wp-admin/custom-background.php:246 +msgid "Display Options" +msgstr "Opciones de visualización" + +#: wp-admin/custom-header.php:552 wp-admin/custom-background.php:209 +msgid "Remove Image" +msgstr "Eliminar Imagen" + +#: wp-admin/custom-header.php:502 wp-admin/custom-background.php:234 +msgid "Upload Image" +msgstr "Subir imagen" + +#: wp-admin/custom-background.php:295 +msgid "Background Color" +msgstr "Color de fondo" + +#: wp-admin/custom-background.php:253 +msgid "Background Position" +msgstr "Posición del fondo" + +#: wp-admin/users.php:265 +msgid "You have specified these users for removal:" +msgstr "Has especificado estos usuarios para ser eliminados:" + +#: wp-admin/users.php:91 wp-admin/users.php:138 +msgid "User deletion is not allowed from this screen." +msgstr "No está permitido eliminar usuarios desde esta pantalla." + +#: wp-admin/users.php:111 +msgid "You can’t delete that user." +msgstr "No puedes eliminar este usuario." + +#: wp-admin/users.php:273 +msgid "ID #%1s: %2s The current user will not be removed." +msgstr "ID #%1s: %2s El usuario actual no será eliminado." + +#: wp-admin/users.php:275 +msgid "ID #%1s: %2s You don't have permission to remove this user." +msgstr "ID #%1s: %2s No tienes permisos para eliminar este usuario." + +#: wp-admin/users.php:284 +msgid "Confirm Removal" +msgstr "Confirmar Eliminación" + +#: wp-admin/users.php:286 +msgid "There are no valid users selected for removal." +msgstr "No hay usuarios válidos seleccionados para su eliminación." + +#: wp-admin/users.php:335 +msgid "You can't remove the current user." +msgstr "No puedes eliminar el usuario actual." + +#: wp-admin/users.php:336 +msgid "Other users have been removed." +msgstr "Otros usuarios han sido eliminados." + +#: wp-admin/includes/class-wp-upgrader.php:1088 +msgid "%1$s updated successfully." +msgstr "%1$s actualizado correctamente." + +#: wp-admin/includes/class-wp-upgrader.php:1088 +msgid "Show Details" +msgstr "Mostrar detalles" + +#: wp-admin/includes/class-wp-upgrader.php:1088 +msgid "Hide Details" +msgstr "Ocultar detalles" + +#: wp-admin/install.php:194 +msgid "you must provide a valid username." +msgstr "debes proporcionar un nombre de usuario válido." + +#: wp-admin/includes/user.php:378 +msgid "Yes, take me to my profile page" +msgstr "Sí, llévame a mi página de perfil" + +#: wp-admin/includes/upgrade.php:74 +msgid "Your chosen password." +msgstr "Tu contraseña elegida." + +#: wp-admin/includes/user.php:379 +msgid "No thanks, do not remind me again" +msgstr "No gracias, no me lo recuerdes de nuevo" + +#: wp-admin/post.php:235 +msgid "You are not allowed to move this item out of the Trash." +msgstr "No te está permitido mover este elemento fuera de la Papelera." + +#: wp-admin/post.php:254 wp-admin/post.php:257 +msgid "Error in deleting." +msgstr "Error al eliminar." + +#: wp-admin/edit.php:97 wp-admin/post.php:238 +msgid "Error in restoring from Trash." +msgstr "Error al restaurar de la papelera." + +#: wp-admin/edit.php:94 +msgid "You are not allowed to restore this item from the Trash." +msgstr "No estás autorizado para restaurar este elemento de la papelera." + +#: wp-admin/edit.php:84 wp-admin/post.php:225 +msgid "Error in moving to Trash." +msgstr "Error moviendo a la papelera." + +#: wp-admin/edit-comments.php:189 +msgid "%s comment restored from the Trash" +msgid_plural "%s comments restored from the Trash" +msgstr[0] "%s comentario restaurado de la papelera" +msgstr[1] "%s comentarios restaurados de la papelera" + +#: wp-admin/edit-comments.php:185 +msgid "%s comment moved to the Trash." +msgid_plural "%s comments moved to the Trash." +msgstr[0] "%s comentario movido a la papelera." +msgstr[1] "%s comentarios movidos a la papelera." + +#: wp-admin/edit.php:81 wp-admin/post.php:222 +msgid "You are not allowed to move this item to the Trash." +msgstr "No te está permitido mover este elemento a la papelera." + +#: wp-admin/edit.php:228 +msgid "Item restored from the Trash." +msgid_plural "%s items restored from the Trash." +msgstr[0] "Elemento restaurado de la papelera." +msgstr[1] "%s elementos restaurados de la papelera." + +#: wp-admin/update-core.php:275 +msgid "The following themes have new versions available. Check the ones you want to update and then click “Update Themes”." +msgstr "Los siguientes temas tienen versiones nuevas disponibles. Marca aquellas que quieras actualizar y haz clic en “Actualizar Temas”." + +#: wp-includes/class-http.php:123 +msgid "A valid URL was not provided." +msgstr "No se ha facilitado una URL válida." + +#: wp-includes/comment-template.php:1536 +msgid "Logged in as %2$s. Log out?" +msgstr "Conectado como %2$s. ¿Quieres salir?" + +#: wp-admin/user-new.php:169 +msgid "User has been added to your site." +msgstr "El usuario ha sido añadido a tu sitio." + +#: wp-admin/user-new.php:172 +msgid "That user is already a member of this site." +msgstr "Este usuario ya es miembro de este sitio." + +#: wp-admin/user-new.php:166 +msgid "Invitation email sent to user. A confirmation link must be clicked for them to be added to your site." +msgstr "Invitación enviada por correo electrónico al usuario. Debe hacer clic en un enlace de confirmación para que se añada a tu sitio." + +#: wp-includes/media.php:419 +msgid "Could not calculate resized image dimensions" +msgstr "No se han podido recalcular las dimensiones de la imagen redimensionada" + +#: wp-includes/comment-template.php:726 +msgid "Use get_trackback_url() instead if you do not want the value echoed." +msgstr "Utiliza get_trackback_url() en su lugar si no quieres un valor vacío." + +#: wp-admin/update-core.php:203 +msgid "The following plugins have new versions available. Check the ones you want to update and then click “Update Plugins”." +msgstr "Hay nuevas versiones de los siguientes plugins. Marca aquellos que quieras actualizar y haz clic en “Actualizar plugins”." + +#: wp-mail.php:14 +msgid "This action has been disabled by the administrator." +msgstr "Esta acción ha sido deshabilitada por el administrador." + +#: wp-includes/author-template.php:55 +msgid "Use get_the_author() instead if you do not want the value echoed." +msgstr "Utiliza get_the_author() en su lugar si no quieres un valor vacío." + +#: wp-admin/options.php:140 +msgid "The %1$s setting is unregistered. Unregistered settings are deprecated. See http://codex.wordpress.org/Settings_API" +msgstr "La configuración %1$s no está registrada. Las configuraciones sin registrar son obsoletas. Visita http://codex.wordpress.org/Settings_API" + +#: wp-admin/custom-background.php:214 +msgid "This will remove the background image. You will not be able to restore any customizations." +msgstr "Esto eliminará la imagen de fondo. No podrás restaurar ninguna personalización." + +#: wp-admin/edit-tag-form.php:14 +msgid "You did not select an item for editing." +msgstr "No has elegido un elemento para editar." + +#: wp-admin/includes/class-wp-themes-list-table.php:88 +msgid "Only the current theme is available to you. Contact the %s administrator for information about accessing additional themes." +msgstr "Para ti sólo está disponible el tema actual. Contacta con el administrador de %s para obtener información sobre cómo acceder a temas adicionales." + +#: wp-admin/includes/dashboard.php:1154 +msgid "%2$sMB" +msgstr "%2$sMB" + +#: wp-admin/includes/dashboard.php:1162 +msgid "%2$sMB (%3$s%%)" +msgstr "%2$sMB (%3$s%%)" + +#: wp-admin/includes/file.php:22 +msgid "Author Template" +msgstr "Plantilla de autor" + +#: wp-admin/includes/file.php:13 +msgid "Visual Editor Stylesheet" +msgstr "Hoja de estilos del editor visual" + +#: wp-admin/includes/file.php:23 +msgid "Tag Template" +msgstr "Plantilla de etiqueta" + +#: wp-admin/update-core.php:276 +msgctxt "Link used in suggestion to use child themes in GUU" +msgid "http://codex.wordpress.org/Child_Themes" +msgstr "http://codex.wordpress.org/Child_Themes" + +#: wp-admin/edit-form-advanced.php:55 +msgid "Page saved." +msgstr "Página guardada." + +#: wp-admin/edit-form-advanced.php:239 wp-admin/includes/post.php:1845 +msgid "Enter title here" +msgstr "Introduce el título aquí" + +#: wp-admin/users.php:204 wp-admin/users.php:212 wp-admin/users.php:241 +#: wp-admin/users.php:249 +msgid "You can’t remove users." +msgstr "No puedes eliminar usuarios." + +#: wp-includes/script-loader.php:408 +msgid "Are you sure you want to install this plugin?" +msgstr "¿Estás seguro de querer instalar este plugin?" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:208 +msgid "This plugin is already installed and is up to date" +msgstr "Este plugin ya está instalado y actualizado" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:192 +msgid "More information about %s" +msgstr "Más información sobre %s" + +#: wp-admin/update-core.php:29 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:204 +msgid "Update Now" +msgstr "Actualizar ahora" + +#: wp-admin/user-edit.php:266 +msgid "Grant this user super admin privileges for the Network." +msgstr "Dar permisos de super admin en la red a este usuario." + +#: wp-admin/user-edit.php:155 +msgid "Important:" +msgstr "Importante:" + +#: wp-admin/user-edit.php:155 +msgid "This user has super admin privileges." +msgstr "Este usuario tiene privilegios de super admin." + +#: wp-admin/includes/post.php:1238 +msgid "Remove featured image" +msgstr "Quitar la imagen destacada" + +#: wp-admin/includes/post.php:1225 wp-admin/includes/post.php:1226 +msgid "Set featured image" +msgstr "Establecer la imagen destacada" + +#: wp-includes/script-loader.php:431 wp-admin/includes/media.php:1338 +msgid "Use as featured image" +msgstr "Usar como imagen destacada" + +#: wp-admin/edit-form-advanced.php:127 +msgid "Featured Image" +msgstr "Imagen destacada" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:204 +msgid "Update to version %s" +msgstr "Actualizar a la versión %s" + +#: wp-admin/user-new.php:183 +msgid "User added." +msgstr "Usuario añadido." + +#: wp-includes/script-loader.php:265 wp-admin/install.php:258 +msgid "Mismatch" +msgstr "No coinciden" + +#: wp-admin/setup-config.php:163 +msgid "ERROR: \"Table Prefix\" can only contain numbers, letters, and underscores." +msgstr "ERROR: El \"Prefijo Tabla\" sólo puede contener números, letras y guiones bajos." + +#: wp-admin/press-this.php:540 +msgid "You cannot modify this Taxonomy." +msgstr "No puedes modificar esta taxonomía." + +#: wp-admin/custom-background.php:275 +msgid "Tile Vertically" +msgstr "Mosaico Vertical" + +#: wp-admin/custom-background.php:274 +msgid "Tile Horizontally" +msgstr "Mosaico Horizontal" + +#: wp-includes/load.php:173 +msgid "Maintenance" +msgstr "Mantenimiento" + +#: wp-includes/load.php:177 +msgid "Briefly unavailable for scheduled maintenance. Check back in a minute." +msgstr "No disponible por mantenimiento programado. Vuelve a comprobar el sitio en unos minutos." + +#: wp-admin/options-reading.php:108 +msgid "items" +msgstr "elementos" + +#: wp-admin/user-edit.php:238 +msgid "Usernames cannot be changed." +msgstr "El nombre de usuario no puede cambiarse." + +#: wp-includes/post.php:86 +msgid "Navigation Menu Items" +msgstr "Elementos del menú de navegación" + +#: wp-includes/post.php:87 +msgid "Navigation Menu Item" +msgstr "Elemento del menú de navegación" + +#: wp-includes/taxonomy.php:49 +msgid "Navigation Menus" +msgstr "Menús de navegación" + +#: wp-admin/nav-menus.php:385 +msgid "The %s menu has been updated." +msgstr "El menú %s se ha actualizado." + +#: wp-admin/nav-menus.php:256 +msgid "The menu has been successfully deleted." +msgstr "El menú se ha borrado con éxito." + +#: wp-includes/functions.php:1919 +msgid "One or more database tables are unavailable. The database may need to be repaired." +msgstr "Una tabla o más de la base de dato no están disponibles. La base de datos debe ser reparada." + +#: wp-admin/includes/dashboard.php:420 +msgid "Search Engines Blocked" +msgstr "Buscadores bloqueados" + +#: wp-admin/includes/dashboard.php:419 +msgid "Your site is asking search engines not to index its content" +msgstr "Tu sitio le está diciendo a los buscadores que no indexen su contenido." + +#: wp-admin/plugins.php:20 +msgid "You do not have sufficient permissions to manage plugins for this site." +msgstr "No tienes suficientes permisos para administrar los plugins de este sitio." + +#: wp-admin/options-general.php:101 +msgid "Enter the address here if you want your site homepage to be different from the directory you installed WordPress." +msgstr "Introduce la dirección de tu página de inicio si es diferente al directorio donde está instalado WordPress." + +#: wp-admin/options-discussion.php:162 +msgid "An avatar is an image that follows you from weblog to weblog appearing beside your name when you comment on avatar enabled sites. Here you can enable the display of avatars for people who comment on your site." +msgstr "Un avatar es una imagen que te sigue de sitio en sitio, apareciendo junto a tu nombre cuando comentas en una entrada si están activados los avatares en el sitio. Aquí puedes activar que se muestren los avatares de la gente que comente en tu sitio." + +#: wp-admin/options-general.php:99 +msgid "Site address (URL)" +msgstr "Dirección del sitio (URL)" + +#: wp-admin/options-general.php:91 +msgid "In a few words, explain what this site is about." +msgstr "En pocas palabras, explica de qué va este sitio." + +#: wp-admin/options-general.php:299 +msgid "Site language:" +msgstr "Idioma del sitio:" + +#: wp-admin/options-privacy.php:42 +msgid "I would like my site to be visible to everyone, including search engines (like Google, Bing, Technorati) and archivers" +msgstr "Quiero que mi sitio sea visible para todo el mundo, incluyendo buscadores (como Google, Bing, Technorati) y archivadores" + +#: wp-admin/options-privacy.php:39 wp-admin/options-privacy.php:40 +msgid "Site Visibility" +msgstr "Visibilidad del sitio" + +#: wp-admin/options-writing.php:165 +msgid "WordPress is not notifying any Update Services because of your site’s privacy settings." +msgstr "WordPress no está notificando a ningún Servicio de Actualizaciones por la configuración de privacidad." + +#: wp-admin/options-reading.php:121 +msgid "The character encoding of your site (UTF-8 is recommended, if you are adventurous there are some other encodings)" +msgstr "La codificación de caracteres de tu sitio (recomendamos UTF-8, pero si eres un aventurero, tienes otras codificaciones)" + +#: wp-admin/includes/template.php:1092 wp-admin/includes/template.php:1132 +#: wp-admin/includes/plugin.php:1602 wp-admin/includes/plugin.php:1625 +msgid "The miscellaneous options group has been removed. Use another settings group." +msgstr "Las opciones misceláneas de grupo se han eliminado. Usa otros ajustes de grupo." + +#: wp-links-opml.php:29 +msgid "Links for %s" +msgstr "Enlaces para %s" + +#: wp-includes/nav-menu.php:611 +msgid "Custom" +msgstr "Personalizado" + +#: wp-admin/includes/nav-menu.php:149 +msgid "New window or tab" +msgstr "Nueva ventana o pestaña" + +#: wp-admin/includes/nav-menu.php:169 +msgid "The description will be displayed in the menu if the current theme supports it." +msgstr "La descripción se mostrará en los menús si el tema actual lo soporta." + +#: wp-admin/includes/nav-menu.php:148 +msgid "Same window or tab" +msgstr "Misma ventana o pestaña" + +#: wp-includes/default-widgets.php:1094 +msgid "No menus have been created yet. Create some." +msgstr "Aún no se han creado menús. Crea alguno." + +#: wp-admin/options.php:117 +msgid "You do not have sufficient permissions to modify unregistered settings for this site." +msgstr "No tienes suficientes permisos para modificar ajustes no registrados para este sitio." + +#: wp-admin/options-general.php:130 +msgid "There is a pending change of the admin e-mail to %1$s. Cancel" +msgstr "Hay un cambio pendiente del correo electrónico del administrador a %1$s. Cancelar" + +#: wp-includes/script-loader.php:442 +msgid "" +"You are about to permanently delete this menu. \n" +" 'Cancel' to stop, 'OK' to delete." +msgstr "" +"Estás a punto de eliminar permanentemente este menú. \n" +"'Cancelar' para parar, 'OK' para eliminar." + +#: wp-admin/includes/nav-menu.php:140 +msgid "Title Attribute" +msgstr "Atributos del título" + +#: wp-admin/nav-menus.php:296 +msgid "The %s menu has been successfully created." +msgstr "El menú %s se ha creado correctamente." + +#: wp-admin/includes/nav-menu.php:146 wp-admin/includes/nav-menu.php:1142 +msgid "Link Target" +msgstr "Destino del enlace" + +#: wp-admin/includes/nav-menu.php:155 +msgid "CSS Classes (optional)" +msgstr "Clases CSS (opcional)" + +#: wp-admin/nav-menus.php:559 wp-admin/nav-menus.php:598 +msgid "Save Menu" +msgstr "Guardar menú" + +#: wp-admin/install.php:117 +msgid "A password will be automatically generated for you if you leave this blank." +msgstr "Se generará un password automático si lo dejas en blanco. " + +#: wp-admin/install.php:116 +msgid "Password, twice" +msgstr "Password, dos veces" + +#: wp-admin/includes/class-wp-upgrader.php:1220 +msgid "Updating Theme %1$s (%2$d/%3$d)" +msgstr "Actualizando tema %1$s (%2$d/%3$d)" + +#: wp-includes/link-template.php:2464 +msgid "This is the short link." +msgstr "Este es el enlace corto." + +#: wp-admin/options-discussion.php:42 +msgid "Attempt to notify any blogs linked to from the article." +msgstr "Tratar de avisar a los sitios enlazados desde el artículo." + +#: wp-admin/includes/schema.php:640 +msgid "You must provide a domain name." +msgstr "Debes facilitarnos un nombre de dominio." + +#: wp-admin/includes/schema.php:642 +msgid "You must provide a name for your network of sites." +msgstr "Debes facilitarnos un nombre para tu red de sitios." + +#: wp-admin/includes/schema.php:646 +msgid "The network already exists." +msgstr "La red ya existe." + +#: wp-admin/includes/schema.php:650 +msgid "You must provide a valid e-mail address." +msgstr "Debes facilitarnos una dirección de correo electrónico válida." + +#: wp-admin/includes/schema.php:772 +msgid "This resulted in an error message: %s" +msgstr "Esto ha dado como resultado un mensaje de error: %s" + +#: wp-admin/includes/schema.php:775 +msgid "You can still use your site but any subdomain you create may not be accessible. If you know your DNS is correct, ignore this message." +msgstr "Puedes continuar usando tu sitio, pero ningún subdominio que crees será accesible. Si sabes que tu configuración de DNS es correcta, ignora este mensaje." + +#: wp-admin/menu.php:223 +msgid "Delete Site" +msgstr "Eliminar sitio" + +#: wp-admin/includes/user.php:375 +msgid "Notice:" +msgstr "Aviso:" + +#: wp-admin/edit-form-advanced.php:247 +msgid "Get Shortlink" +msgstr "Obtener enlace corto" + +#: wp-includes/admin-bar.php:349 wp-admin/menu.php:57 +msgid "%d WordPress Update" +msgstr "%d Actualización WordPress" + +#: wp-includes/admin-bar.php:353 wp-admin/menu.php:61 +msgid "%d Theme Update" +msgid_plural "%d Theme Updates" +msgstr[0] "%d Actualización tema" +msgstr[1] "%d Actualizaciones temas" + +#: wp-includes/admin-bar.php:351 wp-admin/menu.php:59 +msgid "%d Plugin Update" +msgid_plural "%d Plugin Updates" +msgstr[0] "%d Actualización plugin" +msgstr[1] "%d Actualizaciones plugins" + +#: wp-admin/includes/class-wp-upgrader.php:1188 +msgid "Updating Plugin %1$s (%2$d/%3$d)" +msgstr "Actualizando plugin %1$s (%2$d/%3$d)" + +#: wp-admin/includes/class-wp-upgrader.php:1087 +msgid "The update of %1$s failed." +msgstr "La actualización de %1$s ha fallado." + +#: wp-admin/includes/upgrade.php:87 +msgid "The password you chose during the install." +msgstr "La contraseña que has elegido durante la instalación." + +#: wp-admin/includes/upgrade.php:77 +msgid "User already exists. Password inherited." +msgstr "El usuario ya existe. No se ha modificado la contraseña." + +#: wp-admin/install.php:201 +msgid "your passwords do not match. Please try again" +msgstr "Las contraseñas introducidas no coinciden. Por favor, prueba de nuevo" + +#: wp-includes/admin-bar.php:358 wp-admin/menu.php:67 +msgid "Updates %s" +msgstr "Actualizar %s" + +#: wp-admin/upgrade.php:70 wp-admin/update-core.php:50 +msgid "You cannot update because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s." +msgstr "La actualización no puede instalarse porque WordPress %1$s requiere la versión %2$s o superior de MySQL. Estás usando la versión %3$s." + +#: wp-admin/update-core.php:364 +msgid "WordPress updated successfully" +msgstr "WordPress ha sido actualizado correctamente" + +#: wp-admin/update-core.php:345 +msgid "Update WordPress" +msgstr "Actualizar WordPress" + +#: wp-admin/update-core.php:206 wp-admin/update-core.php:258 +#: wp-admin/update-core.php:464 wp-admin/update-core.php:469 +#: wp-admin/plugins.php:111 +msgid "Update Plugins" +msgstr "Actualizar plugins" + +#: wp-admin/upgrade.php:68 wp-admin/update-core.php:48 +msgid "You cannot update because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s." +msgstr "La actualización no puede instalarse ya que WordPress %1$s requiere la versión %2$s o superior de PHP. Estás usando la versión %3$s." + +#: wp-admin/upgrade.php:66 wp-admin/update-core.php:46 +msgid "You cannot update because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s." +msgstr "No puedes instalar a causa de que WordPress %1$s requiere la versión %2$s o superior de PHP y la versión %3$s o superior de MySQL. Estás usando la versión %4$s de PHP y la versión %5$s de MySQL." + +#: wp-admin/update-core.php:35 +msgid "You are using a development version of WordPress. You can update to the latest nightly build automatically or download the nightly build and install it manually:" +msgstr "Estás utilizando una versión en desarrollo de WordPress. Puedes actualizar a la última versión de desarrollo automáticamente o descargarla para instalarla manualmente:" + +#: wp-admin/update-core.php:39 +msgid "You have the latest version of WordPress. You do not need to update. However, if you want to re-install version %s, you can do so automatically or download the package and re-install manually:" +msgstr "Tienes la última versión de WordPress. No necesitas actualizar. No obstante, si quieres reinstalar la versión %s, puedes hacerlo automáticamente o descargarla para reinstalarla manualmente:" + +#: wp-admin/update-core.php:132 wp-admin/update-core.php:405 +msgid "WordPress Updates" +msgstr "Actualizaciones de WordPress" + +#: wp-admin/user-edit.php:263 +msgid "Super Admin" +msgstr "Súper Admin" + +#: wp-admin/custom-header.php:592 wp-admin/custom-background.php:298 +msgid "Select a Color" +msgstr "Elige un color" + +#: wp-admin/options-general.php:13 wp-admin/options-discussion.php:13 +#: wp-admin/options-privacy.php:13 wp-admin/options-media.php:13 +#: wp-admin/options-writing.php:13 wp-admin/options-reading.php:13 +#: wp-admin/options-permalink.php:13 +msgid "You do not have sufficient permissions to manage options for this site." +msgstr "No tienes suficientes permisos para administrar las opciones de este sitio." + +#: wp-admin/edit.php:17 wp-admin/post-new.php:17 +#: wp-admin/includes/class-wp-posts-list-table.php:56 +msgid "Invalid post type" +msgstr "Tipo de entrada no válido." + +#: wp-admin/includes/nav-menu.php:116 wp-admin/includes/nav-menu.php:118 +msgid "Edit Menu Item" +msgstr "Editar elemento del menú" + +#: wp-includes/script-loader.php:240 +msgid "File canceled." +msgstr "Archivo cancelado." + +#: wp-includes/load.php:22 +msgid "GLOBALS overwrite attempt detected" +msgstr "Detectado intento GLOBAL de sobrescritura." + +#: wp-admin/options-general.php:125 +msgid "This address is used for admin purposes. If you change this we will send you an e-mail at your new address to confirm it. The new address will not become active until confirmed." +msgstr "Esta dirección de correo electrónico se usa para propósitos administrativos. Si la cambias, te enviaremos un correo electrónico a tu nueva dirección para confirmarla. La nueva dirección no se activará hasta ser confirmada." + +#: wp-admin/options-general.php:202 +msgid "Daylight saving time begins on: %s." +msgstr "El horario de verano comienza el: %s." + +#: wp-admin/plugins.php:259 +msgid "%1$s by %2$s (will also delete its data)" +msgstr "%1$s por %2$s (también elimina sus propios datos)" + +#: wp-admin/plugins.php:252 +msgid "You are about to remove the following plugin:" +msgid_plural "You are about to remove the following plugins:" +msgstr[0] "Estás a punto de eliminar el siguiente plugin:" +msgstr[1] "Estás a punto de eliminar los siguientes plugins:" + +#: wp-admin/plugins.php:247 +msgid "Delete Plugin" +msgid_plural "Delete Plugins" +msgstr[0] "Eliminar Plugin" +msgstr[1] "Eliminar Plugins" + +#: wp-admin/plugins.php:270 +msgid "Are you sure you wish to delete these files and data?" +msgstr "¿Estás seguro de que deseas eliminar estos archivos y datos?" + +#: wp-admin/plugins.php:282 +msgid "Yes, Delete these files and data" +msgstr "Sí, quiero borrar estos archivos y datos" + +#: wp-admin/includes/class-wp-plugins-list-table.php:351 +msgid "Requires %s in wp-config.php." +msgstr "Requiere %s en wp-config.php." + +#: wp-admin/includes/class-wp-plugins-list-table.php:351 +msgid "Inactive:" +msgstr "Inactivo:" + +#: wp-admin/includes/class-wp-plugins-list-table.php:227 +msgid "Must-Use (%s)" +msgid_plural "Must-Use (%s)" +msgstr[0] "Debes Usar (%s)" +msgstr[1] "Debes Usar (%s)" + +#: wp-admin/theme-install.php:59 +msgctxt "theme" +msgid "Manage Themes" +msgstr "Administrar temas" + +#: wp-admin/themes.php:76 +msgctxt "theme" +msgid "Install Themes" +msgstr "Instalar temas" + +#: wp-admin/update-core.php:365 +msgid "Go to Dashboard" +msgstr "Ir al Escritorio" + +#: wp-includes/default-widgets.php:1103 wp-admin/nav-menus.php:487 +msgid "Select Menu:" +msgstr "Elegir menú:" + +#: wp-includes/taxonomy.php:50 +msgid "Navigation Menu" +msgstr "Menú de Navegación" + +#: wp-includes/default-widgets.php:1028 +msgid "Taxonomy:" +msgstr "Taxonomía:" + +#: wp-admin/nav-menus.php:299 wp-admin/nav-menus.php:309 +msgid "Please enter a valid menu name." +msgstr "Por favor, introduce un nombre de menú válido." + +#: wp-admin/nav-menus.php:564 +msgid "Delete Menu" +msgstr "Eliminar menú" + +#: wp-admin/includes/nav-menu.php:558 +msgid "Menu Item" +msgstr "Elemento del menú" + +#: wp-admin/includes/nav-menu.php:665 wp-admin/includes/nav-menu.php:879 +msgid "View All" +msgstr "Ver todo" + +#: wp-admin/includes/nav-menu.php:565 wp-admin/includes/nav-menu.php:786 +#: wp-admin/includes/nav-menu.php:963 +msgid "Add to Menu" +msgstr "Añadir al menú" + +#: wp-admin/options-general.php:179 +msgid "This timezone is currently in daylight saving time." +msgstr "Esta zona horaria se encuentra actualmente en el horario de verano." + +#: wp-admin/options-general.php:207 +msgid "This timezone does not observe daylight saving time." +msgstr "Esta zona horaria no tiene en cuenta el horario de verano." + +#: wp-admin/includes/class-wp-plugins-list-table.php:230 +msgid "Drop-ins (%s)" +msgid_plural "Drop-ins (%s)" +msgstr[0] "Infiltrado (%s)" +msgstr[1] "Infiltrados (%s)" + +#: wp-admin/includes/plugin.php:400 +msgid "Executed before Multisite is loaded." +msgstr "Ejecutado antes de cargar el Multisitio." + +#: wp-admin/includes/plugin.php:396 +msgid "External object cache." +msgstr "Caché de objetos externos." + +#: wp-admin/includes/plugin.php:395 +msgid "Custom maintenance message." +msgstr "Mensaje personalizado de mantenimiento." + +#: wp-admin/includes/plugin.php:394 +msgid "Custom install script." +msgstr "Script personalizado de instalación." + +#: wp-admin/includes/plugin.php:393 +msgid "Custom database error message." +msgstr "Mensaje de error de base de datos personalizado." + +#: wp-admin/includes/file.php:288 +msgid "File is empty. Please upload something more substantial." +msgstr "El archivo está vacío. Por favor, sube algo con más sustancia." + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:200 +msgid "Install %s" +msgstr "Instalar %s" + +#: wp-admin/includes/plugin.php:392 +msgid "Custom database class." +msgstr "Clase de base datos personalizada." + +#: wp-admin/includes/plugin.php:391 +msgid "Advanced caching plugin." +msgstr "Plugin avanzado de caché." + +#: wp-admin/install.php:157 +msgid "You cannot install because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s." +msgstr "No puedes instalar porque WordPress %1$s requiere la versión %2$s o superior de MySQL. Estás usando la versión %3$s." + +#: wp-admin/install.php:155 +msgid "You cannot install because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s." +msgstr "No puedes instalar porque WordPress %1$s requiere la versión %2$s o superior de PHP. Estás usando la versión %3$s." + +#: wp-admin/includes/update.php:135 +msgid "WordPress %1$s is available! Please notify the site administrator." +msgstr "¡WordPress %1$s está disponible! Por favor, avisa al administrador del sitio." + +#: wp-admin/includes/update.php:133 +msgid "WordPress %1$s is available! Please update now." +msgstr "¡WordPress %1$s está disponible! Por favor, actualiza ahora." + +#: wp-admin/install.php:153 +msgid "You cannot install because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s." +msgstr "No puedes instalar ya que WordPress %1$s requiere la versión %2$s o superior de PHP y la versión %3$s o superior de MySQL. Estás usando la versión %4$s de PHP y la versión %5$s de MySQL." + +#: wp-includes/admin-bar.php:311 wp-admin/menu.php:161 wp-admin/menu.php:166 +#: wp-admin/nav-menus.php:466 +msgid "Menus" +msgstr "Menús" + +#: wp-admin/comment.php:141 +msgid "This comment is currently marked as spam." +msgstr "Este comentario está marcado como spam." + +#: wp-admin/comment.php:80 +msgid "Moderate Comment" +msgstr "Comentario moderado" + +#: wp-admin/comment.php:138 +msgid "This comment is currently approved." +msgstr "Este comentario está aprobado." + +#: wp-admin/edit-comments.php:197 +msgid "This comment is already approved." +msgstr "Este comentario ya está aprobado." + +#: wp-admin/comment.php:144 +msgid "This comment is currently in the Trash." +msgstr "Este comentario está actualmente en la papelera." + +#: wp-admin/custom-background.php:270 +msgid "Repeat" +msgstr "Repetir" + +#: wp-admin/custom-background.php:280 +msgid "Attachment" +msgstr "Adjunto" + +#: wp-admin/custom-background.php:273 +msgid "Tile" +msgstr "Mosaico" + +#: wp-admin/custom-background.php:284 +msgid "Scroll" +msgstr "Desplazar" + +#: wp-admin/custom-background.php:288 +msgid "Fixed" +msgstr "Fijo" + +#: wp-admin/edit-comments.php:200 +msgid "This comment is already in the Trash." +msgstr "Este comentario ya está en la papelera." + +#: wp-admin/edit-comments.php:200 +msgid "View Trash" +msgstr "Ver papelera" + +#: wp-admin/edit-comments.php:203 +msgid "This comment is already marked as spam." +msgstr "Este comentario ya ha sido marcado como spam." + +#: wp-includes/class-wp-xmlrpc-server.php:164 +#: wp-includes/class-wp-xmlrpc-server.php:188 +msgid "Bad login/pass combination." +msgstr "Combinación de usuario/contraseña errónea." + +#: wp-includes/class-wp-xmlrpc-server.php:294 +msgid "Software Name" +msgstr "Nombre de la aplicación" + +#: wp-includes/class-wp-xmlrpc-server.php:299 +msgid "Software Version" +msgstr "Versión de la aplicación" + +#: wp-includes/class-wp-xmlrpc-server.php:311 +msgid "Time Zone" +msgstr "Zona horaria" + +#: wp-includes/class-wp-xmlrpc-server.php:336 +msgid "Allow new users to sign up" +msgstr "Permitir el registro de nuevos usuarios" + +#: wp-includes/class-wp-xmlrpc-server.php:465 +msgid "Sorry, you cannot edit this page." +msgstr "Disculpa, no puedes editar esta página." + +#: wp-includes/class-wp-xmlrpc-server.php:541 +#: wp-includes/class-wp-xmlrpc-server.php:651 +#: wp-includes/class-wp-xmlrpc-server.php:690 +msgid "Sorry, no such page." +msgstr "Disculpa, no existe esa página." + +#: wp-includes/class-wp-xmlrpc-server.php:569 +#: wp-includes/class-wp-xmlrpc-server.php:733 +msgid "Sorry, you cannot edit pages." +msgstr "Disculpa, no puedes editar páginas." + +#: wp-includes/class-wp-xmlrpc-server.php:617 +msgid "Sorry, you cannot add new pages." +msgstr "Disculpa, no puedes añadir nuevas páginas." + +#: wp-includes/class-wp-xmlrpc-server.php:655 +msgid "Sorry, you do not have the right to delete this page." +msgstr "Disculpa, no tienes autorización para borrar esta página." + +#: wp-includes/class-wp-xmlrpc-server.php:660 +msgid "Failed to delete the page." +msgstr "No se logró borrar la página." + +#: wp-includes/class-wp-xmlrpc-server.php:694 +msgid "Sorry, you do not have the right to edit this page." +msgstr "Disculpa, no tienes autorización para editar esta página." + +#: wp-includes/class-wp-xmlrpc-server.php:873 +msgid "Sorry, you do not have the right to add a category." +msgstr "Disculpa, no tienes autorización para añadir categorías." + +#: wp-includes/class-wp-xmlrpc-server.php:901 +#: wp-includes/class-wp-xmlrpc-server.php:903 +msgid "Sorry, the new category failed." +msgstr "Disculpa, la creación de la nueva categoría falló." + +#: wp-includes/class-wp-xmlrpc-server.php:931 +msgid "Sorry, you do not have the right to delete a category." +msgstr "Disculpa, no tienes autorización para borrar categorías." + +#: wp-includes/class-wp-xmlrpc-server.php:998 +#: wp-includes/class-wp-xmlrpc-server.php:1143 +#: wp-includes/class-wp-xmlrpc-server.php:1193 +msgid "Invalid comment ID." +msgstr "El ID del comentario no es válido." + +#: wp-includes/class-wp-xmlrpc-server.php:1067 +msgid "Sorry, you cannot edit comments." +msgstr "Disculpa, no puedes editar comentarios." + +#: wp-includes/class-wp-xmlrpc-server.php:1200 +msgid "Invalid comment status." +msgstr "El estado del comentario no es válido." + +#: wp-includes/class-wp-xmlrpc-server.php:1231 +msgid "Sorry, the comment could not be edited. Something wrong happened." +msgstr "Disculpa, no se ha podido editar el comentario. Se ha producido un error." + +#: wp-includes/class-wp-xmlrpc-server.php:1262 +msgid "You must be registered to comment" +msgstr "Los usuarios deben registrarse e identificarse para comentar" + +#: wp-includes/class-wp-xmlrpc-server.php:1275 +#: wp-includes/class-wp-xmlrpc-server.php:1278 +#: wp-includes/class-wp-xmlrpc-server.php:2549 +msgid "Invalid post ID." +msgstr "El ID de la entrada no es válido." + +#: wp-includes/class-wp-xmlrpc-server.php:1304 +msgid "Comment author name and email are required" +msgstr "El nombre y correo electrónico del autor del comentario son campos necesarios" + +#: wp-includes/class-wp-xmlrpc-server.php:1306 +msgid "A valid email address is required" +msgstr "Se necesita un correo electrónico válido" + +#: wp-includes/class-wp-xmlrpc-server.php:1365 +msgid "You are not allowed access to details about comments." +msgstr "No tienes autorización para ver los detalles de los comentarios." + +#: wp-includes/class-wp-xmlrpc-server.php:1527 +msgid "You are not allowed to update options." +msgstr "No tienes autorización para actualizar las opciones." + +#: wp-includes/class-wp-xmlrpc-server.php:1831 +#: wp-includes/class-wp-xmlrpc-server.php:2770 +#: wp-includes/class-wp-xmlrpc-server.php:3273 +msgid "Sorry, you cannot edit this post." +msgstr "Disculpa, no puedes editar esta entrada." + +#: wp-includes/class-wp-xmlrpc-server.php:1882 +#: wp-includes/class-wp-xmlrpc-server.php:3138 +msgid "Either there are no posts, or something went wrong." +msgstr "Una de dos, o no hay entradas o algo fue mal." + +#: wp-includes/class-wp-xmlrpc-server.php:1937 +msgid "Sorry, this user can not edit the template." +msgstr "Disculpa, este usuario no puede editar la plantilla." + +#: wp-includes/class-wp-xmlrpc-server.php:1977 +msgid "Sorry, this user cannot edit the template." +msgstr "Disculpa, este usuario no puede editar la plantilla." + +#: wp-includes/class-wp-xmlrpc-server.php:1987 +msgid "Either the file is not writable, or something wrong happened. The file has not been updated." +msgstr "Una de dos, o el archivo no tiene permisos de escritura, o ha ocurrido algún error. El archivo no ha sido actualizado." + +#: wp-includes/class-wp-xmlrpc-server.php:2073 +#: wp-includes/class-wp-xmlrpc-server.php:2125 +#: wp-includes/class-wp-xmlrpc-server.php:2865 +#: wp-includes/class-wp-xmlrpc-server.php:3335 +msgid "Sorry, no such post." +msgstr "Disculpa, no existe la entrada." + +#: wp-includes/class-wp-xmlrpc-server.php:2083 +#: wp-includes/class-wp-xmlrpc-server.php:2686 +msgid "Sorry, you do not have the right to publish this post." +msgstr "Disculpa, no tienes autorización para publicar esta entrada." + +#: wp-includes/class-wp-xmlrpc-server.php:2214 +#: wp-includes/class-wp-xmlrpc-server.php:2270 +#: wp-includes/class-wp-xmlrpc-server.php:2521 +#: wp-includes/class-wp-xmlrpc-server.php:2586 +msgid "Invalid post type." +msgstr "Tipo de entrada no válido." + +#: wp-includes/class-wp-xmlrpc-server.php:2263 +msgid "You are not allowed to post as this user" +msgstr "No tienes autorización para publicar entradas con este nombre de usuario." + +#: wp-includes/class-wp-xmlrpc-server.php:2267 +msgid "You are not allowed to create pages as this user" +msgstr "No tienes autorización para crear páginas con este nombre de usuario." + +#: wp-includes/class-wp-xmlrpc-server.php:2579 +msgid "You are not allowed to change the post author as this user." +msgstr "No tienes autorización para cambiar el autor de la entrada identificado con este nombre de usuario." + +#: wp-includes/class-wp-xmlrpc-server.php:2583 +msgid "You are not allowed to change the page author as this user." +msgstr "No tienes autorización para cambiar el autor de la página identificado con este nombre de usuario." + +#: wp-includes/class-wp-xmlrpc-server.php:2684 +msgid "Sorry, you do not have the right to publish this page." +msgstr "Disculpa, no tienes autorización para publicar esta página." + +#: wp-includes/class-wp-xmlrpc-server.php:2721 +msgid "Sorry, your entry could not be edited. Something wrong happened." +msgstr "Disculpa, no se pudo editar tu entrada. Ocurrió algún error." + +#: wp-includes/class-wp-xmlrpc-server.php:1576 +#: wp-includes/class-wp-xmlrpc-server.php:3056 +msgid "You are not allowed to upload files to this site." +msgstr "No tienes autorización para subir archivos al sitio." + +#: wp-includes/class-wp-xmlrpc-server.php:3083 +msgid "Could not write file %1$s (%2$s)" +msgstr "No se pudo escribir el archivo %1$s (%2$s)" + +#: wp-includes/class-wp-xmlrpc-server.php:3230 +msgid "Sorry, you can not edit this post." +msgstr "Disculpa, no puedes editar esta entrada." + +#: wp-includes/class-wp-xmlrpc-server.php:3427 +msgid "Is there no link to us?" +msgstr "¿No hay enlace hacia nosotros?" + +#: wp-includes/class-wp-xmlrpc-server.php:3467 +#: wp-includes/class-wp-xmlrpc-server.php:3477 +#: wp-includes/class-wp-xmlrpc-server.php:3484 +#: wp-includes/class-wp-xmlrpc-server.php:3591 +msgid "The specified target URL cannot be used as a target. It either doesn’t exist, or it is not a pingback-enabled resource." +msgstr "La URL especificada no puede utilizarse como destino. O bien no existe o no está habilitado para pingbacks." + +#: wp-includes/class-wp-xmlrpc-server.php:3480 +msgid "The source URL and the target URL cannot both point to the same resource." +msgstr "La URL de origen y la URL de destino no pueden apuntar ambas al mismo recurso." + +#: wp-includes/class-wp-xmlrpc-server.php:3488 +msgid "The pingback has already been registered." +msgstr "El pingback ya ha sido registrado." + +#: wp-includes/class-wp-xmlrpc-server.php:3496 +msgid "The source URL does not exist." +msgstr "La URL de origen no existe." + +#: wp-includes/class-wp-xmlrpc-server.php:3508 +msgid "We cannot find a title on that page." +msgstr "No podemos encontrar un título en esa página." + +#: wp-includes/class-wp-xmlrpc-server.php:3544 +msgid "The source URL does not contain a link to the target URL, and so cannot be used as a source." +msgstr "La URL de origen no contiene un enlace a la URL de destino, así que no puede ser usada como origen." + +#: wp-includes/class-wp-xmlrpc-server.php:3565 +msgid "Pingback from %1$s to %2$s registered. Keep the web talking! :-)" +msgstr "Pingback desde %1$s a %2$s registrado. ¡Haz que la web hable! :-)" + +#: wp-includes/class-wp-xmlrpc-server.php:3598 +msgid "The specified target URL does not exist." +msgstr "La URL de destino especificada no existe." + +#: wp-includes/load.php:115 +msgid "Your PHP installation appears to be missing the MySQL extension which is required by WordPress." +msgstr "Parece que tu instalación de PHP no cuenta con la extensión de MySQL, necesaria para hacer funcionar WordPress." + +#: wp-includes/load.php:369 +msgid "ERROR: $table_prefix in wp-config.php can only contain numbers, letters, and underscores." +msgstr "ERROR: $table_prefix en wp-config.php sólo puede contener números, letras y guiones bajos." + +#: wp-includes/wp-db.php:1032 +msgid "" +"\n" +"

    Error establishing a database connection

    \n" +"

    This either means that the username and password information in your wp-config.php file is incorrect or we can't contact the database server at %s. This could mean your host's database server is down.

    \n" +"
      \n" +"\t
    • Are you sure you have the correct username and password?
    • \n" +"\t
    • Are you sure that you have typed the correct hostname?
    • \n" +"\t
    • Are you sure that the database server is running?
    • \n" +"
    \n" +"

    If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the WordPress Support Forums.

    \n" +msgstr "" +"\n" +"

    Error de conexión con la base de datos

    \n" +"

    Esto puede deberse a que los datos de usuario y contraseña de tu wp-config.php son incorrectos o a que no es posible contactar con el servidor de base de datos en %s, lo que podría significar que el servidor de bases de datos de tu host está inactivo.

    \n" +"
      \n" +"\t
    • ¿Estás seguro de que el nombre de usuario y la contraseña son correctos?
    • \n" +"\t
    • ¿Estás seguro de que el nombre del host es correcto?
    • \n" +"\t
    • ¿Estás seguro de que el servidor de bases de datos está activo?
    • \n" +"
    \n" +"

    Si no tienes muy claro lo que significan los términos anteriores, ponte en contacto con tu proveedor de alojamiento. Si necesitas más ayuda, puedes visitar los Foros de ayuda de WordPress.

    \n" + +#: wp-includes/wp-db.php:563 +msgid "Invalid database prefix" +msgstr "Prefijo de la base de datos no válido" + +#: wp-includes/wp-db.php:913 +msgid "WordPress database error %1$s for query %2$s made by %3$s" +msgstr "Error %1$s de la base de datos de WordPress para la consulta %2$s realizada por %3$s" + +#: wp-includes/wp-db.php:915 +msgid "WordPress database error %1$s for query %2$s" +msgstr "Error %1$s de la base de datos de WordPress para la consulta %2$s" + +#: wp-includes/wp-db.php:1311 +msgid " $db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N" +msgstr " $db->get_row(string query, output type, int offset) -- El tipo de salida (output) debe ser uno de estos: OBJECT, ARRAY_A, ARRAY_N" + +#: wp-load.php:55 +msgid "ltr" +msgstr "ltr" + +#: wp-load.php:56 +msgid "There doesn't seem to be a wp-config.php file. I need this before we can get started. Need more help? We got it. You can create a wp-config.php file through a web interface, but this doesn't work for all server setups. The safest way is to manually create the file.

    Create a Configuration File" +msgstr "Aparentemente falta el archivo wp-config.php. Este archivo es necesario para empezar. ¿Necesitas ayuda? La encontrarás aquí (en inglés). Puedes crear un archivo wp-config.php a través de la web, pero esto no funciona en algunos servidores. Lo más seguro es crear el archivo manualmente.

    Crear un archivo de configuración" + +#: wp-includes/comment-template.php:1543 +msgid "Cancel reply" +msgstr "Cancelar respuesta" + +#: wp-includes/comment-template.php:1544 +msgid "Post Comment" +msgstr "Publicar comentario" + +#: wp-includes/comment.php:387 +msgid "Unapproved" +msgstr "Rechazado" + +#: wp-includes/comment.php:628 wp-includes/comment.php:630 +msgid "Duplicate comment detected; it looks as though you’ve already said that!" +msgstr "Comentario duplicado: ¡parece que ya había sido enviado antes!" + +#: wp-includes/comment.php:688 wp-includes/comment.php:690 +msgid "You are posting comments too quickly. Slow down." +msgstr "Estás enviando comentarios a demasiada velocidad. Un poco de calma." + +#: wp-includes/comment.php:1412 +msgid "Could not update comment status" +msgstr "No ha sido posible actualizar el estado del comentario" + +#: wp-includes/cron.php:159 +msgid "This argument has changed to an array to match the behavior of the other cron functions." +msgstr "Este argumento ha cambiado a un array para que coincida con el comportamiento de otras funciones de cron." + +#: wp-includes/cron.php:314 +msgid "Once Hourly" +msgstr "Cada hora" + +#: wp-includes/cron.php:315 +msgid "Twice Daily" +msgstr "Dos veces al día" + +#: wp-includes/cron.php:316 +msgid "Once Daily" +msgstr "Cada día" + +#: wp-includes/default-widgets.php:68 +msgid "Sort by:" +msgstr "Ordenar por:" + +#: wp-includes/default-widgets.php:70 +msgid "Page title" +msgstr "Título de la página" + +#: wp-includes/default-widgets.php:71 +msgid "Page order" +msgstr "Orden de la página" + +#: wp-includes/default-widgets.php:72 +msgid "Page ID" +msgstr "ID de la página" + +#: wp-includes/default-widgets.php:76 +msgid "Exclude:" +msgstr "Excluir:" + +#: wp-includes/default-widgets.php:78 +msgid "Page IDs, separated by commas." +msgstr "IDs de página, separados por comas." + +#: wp-includes/default-widgets.php:93 +msgid "Your blogroll" +msgstr "Tus sitios de interés" + +#: wp-includes/default-widgets.php:108 wp-includes/default-widgets.php:143 +#: wp-admin/menu.php:94 +msgid "All Links" +msgstr "Todos los enlaces" + +#: wp-includes/default-widgets.php:141 +msgid "Select Link Category" +msgstr "Elige la categoría del enlace" + +#: wp-includes/default-widgets.php:154 +msgid "Show Link Image" +msgstr "Mostrar la imagen del enlace" + +#: wp-includes/default-widgets.php:156 +msgid "Show Link Name" +msgstr "Mostrar el nombre del enlace" + +#: wp-includes/default-widgets.php:158 +msgid "Show Link Description" +msgstr "Mostrar la descripción del enlace" + +#: wp-includes/default-widgets.php:160 +msgid "Show Link Rating" +msgstr "Mostrar la clasificación del enlace" + +#: wp-includes/default-widgets.php:233 +msgid "Select Month" +msgstr "Elegir mes" + +#: wp-includes/default-widgets.php:266 wp-includes/default-widgets.php:496 +msgid "Show post counts" +msgstr "Mostrar la cantidad de entradas" + +#: wp-includes/default-widgets.php:282 +msgid "Log in/out, admin, feed and WordPress links" +msgstr "Inicio/Cierre de sesión, administración, RSS y enlaces de WordPress" + +#: wp-includes/default-widgets.php:297 +msgid "Syndicate this site using RSS 2.0" +msgstr "Suscribirse a este sitio usando RSS 2.0" + +#: wp-includes/default-widgets.php:297 +msgid "Entries RSS" +msgstr "RSS de las entradas" + +#: wp-includes/default-widgets.php:331 +msgid "Calendar" +msgstr "Calendario" + +#: wp-includes/default-widgets.php:371 +msgid "Arbitrary text or HTML" +msgstr "Texto o HTML arbitrario" + +#: wp-includes/default-widgets.php:373 +msgid "Text" +msgstr "Texto" + +#: wp-includes/default-widgets.php:408 +msgid "Automatically add paragraphs" +msgstr "Añadir automáticamente parágrafos" + +#: wp-includes/default-widgets.php:421 +msgid "A list or dropdown of categories" +msgstr "Una lista o desplegable de categorías" + +#: wp-includes/default-widgets.php:440 +msgid "Select Category" +msgstr "Elegir categoría" + +#: wp-includes/default-widgets.php:499 +msgid "Show hierarchy" +msgstr "Mostrar jerarquía" + +#: wp-includes/default-widgets.php:514 wp-includes/default-widgets.php:536 +msgid "Recent Posts" +msgstr "Entradas recientes" + +#: wp-includes/default-widgets.php:585 +msgid "Number of posts to show:" +msgstr "Número de entradas a mostrar:" + +#: wp-includes/default-widgets.php:599 +msgid "The most recent comments" +msgstr "Los comentarios más recientes" + +#: wp-includes/default-widgets.php:651 +msgctxt "widgets" +msgid "%1$s on %2$s" +msgstr "%1$s en %2$s" + +#: wp-includes/default-widgets.php:696 +msgid "Entries from any RSS or Atom feed" +msgstr "Entradas desde cualquier feed RSS o Atom" + +#: wp-includes/default-widgets.php:740 +msgid "Syndicate this content" +msgstr "Sindicar este contenido" + +#: wp-includes/default-widgets.php:804 +msgid "An error has occurred; the feed is probably down. Try again later." +msgstr "Ha ocurrido un error; probablemente el feed está caído. Inténtalo de nuevo más tarde." + +#: wp-includes/default-widgets.php:818 +msgid "Untitled" +msgstr "Sin título" + +#: wp-includes/default-widgets.php:898 +msgid "RSS Error: %s" +msgstr "RSS Error: %s" + +#: wp-includes/default-widgets.php:902 +msgid "Enter the RSS feed URL here:" +msgstr "Introduce la URL del feed RSS aquí:" + +#: wp-includes/default-widgets.php:905 +msgid "Give the feed a title (optional):" +msgstr "Dale un título al feed (opcional):" + +#: wp-includes/default-widgets.php:908 +msgid "How many items would you like to display?" +msgstr "¿Cuantos elementos te gustaría mostrar?" + +#: wp-includes/default-widgets.php:917 +msgid "Display item content?" +msgstr "¿Mostrar el contenido?" + +#: wp-includes/default-widgets.php:920 +msgid "Display item author if available?" +msgstr "¿Mostrar el autor si está disponible?" + +#: wp-includes/default-widgets.php:923 +msgid "Display item date?" +msgstr "¿Mostrar la fecha?" + +#: wp-includes/default-widgets.php:989 +msgid "Your most used tags in cloud format" +msgstr "Las etiquetas más utilizadas en formato de nube" + +#: wp-includes/default-widgets.php:990 +msgid "Tag Cloud" +msgstr "Nube de etiquetas" + +#: wp-includes/deprecated.php:62 +msgid "new WordPress Loop" +msgstr "nuevo Loop de WordPress" + +#: wp-includes/deprecated.php:987 +msgid "Last updated" +msgstr "Última actualización" + +#: wp-includes/deprecated.php:1898 wp-includes/post-template.php:1154 +msgid "Missing Attachment" +msgstr "Falta el archivo" + +#: wp-includes/feed-atom-comments.php:21 +msgid "Comments for %1$s searching on %2$s" +msgstr "Comentarios para %1$s buscando en %2$s" + +#: wp-includes/feed-rss2-comments.php:26 wp-includes/feed-atom-comments.php:23 +msgid "Comments for %s" +msgstr "Comentarios para %s" + +#: wp-includes/feed-rss2-comments.php:45 wp-includes/feed-atom-comments.php:53 +msgid "Comment on %1$s by %2$s" +msgstr "Comentario en %1$s por %2$s" + +#: wp-includes/feed-rss2-comments.php:47 wp-includes/feed-atom-comments.php:55 +msgid "By: %s" +msgstr "Por: %s" + +#: wp-includes/feed-rss2-comments.php:22 +msgid "Comments on: %s" +msgstr "Comentarios en: %s" + +#: wp-includes/feed-rss2-comments.php:24 +msgid "Comments for %s searching on %s" +msgstr "Comentarios para %s buscando en %s" + +#: wp-includes/feed-rss2-comments.php:55 +msgid "Protected Comments: Please enter your password to view comments." +msgstr "Comentarios protegidos: Por favor, escribe tu contraseña para ver los comentarios." + +#: wp-includes/formatting.php:36 wp-includes/formatting.php:2905 +msgctxt "opening curly quote" +msgid "“" +msgstr "“" + +#: wp-includes/formatting.php:38 +msgctxt "closing curly quote" +msgid "”" +msgstr "”" + +#: wp-includes/formatting.php:1813 +msgid "%s min" +msgid_plural "%s mins" +msgstr[0] "%s min" +msgstr[1] "%s mins" + +#: wp-includes/formatting.php:1819 +msgid "%s hour" +msgid_plural "%s hours" +msgstr[0] "%s hora" +msgstr[1] "%s horas" + +#: wp-includes/formatting.php:1825 +msgid "%s day" +msgid_plural "%s days" +msgstr[0] "%s día" +msgstr[1] "%s días" + +#: wp-includes/formatting.php:2689 +msgid ", " +msgstr ", " + +#: wp-includes/formatting.php:2691 +msgid ", and " +msgstr ", y " + +#: wp-includes/formatting.php:2693 +msgid " and " +msgstr "y " + +#: wp-includes/functions.php:406 +msgid "%s is a protected WP option and may not be modified" +msgstr "%s es una opción protegida de WP y no puede modificarse" + +#: wp-includes/functions.php:1780 +msgid "ERROR: %s is not a valid feed template." +msgstr "ERROR: %s no es una plantilla de feed válida." + +#: wp-includes/functions.php:2274 wp-includes/functions.php:2392 +msgid "Unable to create directory %s. Is its parent directory writable by the server?" +msgstr "No se pudo crear el directorio %s. Asegúrate de que el servidor tiene permisos de escritura para el directorio superior." + +#: wp-includes/functions.php:2371 +msgid "Empty filename" +msgstr "El nombre de archivo está vacío." + +#: wp-includes/functions.php:2398 +msgid "Could not write file %s" +msgstr "No se pudo escribir el archivo %s." + +#: wp-includes/functions.php:2647 +msgid "Your attempt to edit this attachment: “%s” has failed." +msgstr "Tu intento de editar este archivo: “%s” ha fallado." + +#: wp-includes/functions.php:2649 +msgid "Your attempt to add this category has failed." +msgstr "Tu intento de añadir esta categoría ha fallado." + +#: wp-includes/functions.php:2650 +msgid "Your attempt to delete this category: “%s” has failed." +msgstr "Tu intento de eliminar esta categoría: “%s” ha fallado." + +#: wp-includes/functions.php:2651 +msgid "Your attempt to edit this category: “%s” has failed." +msgstr "Tu intento de editar esta categoría: “%s” ha fallado." + +#: wp-includes/functions.php:2653 +msgid "Your attempt to delete this comment: “%s” has failed." +msgstr "Tu intento de borrar este comentario: “%s” ha fallado." + +#: wp-includes/functions.php:2654 +msgid "Your attempt to unapprove this comment: “%s” has failed." +msgstr "Tu intento de rechazar este comentario: “%s” ha fallado." + +#: wp-includes/functions.php:2655 +msgid "Your attempt to approve this comment: “%s” has failed." +msgstr "Tu intento de aprobar este comentario: “%s” ha fallado." + +#: wp-includes/functions.php:2656 +msgid "Your attempt to edit this comment: “%s” has failed." +msgstr "Tu intento de editar este comentario: “%s” ha fallado." + +#: wp-includes/functions.php:2657 +msgid "Your attempt to bulk modify comments has failed." +msgstr "Tu intento de modificar en bloque los comentarios ha fallado." + +#: wp-includes/functions.php:2658 +msgid "Your attempt to moderate comments has failed." +msgstr "Tu intento de moderar comentarios ha fallado." + +#: wp-includes/functions.php:2660 +msgid "Your attempt to add this link has failed." +msgstr "Tu intento de añadir este enlace ha fallado." + +#: wp-includes/functions.php:2661 +msgid "Your attempt to delete this link: “%s” has failed." +msgstr "Tu intento de borrar este enlace: “%s” ha fallado." + +#: wp-includes/functions.php:2662 +msgid "Your attempt to edit this link: “%s” has failed." +msgstr "Tu intento de editar este enlace: “%s” ha fallado." + +#: wp-includes/functions.php:2663 +msgid "Your attempt to bulk modify links has failed." +msgstr "Tu intento de modificar en bloque los enlaces ha fallado." + +#: wp-includes/functions.php:2665 +msgid "Your attempt to add this page has failed." +msgstr "Tu intento de añadir esta página ha fallado." + +#: wp-includes/functions.php:2666 +msgid "Your attempt to delete this page: “%s” has failed." +msgstr "Tu intento de borrar esta página: “%s” ha fallado." + +#: wp-includes/functions.php:2667 +msgid "Your attempt to edit this page: “%s” has failed." +msgstr "Tu intento de editar esta página: “%s” ha fallado." + +#: wp-includes/functions.php:2669 +msgid "Your attempt to edit this plugin file: “%s” has failed." +msgstr "Tu intento de editar este archivo de un plugin: “%s” ha fallado." + +#: wp-includes/functions.php:2670 +msgid "Your attempt to activate this plugin: “%s” has failed." +msgstr "Tu intento de activar este plugin: “%s” ha fallado." + +#: wp-includes/functions.php:2671 +msgid "Your attempt to deactivate this plugin: “%s” has failed." +msgstr "Tu intento de desactivar este plugin: “%s” ha fallado." + +#: wp-includes/functions.php:2674 +msgid "Your attempt to add this post has failed." +msgstr "Tu intento de añadir esta entrada ha fallado." + +#: wp-includes/functions.php:2675 +msgid "Your attempt to delete this post: “%s” has failed." +msgstr "Tu intento de borrar esta entrada: “%s” ha fallado" + +#: wp-includes/functions.php:2676 +msgid "Your attempt to edit this post: “%s” has failed." +msgstr "Tu intento de editar esta entrada: “%s” ha fallado." + +#: wp-includes/functions.php:2678 +msgid "Your attempt to add this user has failed." +msgstr "Tu intento de añadir este usuario ha fallado." + +#: wp-includes/functions.php:2679 +msgid "Your attempt to delete users has failed." +msgstr "Tu intento de borrar estos usuarios ha fallado." + +#: wp-includes/functions.php:2680 +msgid "Your attempt to bulk modify users has failed." +msgstr "Tu intento de modificar en bloque usuarios ha fallado." + +#: wp-includes/functions.php:2681 +msgid "Your attempt to edit this user: “%s” has failed." +msgstr "Tu intento por editar este usuario: “%s” ha fallado." + +#: wp-includes/functions.php:2682 +msgid "Your attempt to modify the profile for: “%s” has failed." +msgstr "Tu intento de modificar el perfil de: “%s” ha fallado." + +#: wp-includes/functions.php:2684 +msgid "Your attempt to edit your settings has failed." +msgstr "Tu intento de editar tu configuración ha fallado." + +#: wp-includes/functions.php:2685 +msgid "Your attempt to change your permalink structure to: %s has failed." +msgstr "Tu intento de cambiar la estructura de enlaces permanentes a %s no ha tenido éxito." + +#: wp-includes/functions.php:2686 +msgid "Your attempt to edit this file: “%s” has failed." +msgstr "Tu intento de editar este fichero: “%s” ha fallado." + +#: wp-includes/functions.php:2687 +msgid "Your attempt to edit this theme file: “%s” has failed." +msgstr "Tu intento de editar este archivo del tema: “%s” ha fallado." + +#: wp-includes/functions.php:2688 +msgid "Your attempt to switch to this theme: “%s” has failed." +msgstr "Tu intento de cambiar este tema: “%s” ha fallado." + +#: wp-includes/functions.php:2690 +msgid "You are attempting to log out of %s" +msgstr "Estás intentando cerrar tu sesión en %s." + +#: wp-includes/functions.php:2729 +msgid "WordPress Failure Notice" +msgstr "Aviso de fallo de WordPress" + +#: wp-includes/functions.php:2732 +msgid "Do you really want to log out?" +msgstr "¿Estás seguro de que quieres desconectarte?" + +#: wp-includes/functions.php:2734 +msgid "Please try again." +msgstr "Por favor, inténtalo de nuevo." + +#: wp-includes/functions.php:2810 +msgid "« Back" +msgstr "« Volver" + +#: wp-includes/functions.php:2831 +msgid "WordPress › Error" +msgstr "WordPress › Error" + +#: wp-includes/functions.php:3382 wp-includes/functions.php:3422 +msgid "%1$s is deprecated since version %2$s! Use %3$s instead." +msgstr "%1$s está obsoleto desde la versión %2$s. Utiliza %3$s en su lugar." + +#: wp-includes/functions.php:3384 wp-includes/functions.php:3424 +msgid "%1$s is deprecated since version %2$s with no alternative available." +msgstr "%1$s está obsoleto desde la versión %2$s y no hay alternativas disponibles." + +#: wp-includes/functions.php:3466 +msgid "%1$s was called with an argument that is deprecated since version %2$s! %3$s" +msgstr "%1$s fue llamado con un argumento que está obsoleto desde la versión %2$s! %3$s" + +#: wp-includes/functions.php:3468 +msgid "%1$s was called with an argument that is deprecated since version %2$s with no alternative available." +msgstr "%1$s fue llamado con un argumento que está obsoleto desde la versión %2$s y no hay alternativas disponibles." + +#: wp-includes/functions.php:4185 +msgid "Select a city" +msgstr "Selecciona una ciudad" + +#: wp-includes/functions.php:4230 wp-includes/functions.php:4234 +msgid "UTC" +msgstr "UTC" + +#: wp-includes/functions.php:4238 +msgid "Manual Offsets" +msgstr "Desplazamientos manuales" + +#: wp-includes/general-template.php:161 +msgid "Search for:" +msgstr "Buscar por:" + +#: wp-includes/general-template.php:187 wp-login.php:419 wp-login.php:444 +#: wp-login.php:475 wp-login.php:531 +msgid "Log in" +msgstr "Acceder" + +#: wp-includes/general-template.php:189 +msgid "Log out" +msgstr "Desconectar" + +#: wp-includes/general-template.php:260 wp-login.php:644 +msgid "Remember Me" +msgstr "Recuérdame" + +#: wp-includes/general-template.php:336 wp-login.php:421 wp-login.php:477 +#: wp-login.php:527 wp-login.php:660 +msgid "Register" +msgstr "Registrarse" + +#: wp-includes/general-template.php:340 wp-admin/admin-header.php:162 +msgid "Site Admin" +msgstr "Administrador del sitio" + +#: wp-includes/general-template.php:587 +msgid "Search Results %1$s %2$s" +msgstr "Resultados de la búsqueda %1$s %2$s" + +#: wp-includes/general-template.php:592 +msgid "Page not found" +msgstr "No se encontró la página" + +#: wp-includes/general-template.php:939 +msgid "%1$s %2$d" +msgstr "%1$s %2$d" + +#: wp-includes/general-template.php:1148 +msgctxt "calendar caption" +msgid "%1$s %2$s" +msgstr "%1$s %2$s" + +#: wp-includes/general-template.php:1174 wp-includes/general-template.php:1182 +msgid "View posts for %1$s %2$s" +msgstr "Ver todas las entradas para %1$s %2$s" + +#: wp-includes/general-template.php:1604 wp-includes/general-template.php:1627 +msgctxt "feed link" +msgid "»" +msgstr "»" + +#: wp-includes/general-template.php:1606 +msgid "%1$s %2$s Feed" +msgstr "%1$s %2$s Feed" + +#: wp-includes/general-template.php:1608 +msgid "%1$s %2$s Comments Feed" +msgstr "%1$s %2$s RSS de los comentarios" + +#: wp-includes/general-template.php:1629 +msgid "%1$s %2$s %3$s Comments Feed" +msgstr "%1$s %2$s %3$s RSS de los comentarios" + +#: wp-includes/general-template.php:1631 +msgid "%1$s %2$s %3$s Category Feed" +msgstr "%1$s %2$s %3$s RSS de la categoría" + +#: wp-includes/general-template.php:1633 +msgid "%1$s %2$s %3$s Tag Feed" +msgstr "%1$s %2$s %3$s RSS de la etiqueta" + +#: wp-includes/general-template.php:1635 +msgid "%1$s %2$s Posts by %3$s Feed" +msgstr "%1$s %2$s RSS de las entradas de %3$s" + +#: wp-includes/general-template.php:1637 +msgid "%1$s %2$s Search Results for “%3$s” Feed" +msgstr "%1$s %2$s Resultados de búsqueda para “%3$s” RSS" + +#: wp-includes/general-template.php:1969 +msgid "« Previous" +msgstr "« Anterior" + +#: wp-includes/general-template.php:1970 +msgid "Next »" +msgstr "Siguiente »" + +#: wp-includes/general-template.php:2079 +#: wp-includes/js/tinymce/langs/wp-langs.php:49 wp-admin/includes/theme.php:274 +msgid "Gray" +msgstr "Gris" + +#: wp-includes/class-http.php:126 +msgid "User has blocked requests through HTTP." +msgstr "El usuario ha bloqueado las peticiones a través de HTTP." + +#: wp-includes/class-http.php:737 wp-includes/class-http.php:921 +#: wp-includes/class-http.php:1117 wp-includes/class-http.php:1136 +msgid "Too many redirects." +msgstr "Demasiadas redirecciones." + +#: wp-includes/class-http.php:821 +msgid "Malformed URL: %s" +msgstr "La URL %s está mal formada" + +#: wp-includes/class-http.php:697 wp-includes/class-http.php:879 +#: wp-includes/class-http.php:898 wp-includes/class-http.php:1072 +msgid "Could not open handle for fopen() to %s" +msgstr "No se pudo utilizar la función fopen() para %s." + +#: wp-includes/js/tinymce/langs/wp-langs.php:15 +msgid "Do you want to use the WYSIWYG mode for this textarea?" +msgstr "¿Quieres usar el editor visual en este área de texto?" + +#: wp-includes/js/tinymce/langs/wp-langs.php:17 +msgid "Insert" +msgstr "Insertar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:21 +msgid "Browse" +msgstr "Examinar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:22 +#: wp-includes/js/tinymce/langs/wp-langs.php:367 +msgid "Class" +msgstr "Clase" + +#: wp-includes/js/tinymce/langs/wp-langs.php:23 +msgid "-- Not set --" +msgstr "-- Sin configurar --" + +#: wp-includes/js/tinymce/langs/wp-langs.php:24 +#: wp-includes/js/tinymce/langs/wp-langs.php:290 +msgid "Copy/Cut/Paste is not available in Mozilla and Firefox." +msgstr "Copiar/Cortar/Pegar no está disponible en Mozilla y Firefox" + +#: wp-includes/js/tinymce/langs/wp-langs.php:25 +msgid "Currently not supported by your browser, use keyboard shortcuts instead." +msgstr "Actualmente no es compatible con tu navegador, en su lugar puedes utilizar los atajos de teclado." + +#: wp-includes/js/tinymce/langs/wp-langs.php:26 +msgid "Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool." +msgstr "Disculpa, parece que tu bloqueador de ventanas emergentes ha bloqueado una ventana que proporciona funciones de la aplicación. Tendrás que desactivar el bloqueador si quieres usar esta herramienta." + +#: wp-includes/js/tinymce/langs/wp-langs.php:27 +msgid "Error: Invalid values entered, these are marked in red." +msgstr "Error: Se han introducido valores incorrectos que han sido marcados en rojo." + +#: wp-includes/js/tinymce/langs/wp-langs.php:31 +#: wp-includes/js/tinymce/langs/wp-langs.php:294 +msgid "More colors" +msgstr "Más colores" + +#: wp-includes/js/tinymce/langs/wp-langs.php:80 +msgid "Full" +msgstr "Completo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:83 +msgid "%Y-%m-%d" +msgstr "%d-%m-%Y" + +#: wp-includes/js/tinymce/langs/wp-langs.php:84 +msgid "%H:%M:%S" +msgstr "%H:%M:%S" + +#: wp-includes/js/tinymce/langs/wp-langs.php:85 +msgid "Insert date" +msgstr "Insertar fecha" + +#: wp-includes/js/tinymce/langs/wp-langs.php:86 +msgid "Insert time" +msgstr "Insertar hora" + +#: wp-includes/locale.php:140 wp-includes/locale.php:155 +#: wp-includes/js/tinymce/langs/wp-langs.php:87 +msgid "January" +msgstr "enero" + +#: wp-includes/locale.php:141 wp-includes/locale.php:156 +#: wp-includes/js/tinymce/langs/wp-langs.php:87 +msgid "February" +msgstr "febrero" + +#: wp-includes/locale.php:142 wp-includes/locale.php:157 +#: wp-includes/js/tinymce/langs/wp-langs.php:87 +msgid "March" +msgstr "marzo" + +#: wp-includes/locale.php:143 wp-includes/locale.php:158 +#: wp-includes/js/tinymce/langs/wp-langs.php:87 +msgid "April" +msgstr "abril" + +#: wp-includes/locale.php:144 wp-includes/locale.php:159 +#: wp-includes/js/tinymce/langs/wp-langs.php:87 +msgid "May" +msgstr "mayo" + +#: wp-includes/locale.php:145 wp-includes/locale.php:160 +#: wp-includes/js/tinymce/langs/wp-langs.php:87 +msgid "June" +msgstr "junio" + +#: wp-includes/locale.php:146 wp-includes/locale.php:161 +#: wp-includes/js/tinymce/langs/wp-langs.php:87 +msgid "July" +msgstr "julio" + +#: wp-includes/locale.php:147 wp-includes/locale.php:162 +#: wp-includes/js/tinymce/langs/wp-langs.php:87 +msgid "August" +msgstr "agosto" + +#: wp-includes/locale.php:148 wp-includes/locale.php:163 +#: wp-includes/js/tinymce/langs/wp-langs.php:87 +msgid "September" +msgstr "septiembre" + +#: wp-includes/locale.php:149 wp-includes/locale.php:164 +#: wp-includes/js/tinymce/langs/wp-langs.php:87 +msgid "October" +msgstr "octubre" + +#: wp-includes/locale.php:150 wp-includes/locale.php:165 +#: wp-includes/js/tinymce/langs/wp-langs.php:87 +msgid "November" +msgstr "noviembre" + +#: wp-includes/locale.php:151 wp-includes/locale.php:166 +#: wp-includes/js/tinymce/langs/wp-langs.php:87 +msgid "December" +msgstr "diciembre" + +#: wp-includes/locale.php:155 wp-includes/js/tinymce/langs/wp-langs.php:88 +msgid "Jan_January_abbreviation" +msgstr "ene" + +#: wp-includes/locale.php:156 wp-includes/js/tinymce/langs/wp-langs.php:88 +msgid "Feb_February_abbreviation" +msgstr "feb" + +#: wp-includes/locale.php:157 wp-includes/js/tinymce/langs/wp-langs.php:88 +msgid "Mar_March_abbreviation" +msgstr "mar" + +#: wp-includes/locale.php:158 wp-includes/js/tinymce/langs/wp-langs.php:88 +msgid "Apr_April_abbreviation" +msgstr "abr" + +#: wp-includes/locale.php:159 wp-includes/js/tinymce/langs/wp-langs.php:88 +msgid "May_May_abbreviation" +msgstr "may" + +#: wp-includes/locale.php:160 wp-includes/js/tinymce/langs/wp-langs.php:88 +msgid "Jun_June_abbreviation" +msgstr "jun" + +#: wp-includes/locale.php:161 wp-includes/js/tinymce/langs/wp-langs.php:88 +msgid "Jul_July_abbreviation" +msgstr "jul" + +#: wp-includes/locale.php:162 wp-includes/js/tinymce/langs/wp-langs.php:88 +msgid "Aug_August_abbreviation" +msgstr "ago" + +#: wp-includes/locale.php:163 wp-includes/js/tinymce/langs/wp-langs.php:88 +msgid "Sep_September_abbreviation" +msgstr "sep" + +#: wp-includes/locale.php:164 wp-includes/js/tinymce/langs/wp-langs.php:88 +msgid "Oct_October_abbreviation" +msgstr "oct" + +#: wp-includes/locale.php:165 wp-includes/js/tinymce/langs/wp-langs.php:88 +msgid "Nov_November_abbreviation" +msgstr "nov" + +#: wp-includes/locale.php:166 wp-includes/js/tinymce/langs/wp-langs.php:88 +msgid "Dec_December_abbreviation" +msgstr "dic" + +#: wp-includes/locale.php:108 wp-includes/locale.php:118 +#: wp-includes/locale.php:131 wp-includes/js/tinymce/langs/wp-langs.php:89 +msgid "Sunday" +msgstr "Domingo" + +#: wp-includes/locale.php:109 wp-includes/locale.php:119 +#: wp-includes/locale.php:132 wp-includes/js/tinymce/langs/wp-langs.php:89 +msgid "Monday" +msgstr "Lunes" + +#: wp-includes/locale.php:110 wp-includes/locale.php:120 +#: wp-includes/locale.php:133 wp-includes/js/tinymce/langs/wp-langs.php:89 +msgid "Tuesday" +msgstr "Martes" + +#: wp-includes/locale.php:111 wp-includes/locale.php:121 +#: wp-includes/locale.php:134 wp-includes/js/tinymce/langs/wp-langs.php:89 +msgid "Wednesday" +msgstr "Miércoles" + +#: wp-includes/locale.php:112 wp-includes/locale.php:122 +#: wp-includes/locale.php:135 wp-includes/js/tinymce/langs/wp-langs.php:89 +msgid "Thursday" +msgstr "Jueves" + +#: wp-includes/locale.php:113 wp-includes/locale.php:123 +#: wp-includes/locale.php:136 wp-includes/js/tinymce/langs/wp-langs.php:89 +msgid "Friday" +msgstr "Viernes" + +#: wp-includes/locale.php:114 wp-includes/locale.php:124 +#: wp-includes/locale.php:137 wp-includes/js/tinymce/langs/wp-langs.php:89 +msgid "Saturday" +msgstr "Sábado" + +#: wp-includes/locale.php:131 wp-includes/js/tinymce/langs/wp-langs.php:90 +msgid "Sun" +msgstr "Dom" + +#: wp-includes/locale.php:132 wp-includes/js/tinymce/langs/wp-langs.php:90 +msgid "Mon" +msgstr "Lun" + +#: wp-includes/locale.php:133 wp-includes/js/tinymce/langs/wp-langs.php:90 +msgid "Tue" +msgstr "Mar" + +#: wp-includes/locale.php:134 wp-includes/js/tinymce/langs/wp-langs.php:90 +msgid "Wed" +msgstr "Mie" + +#: wp-includes/locale.php:135 wp-includes/js/tinymce/langs/wp-langs.php:90 +msgid "Thu" +msgstr "Jue" + +#: wp-includes/locale.php:136 wp-includes/js/tinymce/langs/wp-langs.php:90 +msgid "Fri" +msgstr "Vie" + +#: wp-includes/locale.php:137 wp-includes/js/tinymce/langs/wp-langs.php:90 +msgid "Sat" +msgstr "Sab" + +#: wp-includes/js/tinymce/langs/wp-langs.php:93 +msgid "Print" +msgstr "Imprimir" + +#: wp-includes/js/tinymce/langs/wp-langs.php:99 +msgid "Direction left to right" +msgstr "Dirección de izquierda a derecha" + +#: wp-includes/js/tinymce/langs/wp-langs.php:100 +msgid "Direction right to left" +msgstr "Dirección de derecha a izquierda" + +#: wp-includes/js/tinymce/langs/wp-langs.php:103 +msgid "Insert new layer" +msgstr "Insertar nueva capa" + +#: wp-includes/js/tinymce/langs/wp-langs.php:104 +msgid "Move forward" +msgstr "Avanzar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:105 +msgid "Move backward" +msgstr "Retroceder" + +#: wp-includes/js/tinymce/langs/wp-langs.php:106 +msgid "Toggle absolute positioning" +msgstr "Cambiar la posición absoluta" + +#: wp-includes/js/tinymce/langs/wp-langs.php:107 +msgid "New layer..." +msgstr "Nueva capa..." + +#: wp-includes/js/tinymce/langs/wp-langs.php:111 +msgid "Cancel all changes" +msgstr "Cancelar todos los cambios" + +#: wp-includes/js/tinymce/langs/wp-langs.php:114 +msgid "Insert non-breaking space character" +msgstr "Insertar un caracter de espacio" + +#: wp-includes/js/tinymce/langs/wp-langs.php:117 +msgid "Run spell checking" +msgstr "Iniciar el corrector ortográfico" + +#: wp-includes/js/tinymce/langs/wp-langs.php:118 +msgid "ieSpell not detected. Do you want to install it now?" +msgstr "No se ha detectado ieSpell. ¿Quieres instalarlo ahora?" + +#: wp-includes/js/tinymce/langs/wp-langs.php:121 +msgid "Horizontale rule" +msgstr "Regla horizontal" + +#: wp-includes/js/tinymce/langs/wp-langs.php:124 +msgid "Emotions" +msgstr "Emoticonos" + +#: wp-includes/js/tinymce/langs/wp-langs.php:127 +msgid "Find" +msgstr "Buscar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:128 +msgid "Find/Replace" +msgstr "Buscar/Remplazar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:131 +#: wp-includes/js/tinymce/langs/wp-langs.php:271 +#: wp-includes/js/tinymce/langs/wp-langs.php:325 +msgid "Insert/edit image" +msgstr "Insertar/Editar imagen" + +#: wp-includes/script-loader.php:278 +#: wp-includes/js/tinymce/langs/wp-langs.php:134 +#: wp-includes/js/tinymce/langs/wp-langs.php:269 +#: wp-includes/js/tinymce/langs/wp-langs.php:342 +msgid "Insert/edit link" +msgstr "Insertar/Editar enlace" + +#: wp-includes/js/tinymce/langs/wp-langs.php:137 +msgid "Citation" +msgstr "Cita" + +#: wp-includes/js/tinymce/langs/wp-langs.php:138 +msgid "Abbreviation" +msgstr "Abreviatura" + +#: wp-includes/js/tinymce/langs/wp-langs.php:139 +msgid "Acronym" +msgstr "Acrónimo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:140 +msgid "Deletion" +msgstr "Borrado" + +#: wp-includes/js/tinymce/langs/wp-langs.php:141 +msgid "Insertion" +msgstr "Insertar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:142 +msgid "Insert/Edit Attributes" +msgstr "Insertar/Editar atributos" + +#: wp-includes/js/tinymce/langs/wp-langs.php:145 +msgid "Edit CSS Style" +msgstr "Editar la hoja de estilos CSS" + +#: wp-includes/js/tinymce/langs/wp-langs.php:148 +msgid "Paste as Plain Text" +msgstr "Pegar como texto plano" + +#: wp-includes/js/tinymce/langs/wp-langs.php:149 +msgid "Paste from Word" +msgstr "Pegar desde Word" + +#: wp-includes/js/tinymce/langs/wp-langs.php:155 +#: wp-includes/js/tinymce/langs/wp-langs.php:157 +msgid "Use CTRL+V on your keyboard to paste the text into the window." +msgstr "Usa CTRL+V en tu teclado para pegar el texto en la ventana." + +#: wp-includes/js/tinymce/langs/wp-langs.php:156 +msgid "Keep linebreaks" +msgstr "Conservar los saltos de línea" + +#: wp-includes/js/tinymce/langs/wp-langs.php:160 +msgid "Inserts a new table" +msgstr "Insertar una nueva tabla" + +#: wp-includes/js/tinymce/langs/wp-langs.php:161 +msgid "Insert row before" +msgstr "Insertar fila encima" + +#: wp-includes/js/tinymce/langs/wp-langs.php:162 +msgid "Insert row after" +msgstr "Insertar fila debajo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:163 +msgid "Delete row" +msgstr "Borrar fila" + +#: wp-includes/js/tinymce/langs/wp-langs.php:164 +msgid "Insert column before" +msgstr "Insertar columna a la izquierda" + +#: wp-includes/js/tinymce/langs/wp-langs.php:165 +msgid "Insert column after" +msgstr "Insertar columna a la derecha" + +#: wp-includes/js/tinymce/langs/wp-langs.php:166 +msgid "Remove column" +msgstr "Borrar columna" + +#: wp-includes/js/tinymce/langs/wp-langs.php:167 +msgid "Split merged table cells" +msgstr "Dividir celdas combinadas" + +#: wp-includes/js/tinymce/langs/wp-langs.php:168 +msgid "Merge table cells" +msgstr "Combinar celdas" + +#: wp-includes/js/tinymce/langs/wp-langs.php:169 +msgid "Table row properties" +msgstr "Propiedades de fila" + +#: wp-includes/js/tinymce/langs/wp-langs.php:170 +msgid "Table cell properties" +msgstr "Propiedades de celda" + +#: wp-includes/js/tinymce/langs/wp-langs.php:171 +msgid "Table properties" +msgstr "Propiedades de tabla" + +#: wp-includes/js/tinymce/langs/wp-langs.php:172 +msgid "Paste table row before" +msgstr "Pegar fila encima" + +#: wp-includes/js/tinymce/langs/wp-langs.php:173 +msgid "Paste table row after" +msgstr "Pegar fila debajo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:174 +msgid "Cut table row" +msgstr "Cortar fila" + +#: wp-includes/js/tinymce/langs/wp-langs.php:175 +msgid "Copy table row" +msgstr "Copiar fila" + +#: wp-includes/js/tinymce/langs/wp-langs.php:176 +msgid "Delete table" +msgstr "Borrar tabla" + +#: wp-includes/js/tinymce/langs/wp-langs.php:177 +msgid "Row" +msgstr "Fila" + +#: wp-includes/js/tinymce/langs/wp-langs.php:178 +msgid "Column" +msgstr "Columna" + +#: wp-includes/js/tinymce/langs/wp-langs.php:179 +msgid "Cell" +msgstr "Celda" + +#: wp-includes/script-loader.php:443 wp-includes/script-loader.php:564 +#: wp-includes/js/tinymce/langs/wp-langs.php:182 +msgid "The changes you made will be lost if you navigate away from this page." +msgstr "Los cambios realizados se perderán si abres otra página." + +#: wp-includes/script-loader.php:90 +#: wp-includes/js/tinymce/langs/wp-langs.php:185 +msgid "Toggle fullscreen mode" +msgstr "Cambiar a modo pantalla completa" + +#: wp-includes/js/tinymce/langs/wp-langs.php:188 +#: wp-includes/js/tinymce/langs/wp-langs.php:356 +msgid "Insert / edit embedded media" +msgstr "Insertar / editar inserción de archivos" + +#: wp-includes/js/tinymce/langs/wp-langs.php:189 +msgid "Edit embedded media" +msgstr "Editar medios incrustados" + +#: wp-includes/js/tinymce/langs/wp-langs.php:192 +msgid "Document properties" +msgstr "Propiedades del documento" + +#: wp-includes/js/tinymce/langs/wp-langs.php:195 +msgid "Insert predefined template content" +msgstr "Insertar la plantilla predefinida de contenido" + +#: wp-includes/js/tinymce/langs/wp-langs.php:198 +msgid "Visual control characters on/off." +msgstr "Control visual de los caracteres on/off." + +#: wp-includes/js/tinymce/langs/wp-langs.php:201 +msgid "Toggle spellchecker" +msgstr "Activar/desactivar el corrector ortográfico" + +#: wp-includes/js/tinymce/langs/wp-langs.php:202 +msgid "Spellchecker settings" +msgstr "Opciones del corrector ortográfico" + +#: wp-includes/js/tinymce/langs/wp-langs.php:203 +msgid "Ignore word" +msgstr "Ignorar palabra" + +#: wp-includes/js/tinymce/langs/wp-langs.php:204 +msgid "Ignore all" +msgstr "Ignorar todo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:205 +msgid "Languages" +msgstr "Idiomas" + +#: wp-includes/js/tinymce/langs/wp-langs.php:206 +msgid "Please wait..." +msgstr "Un momento..." + +#: wp-includes/js/tinymce/langs/wp-langs.php:207 +msgid "Suggestions" +msgstr "Sugerencias" + +#: wp-includes/js/tinymce/langs/wp-langs.php:208 +msgid "No suggestions" +msgstr "No hay sugerencias" + +#: wp-includes/js/tinymce/langs/wp-langs.php:209 +msgid "No misspellings found." +msgstr "No hay errores ortográficos." + +#: wp-includes/js/tinymce/langs/wp-langs.php:213 +msgid "Insert Page Break" +msgstr "Insertar salto de página" + +#: wp-includes/js/tinymce/langs/wp-langs.php:236 +msgctxt "TinyMCE font styles" +msgid "Styles" +msgstr "Estilos" + +#: wp-includes/js/tinymce/langs/wp-langs.php:237 +msgid "Font size" +msgstr "Tamaño de la fuente" + +#: wp-includes/js/tinymce/langs/wp-langs.php:238 +msgid "Font family" +msgstr "Familia de la fuente" + +#: wp-includes/js/tinymce/langs/wp-langs.php:239 +msgid "Format" +msgstr "Formato" + +#: wp-includes/js/tinymce/langs/wp-langs.php:240 +msgid "Paragraph" +msgstr "Párrafo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:241 +msgid "Div" +msgstr "Div" + +#: wp-includes/js/tinymce/langs/wp-langs.php:242 +#: wp-includes/js/tinymce/wp-mce-help.php:242 +msgid "Address" +msgstr "Dirección" + +#: wp-includes/js/tinymce/langs/wp-langs.php:243 +msgid "Preformatted" +msgstr "Preformateado" + +#: wp-includes/js/tinymce/langs/wp-langs.php:244 +#: wp-includes/js/tinymce/wp-mce-help.php:239 +msgid "Heading 1" +msgstr "Título 1" + +#: wp-includes/js/tinymce/langs/wp-langs.php:245 +#: wp-includes/js/tinymce/wp-mce-help.php:240 +msgid "Heading 2" +msgstr "Título 2" + +#: wp-includes/js/tinymce/langs/wp-langs.php:246 +#: wp-includes/js/tinymce/wp-mce-help.php:240 +msgid "Heading 3" +msgstr "Título 3" + +#: wp-includes/js/tinymce/langs/wp-langs.php:247 +#: wp-includes/js/tinymce/wp-mce-help.php:241 +msgid "Heading 4" +msgstr "Título 4" + +#: wp-includes/js/tinymce/langs/wp-langs.php:248 +#: wp-includes/js/tinymce/wp-mce-help.php:241 +msgid "Heading 5" +msgstr "Título 5" + +#: wp-includes/js/tinymce/langs/wp-langs.php:249 +#: wp-includes/js/tinymce/wp-mce-help.php:242 +msgid "Heading 6" +msgstr "Título 6" + +#: wp-includes/js/tinymce/langs/wp-langs.php:250 +#: wp-includes/js/tinymce/langs/wp-langs.php:289 +msgid "Blockquote" +msgstr "Cita" + +#: wp-includes/js/tinymce/langs/wp-langs.php:251 +msgid "Code" +msgstr "Código" + +#: wp-includes/js/tinymce/langs/wp-langs.php:252 +msgid "Code sample" +msgstr "Código de ejemplo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:253 +msgid "Definition term " +msgstr "Definición del término" + +#: wp-includes/js/tinymce/langs/wp-langs.php:254 +msgid "Definition description" +msgstr "Definición de descripción" + +#: wp-includes/js/tinymce/langs/wp-langs.php:255 +#: wp-includes/js/tinymce/wp-mce-help.php:238 +#: wp-includes/js/tinymce/wp-mce-help.php:248 +msgid "Bold" +msgstr "Negrita" + +#: wp-includes/js/tinymce/langs/wp-langs.php:256 +#: wp-includes/js/tinymce/wp-mce-help.php:238 +#: wp-includes/js/tinymce/wp-mce-help.php:248 +msgid "Italic" +msgstr "Cursiva" + +#: wp-includes/js/tinymce/langs/wp-langs.php:257 +#: wp-includes/js/tinymce/wp-mce-help.php:239 +msgid "Underline" +msgstr "Subrayado" + +#: wp-includes/js/tinymce/langs/wp-langs.php:258 +#: wp-includes/js/tinymce/wp-mce-help.php:252 +msgid "Strikethrough" +msgstr "Tachado" + +#: wp-includes/js/tinymce/langs/wp-langs.php:259 +#: wp-includes/js/tinymce/wp-mce-help.php:250 +msgid "Align Left" +msgstr "Alinear a la izquierda" + +#: wp-includes/js/tinymce/langs/wp-langs.php:260 +#: wp-includes/js/tinymce/wp-mce-help.php:251 +msgid "Align Center" +msgstr "Alinear al centro" + +#: wp-includes/js/tinymce/langs/wp-langs.php:261 +#: wp-includes/js/tinymce/wp-mce-help.php:252 +msgid "Align Right" +msgstr "Alinear a la derecha" + +#: wp-includes/js/tinymce/langs/wp-langs.php:262 +msgid "Align Full" +msgstr "Alineación completa" + +#: wp-includes/js/tinymce/langs/wp-langs.php:263 +msgid "Unordered list" +msgstr "Lista desordenada" + +#: wp-includes/js/tinymce/langs/wp-langs.php:264 +msgid "Ordered list" +msgstr "Lista ordenada" + +#: wp-includes/js/tinymce/langs/wp-langs.php:265 +msgid "Outdent" +msgstr "Disminuir margen" + +#: wp-includes/js/tinymce/langs/wp-langs.php:266 +msgid "Indent" +msgstr "Aumentar margen" + +#: wp-includes/js/tinymce/langs/wp-langs.php:270 +msgid "Unlink" +msgstr "Quitar enlace" + +#: wp-includes/js/tinymce/langs/wp-langs.php:272 +msgid "Cleanup messy code" +msgstr "Limpiar el código desordenado" + +#: wp-includes/js/tinymce/langs/wp-langs.php:273 +msgid "Edit HTML Source" +msgstr "Editar HTML" + +#: wp-includes/js/tinymce/langs/wp-langs.php:274 +msgid "Subscript" +msgstr "Subíndice" + +#: wp-includes/js/tinymce/langs/wp-langs.php:275 +msgid "Superscript" +msgstr "Superíndice" + +#: wp-includes/js/tinymce/langs/wp-langs.php:276 +msgid "Insert horizontal ruler" +msgstr "Insertar línea horizontal" + +#: wp-includes/js/tinymce/langs/wp-langs.php:277 +msgid "Remove formatting" +msgstr "Eliminar formato" + +#: wp-includes/js/tinymce/langs/wp-langs.php:278 +msgid "Select text color" +msgstr "Elegir color de texto" + +#: wp-includes/js/tinymce/langs/wp-langs.php:279 +msgid "Select background color" +msgstr "Elegir color de fondo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:280 +msgid "Insert custom character" +msgstr "Insertar carácter especial" + +#: wp-includes/js/tinymce/langs/wp-langs.php:281 +msgid "Toggle guidelines/invisible elements" +msgstr "Mostrar/Ocultar guías y otros elementos" + +#: wp-includes/js/tinymce/langs/wp-langs.php:282 +#: wp-includes/js/tinymce/langs/wp-langs.php:311 +msgid "Insert/edit anchor" +msgstr "Insertar/Editar anclaje" + +#: wp-includes/js/tinymce/langs/wp-langs.php:283 +#: wp-includes/js/tinymce/wp-mce-help.php:235 +msgid "Cut" +msgstr "Cortar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:284 +#: wp-includes/js/tinymce/wp-mce-help.php:234 +msgid "Copy" +msgstr "Copiar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:285 +#: wp-includes/js/tinymce/wp-mce-help.php:234 +msgid "Paste" +msgstr "Pegar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:286 +msgid "Image properties" +msgstr "Propiedades de la imagen" + +#: wp-includes/js/tinymce/langs/wp-langs.php:287 +msgid "New document" +msgstr "Nuevo documento" + +#: wp-includes/js/tinymce/langs/wp-langs.php:292 +msgid "Are you sure you want to clear all contents?" +msgstr "¿Seguro que quieres borrar todo el contenido?" + +#: wp-includes/js/tinymce/langs/wp-langs.php:293 +msgid "Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X" +msgstr "Ir a la herramienta de los botones - Alt + Q, Ir al editor - Alt-Z, Ir al elemento de la ruta - Alt-X" + +#: wp-includes/js/tinymce/langs/wp-langs.php:302 +#: wp-includes/js/tinymce/wp-mce-help.php:268 +msgid "About TinyMCE" +msgstr "Acerca de TinyMCE" + +#: wp-includes/js/tinymce/langs/wp-langs.php:305 +msgid "License" +msgstr "Licencia" + +#: wp-includes/js/tinymce/langs/wp-langs.php:310 +msgid "Loaded plugins" +msgstr "Plugins cargados" + +#: wp-includes/js/tinymce/langs/wp-langs.php:312 +msgid "Anchor name" +msgstr "Nombre del ancla" + +#: wp-includes/js/tinymce/langs/wp-langs.php:313 +msgid "HTML Source Editor" +msgstr "Editor HTML" + +#: wp-includes/js/tinymce/langs/wp-langs.php:314 +msgid "Word wrap" +msgstr "Ajuste de palabras" + +#: wp-includes/js/tinymce/langs/wp-langs.php:315 +msgid "Select a color" +msgstr "Elige un color" + +#: wp-includes/js/tinymce/langs/wp-langs.php:316 +msgid "Picker" +msgstr "Selector" + +#: wp-includes/js/tinymce/langs/wp-langs.php:317 +msgid "Color picker" +msgstr "Selector de color" + +#: wp-includes/js/tinymce/langs/wp-langs.php:318 +msgid "Palette" +msgstr "Paleta" + +#: wp-includes/js/tinymce/langs/wp-langs.php:319 +msgid "Palette colors" +msgstr "Paleta de colores" + +#: wp-includes/js/tinymce/langs/wp-langs.php:320 +msgid "Named" +msgstr "Nombrado" + +#: wp-includes/js/tinymce/langs/wp-langs.php:321 +msgid "Named colors" +msgstr "Nombre de los colores" + +#: wp-includes/js/tinymce/langs/wp-langs.php:322 +msgid "Color:" +msgstr "Color:" + +#: wp-includes/js/tinymce/langs/wp-langs.php:324 +msgid "Select custom character" +msgstr "Elegir un carácter especial" + +#: wp-includes/js/tinymce/langs/wp-langs.php:327 +msgid "Image description" +msgstr "Descripción de la imagen" + +#: wp-includes/js/tinymce/langs/wp-langs.php:328 +msgid "Image list" +msgstr "Lista de imágenes" + +#: wp-includes/js/tinymce/langs/wp-langs.php:329 +msgid "Border" +msgstr "Borde" + +#: wp-includes/js/tinymce/langs/wp-langs.php:330 +#: wp-includes/js/tinymce/langs/wp-langs.php:361 +msgid "Dimensions" +msgstr "Dimensiones" + +#: wp-includes/js/tinymce/langs/wp-langs.php:331 +msgid "Vertical space" +msgstr "Espacio vertical" + +#: wp-includes/js/tinymce/langs/wp-langs.php:332 +msgid "Horizontal space" +msgstr "Espacio horizontal" + +#: wp-includes/js/tinymce/langs/wp-langs.php:334 +msgid "Baseline" +msgstr "Linea base" + +#: wp-includes/js/tinymce/langs/wp-langs.php:335 +#: wp-includes/js/tinymce/langs/wp-langs.php:436 +msgid "Top" +msgstr "Arriba" + +#: wp-includes/js/tinymce/langs/wp-langs.php:336 +msgid "Middle" +msgstr "Intermedio" + +#: wp-includes/js/tinymce/langs/wp-langs.php:337 +#: wp-includes/js/tinymce/langs/wp-langs.php:438 +msgid "Bottom" +msgstr "Abajo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:338 +msgid "Text top" +msgstr "Texto superior" + +#: wp-includes/js/tinymce/langs/wp-langs.php:339 +msgid "Text bottom" +msgstr "Texto inferior" + +#: wp-includes/js/tinymce/langs/wp-langs.php:345 +msgid "Open link in the same window" +msgstr "Abrir el enlace en la misma ventana" + +#: wp-includes/js/tinymce/langs/wp-langs.php:346 +msgid "Open link in a new window" +msgstr "Abrir el enlace en una nueva ventana" + +#: wp-includes/js/tinymce/langs/wp-langs.php:348 +msgid "The URL you entered seems to be an email address, do you want to add the required mailto: prefix?" +msgstr "La URL que has introducido parece ser un correo electrónico, ¿quieres añadir el prefijo mailto:?" + +#: wp-includes/js/tinymce/langs/wp-langs.php:349 +msgid "The URL you entered seems to external link, do you want to add the required http:// prefix?" +msgstr "La URL especificada parece ser un enlace externo, ¿quieres añadir el prefijo http://?" + +#: wp-includes/js/tinymce/langs/wp-langs.php:350 +msgid "Link list" +msgstr "Lista de enlaces" + +#: wp-includes/js/tinymce/langs/wp-langs.php:357 +msgid "General" +msgstr "Generales" + +#: wp-includes/js/tinymce/langs/wp-langs.php:359 +msgid "File/URL" +msgstr "Archivo/URL" + +#: wp-includes/js/tinymce/langs/wp-langs.php:360 +#: wp-includes/js/tinymce/wp-mce-help.php:253 +#: wp-includes/js/tinymce/wp-mce-help.php:254 +msgid "List" +msgstr "Lista" + +#: wp-includes/js/tinymce/langs/wp-langs.php:363 +msgid "Constrain proportions" +msgstr "Mantener proporciones" + +#: wp-includes/js/tinymce/langs/wp-langs.php:364 +msgid "Type" +msgstr "Tipo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:365 +msgid "Id" +msgstr "Id" + +#: wp-includes/js/tinymce/langs/wp-langs.php:368 +msgid "V-Space" +msgstr "Espacio vertical" + +#: wp-includes/js/tinymce/langs/wp-langs.php:369 +msgid "H-Space" +msgstr "Espacio horizontal" + +#: wp-includes/js/tinymce/langs/wp-langs.php:370 +msgid "Auto play" +msgstr "Reproducción automática" + +#: wp-includes/js/tinymce/langs/wp-langs.php:371 +#: wp-includes/js/tinymce/langs/wp-langs.php:453 +msgid "Loop" +msgstr "Repetir" + +#: wp-includes/js/tinymce/langs/wp-langs.php:372 +msgid "Show menu" +msgstr "Mostrar menú" + +#: wp-includes/js/tinymce/langs/wp-langs.php:373 +msgid "Quality" +msgstr "Calidad" + +#: wp-includes/js/tinymce/langs/wp-langs.php:375 +msgid "Align" +msgstr "Alineación" + +#: wp-includes/js/tinymce/langs/wp-langs.php:376 +msgid "SAlign" +msgstr "SAlign" + +#: wp-includes/js/tinymce/langs/wp-langs.php:377 +msgid "WMode" +msgstr "Modo de ventana" + +#: wp-includes/admin-bar.php:314 wp-includes/js/tinymce/langs/wp-langs.php:378 +#: wp-admin/custom-background.php:67 +msgid "Background" +msgstr "Fondo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:379 +msgid "Base" +msgstr "Base" + +#: wp-includes/js/tinymce/langs/wp-langs.php:380 +msgid "Flashvars" +msgstr "Flashvars" + +#: wp-includes/js/tinymce/langs/wp-langs.php:381 +msgid "SWLiveConnect" +msgstr "SWLiveConnect" + +#: wp-includes/js/tinymce/langs/wp-langs.php:382 +msgid "AutoHREF" +msgstr "AutoHREF" + +#: wp-includes/js/tinymce/langs/wp-langs.php:383 +msgid "Cache" +msgstr "Caché" + +#: wp-includes/js/tinymce/langs/wp-langs.php:384 +msgid "Hidden" +msgstr "Oculto" + +#: wp-includes/js/tinymce/langs/wp-langs.php:385 +msgid "Controller" +msgstr "Controlador" + +#: wp-includes/js/tinymce/langs/wp-langs.php:386 +msgid "Kiosk mode" +msgstr "Modo quiosco" + +#: wp-includes/js/tinymce/langs/wp-langs.php:387 +msgid "Play every frame" +msgstr "Reproducir todos los cuadros" + +#: wp-includes/js/tinymce/langs/wp-langs.php:388 +msgid "Target cache" +msgstr "Caché destino" + +#: wp-includes/js/tinymce/langs/wp-langs.php:389 +msgid "No correction" +msgstr "Sin corrección" + +#: wp-includes/js/tinymce/langs/wp-langs.php:390 +msgid "Enable JavaScript" +msgstr "Activar JavaScript" + +#: wp-includes/js/tinymce/langs/wp-langs.php:391 +#: wp-includes/js/tinymce/langs/wp-langs.php:449 +msgid "Start time" +msgstr "Hora de inicio" + +#: wp-includes/js/tinymce/langs/wp-langs.php:392 +msgid "End time" +msgstr "Hora de finalización" + +#: wp-includes/js/tinymce/langs/wp-langs.php:393 +msgid "href" +msgstr "href" + +#: wp-includes/js/tinymce/langs/wp-langs.php:394 +msgid "Choke speed" +msgstr "Velocidad de obstrucción" + +#: wp-includes/js/tinymce/langs/wp-langs.php:396 +msgid "Volume" +msgstr "Volumen" + +#: wp-includes/js/tinymce/langs/wp-langs.php:397 +#: wp-includes/js/tinymce/langs/wp-langs.php:452 +msgid "Auto start" +msgstr "Inicio automático" + +#: wp-includes/js/tinymce/langs/wp-langs.php:399 +msgid "Fullscreen" +msgstr "Pantalla completa" + +#: wp-includes/js/tinymce/langs/wp-langs.php:400 +msgid "Invoke URLs" +msgstr "Invocar URLs" + +#: wp-includes/js/tinymce/langs/wp-langs.php:401 +msgid "Mute" +msgstr "Silenciar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:402 +msgid "Stretch to fit" +msgstr "Estrechar para ajustar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:403 +msgid "Windowless video" +msgstr "Vídeo sin ventana" + +#: wp-includes/js/tinymce/langs/wp-langs.php:404 +msgid "Balance" +msgstr "Balance" + +#: wp-includes/js/tinymce/langs/wp-langs.php:405 +msgid "Base URL" +msgstr "URL base" + +#: wp-includes/js/tinymce/langs/wp-langs.php:406 +msgid "Captioning id" +msgstr "ID de captura" + +#: wp-includes/js/tinymce/langs/wp-langs.php:407 +msgid "Current marker" +msgstr "Marcador actual" + +#: wp-includes/js/tinymce/langs/wp-langs.php:408 +msgid "Current position" +msgstr "Posición actual" + +#: wp-includes/js/tinymce/langs/wp-langs.php:409 +msgid "Default frame" +msgstr "Marco por defecto" + +#: wp-includes/js/tinymce/langs/wp-langs.php:410 +msgid "Play count" +msgstr "Contador de reproducción" + +#: wp-includes/js/tinymce/langs/wp-langs.php:411 +msgid "Rate" +msgstr "Puntuar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:412 +msgid "UI Mode" +msgstr "Modo UI" + +#: wp-includes/js/tinymce/langs/wp-langs.php:413 +msgid "Flash options" +msgstr "Opciones del Flash" + +#: wp-includes/js/tinymce/langs/wp-langs.php:414 +msgid "Quicktime options" +msgstr "Opciones de Quicktime" + +#: wp-includes/js/tinymce/langs/wp-langs.php:415 +msgid "Windows media player options" +msgstr "Opciones de Windows Media Player" + +#: wp-includes/js/tinymce/langs/wp-langs.php:416 +msgid "Real media player options" +msgstr "Opciones de Real Media Player" + +#: wp-includes/js/tinymce/langs/wp-langs.php:417 +msgid "Shockwave options" +msgstr "Opciones de Shockwave" + +#: wp-includes/js/tinymce/langs/wp-langs.php:418 +msgid "Auto goto URL" +msgstr "Ir automáticamente a la URL" + +#: wp-includes/js/tinymce/langs/wp-langs.php:420 +msgid "Image status" +msgstr "Estado de la Imagen" + +#: wp-includes/js/tinymce/langs/wp-langs.php:421 +msgid "Maintain aspect" +msgstr "Mantener aspecto" + +#: wp-includes/js/tinymce/langs/wp-langs.php:422 +msgid "No java" +msgstr "Sin java" + +#: wp-includes/js/tinymce/langs/wp-langs.php:423 +msgid "Prefetch" +msgstr "Prelectura" + +#: wp-includes/js/tinymce/langs/wp-langs.php:424 +msgid "Shuffle" +msgstr "Aleatorio" + +#: wp-includes/js/tinymce/langs/wp-langs.php:425 +msgid "Console" +msgstr "Consola" + +#: wp-includes/js/tinymce/langs/wp-langs.php:426 +msgid "Num loops" +msgstr "Bucles numéricos" + +#: wp-includes/js/tinymce/langs/wp-langs.php:427 +msgid "Controls" +msgstr "Controles" + +#: wp-includes/js/tinymce/langs/wp-langs.php:428 +msgid "Script callbacks" +msgstr "Llamadas de Script" + +#: wp-includes/js/tinymce/langs/wp-langs.php:429 +msgid "Stretch style" +msgstr "Estilo estirado" + +#: wp-includes/js/tinymce/langs/wp-langs.php:430 +msgid "Stretch H-Align" +msgstr "Estirar alineación horizontal" + +#: wp-includes/js/tinymce/langs/wp-langs.php:431 +msgid "Stretch V-Align" +msgstr "Estirar alineación vertical" + +#: wp-includes/js/tinymce/langs/wp-langs.php:432 +msgid "Sound" +msgstr "Sonido" + +#: wp-includes/js/tinymce/langs/wp-langs.php:433 +msgid "Progress" +msgstr "Progreso" + +#: wp-includes/js/tinymce/langs/wp-langs.php:434 +msgid "QT Src" +msgstr "Origen de QT" + +#: wp-includes/js/tinymce/langs/wp-langs.php:435 +msgid "Streamed rtsp resources should be added to the QT Src field under the advanced tab." +msgstr "Los recursos Rtsp deben añadirse en el campo Origen de QT en la pestaña de Ajustes avanzados." + +#: wp-includes/js/tinymce/langs/wp-langs.php:441 +msgid "Top left" +msgstr "Arriba izq." + +#: wp-includes/js/tinymce/langs/wp-langs.php:442 +msgid "Top right" +msgstr "Arriba dcha." + +#: wp-includes/js/tinymce/langs/wp-langs.php:443 +msgid "Bottom left" +msgstr "Abajo izq." + +#: wp-includes/js/tinymce/langs/wp-langs.php:444 +msgid "Bottom right" +msgstr "Abajo dcha." + +#: wp-includes/js/tinymce/langs/wp-langs.php:445 +msgid "Flash video options" +msgstr "Opciones del video Flash" + +#: wp-includes/js/tinymce/langs/wp-langs.php:446 +msgid "Scale mode" +msgstr "Modo de escala" + +#: wp-includes/js/tinymce/langs/wp-langs.php:447 +msgid "Buffer" +msgstr "Buffer" + +#: wp-includes/js/tinymce/langs/wp-langs.php:448 +msgid "Start image" +msgstr "Imagen de inicio" + +#: wp-includes/js/tinymce/langs/wp-langs.php:450 +msgid "Default volume" +msgstr "Volumen predeterminado" + +#: wp-includes/js/tinymce/langs/wp-langs.php:451 +msgid "Hidden GUI" +msgstr "Ocultar GUI" + +#: wp-includes/js/tinymce/langs/wp-langs.php:454 +msgid "Show scale modes" +msgstr "Mostrar modos de escala" + +#: wp-includes/js/tinymce/langs/wp-langs.php:455 +msgid "Smooth video" +msgstr "Suavizar vídeo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:456 +msgid "JS Callback" +msgstr "Llamada JS" + +#: wp-includes/js/tinymce/langs/wp-langs.php:466 +msgid "Show/Hide Kitchen Sink" +msgstr "Ver/Ocultar botones adicionales" + +#: wp-includes/js/tinymce/langs/wp-langs.php:467 +#: wp-includes/js/tinymce/wp-mce-help.php:256 +msgid "Insert More Tag" +msgstr "Insertar etiqueta Más" + +#: wp-includes/js/tinymce/langs/wp-langs.php:468 +msgid "Insert Page break" +msgstr "Insertar salto de página" + +#: wp-includes/js/tinymce/langs/wp-langs.php:470 +msgid "More..." +msgstr "Más..." + +#: wp-includes/js/tinymce/langs/wp-langs.php:471 +msgid "Next page..." +msgstr "Siguiente página..." + +#: wp-includes/js/tinymce/langs/wp-langs.php:476 +msgid "Edit Gallery" +msgstr "Editar galería" + +#: wp-includes/js/tinymce/langs/wp-langs.php:477 +msgid "Delete Gallery" +msgstr "Eliminar galería" + +#: wp-includes/js/tinymce/langs/wp-langs.php:482 +msgid "Delete Image" +msgstr "Eliminar imagen" + +#: wp-includes/js/tinymce/langs/wp-langs.php:483 +msgid "Advanced Settings" +msgstr "Ajustes avanzados" + +#: wp-includes/js/tinymce/langs/wp-langs.php:489 +msgid "Current Link" +msgstr "Enlace actual" + +#: wp-includes/js/tinymce/langs/wp-langs.php:490 +msgid "Link to Image" +msgstr "Enlazar a imagen" + +#: wp-includes/js/tinymce/langs/wp-langs.php:492 +msgid "Advanced Image Settings" +msgstr "Ajustes avanzados de imágenes" + +#: wp-includes/js/tinymce/langs/wp-langs.php:462 +#: wp-includes/js/tinymce/langs/wp-langs.php:493 +msgid "Source" +msgstr "Fuente" + +#: wp-includes/js/tinymce/langs/wp-langs.php:496 +#: wp-includes/js/tinymce/langs/wp-langs.php:501 +msgid "Original Size" +msgstr "Tamaño original" + +#: wp-includes/js/tinymce/langs/wp-langs.php:497 +#: wp-includes/js/tinymce/langs/wp-langs.php:502 +msgid "CSS Class" +msgstr "Clase CSS" + +#: wp-includes/js/tinymce/langs/wp-langs.php:498 +msgid "Advanced Link Settings" +msgstr "Ajustes avanzados de enlaces" + +#: wp-includes/js/tinymce/langs/wp-langs.php:499 +msgid "Link Rel" +msgstr "Relación del enlace" + +#: wp-includes/js/tinymce/langs/wp-langs.php:503 +msgid "60%" +msgstr "60%" + +#: wp-includes/js/tinymce/langs/wp-langs.php:504 +msgid "70%" +msgstr "70%" + +#: wp-includes/js/tinymce/langs/wp-langs.php:505 +msgid "80%" +msgstr "80%" + +#: wp-includes/js/tinymce/langs/wp-langs.php:506 +msgid "90%" +msgstr "90%" + +#: wp-includes/js/tinymce/langs/wp-langs.php:507 +msgid "100%" +msgstr "100%" + +#: wp-includes/js/tinymce/langs/wp-langs.php:508 +msgid "110%" +msgstr "110%" + +#: wp-includes/js/tinymce/langs/wp-langs.php:509 +msgid "120%" +msgstr "120%" + +#: wp-includes/js/tinymce/langs/wp-langs.php:510 +msgid "130%" +msgstr "130%" + +#: wp-includes/js/tinymce/wp-mce-help.php:16 +msgid "Rich Editor Help" +msgstr "Ayuda del editor visual" + +#: wp-includes/js/tinymce/wp-mce-help.php:200 +msgid "Basics of Rich Editing" +msgstr "Uso básico del editor visual" + +#: wp-includes/js/tinymce/wp-mce-help.php:200 +msgid "Basics" +msgstr "Básico" + +#: wp-includes/js/tinymce/wp-mce-help.php:201 +msgid "Advanced use of the Rich Editor" +msgstr "Uso avanzado del Editor visual" + +#: wp-includes/js/tinymce/wp-mce-help.php:202 +msgid "Hotkeys" +msgstr "Atajos de teclado" + +#: wp-includes/js/tinymce/wp-mce-help.php:203 +msgid "About the software" +msgstr "Acerca del programa" + +#: wp-includes/js/tinymce/wp-mce-help.php:209 +msgid "Rich Editing Basics" +msgstr "Edición visual básica" + +#: wp-includes/js/tinymce/wp-mce-help.php:210 +msgid "Rich editing, also called WYSIWYG for What You See Is What You Get, means your text is formatted as you type. The rich editor creates HTML code behind the scenes while you concentrate on writing. Font styles, links and images all appear approximately as they will on the internet." +msgstr "La edición visual, también llamada WYSIWYG por What You See Is What You Get (en inglés, Lo Que Ves Es Lo Que Obtendrás), consiste en dar formato al texto a medida que lo escribes. El editor visual va creando el código HTML tras las bambalinas mientras tú te centras en escribir. Tipos de letra, enlaces e imágenes se ven tal y como aparecerán en Internet." + +#: wp-includes/js/tinymce/wp-mce-help.php:211 +msgid "WordPress includes a rich HTML editor that works well in all major web browsers used today. However editing HTML is not the same as typing text. Each web page has two major components: the structure, which is the actual HTML code and is produced by the editor as you type, and the display, that is applied to it by the currently selected WordPress theme and is defined in style.css. WordPress is producing valid XHTML 1.0 which means that inserting multiple line breaks (BR tags) after a paragraph would not produce white space on the web page. The BR tags will be removed as invalid by the internal HTML correcting functions." +msgstr "WordPress incluye un editor HTML que suele funcionar bien en los principales navegadores utilizados en la actualidad. Sin embargo, la edición de HTML no es tan fiable como escribir texto. Cada página Web tiene dos componentes principales: la estructura, que es el actual código HTML y es producido por el editor a partir de los que estás escribiendo, y el diseño, que se aplica a ella por el tema seleccionado WordPress y se define en el style.css. Además WordPress válida XHTML 1.0, lo que significa que no se puede mostrar el control de los elementos estructurales. Por lo tanto, la inserción de varios saltos de línea (BR etiquetas) después de un párrafo no da lugar a espacios en blanco en la página web final. La etiquetas BR serán eliminadas como incorrectas por las funciones de corrección." + +#: wp-includes/js/tinymce/wp-mce-help.php:212 +msgid "While using the editor, most basic keyboard shortcuts work like in any other text editor. For example: Shift+Enter inserts line break, Ctrl+C = copy, Ctrl+X = cut, Ctrl+Z = undo, Ctrl+Y = redo, Ctrl+A = select all, etc. (on Mac use the Command key instead of Ctrl). See the Hotkeys tab for all available keyboard shortcuts." +msgstr "Si sueles usar el editor, la mayoría de las combinaciones de teclas básicas funcionan como en cualquier otro editor de texto. Por ejemplo: Shift + Enter inserta un salto de línea, Ctrl + C = copiar, Ctrl + X = cortar, Ctrl + Z = deshacer, Ctrl + Y = rehacer, Ctrl + A = seleccionar todo, etc (en Mac usar la tecla Comando en lugar de Ctrl). Puedes ver la lista de teclas rápidas para todos los atajos de teclado." + +#: wp-includes/js/tinymce/wp-mce-help.php:213 +msgid "If you do not like the way the rich editor works, you may turn it off from Your Profile submenu, under Users in the admin menu." +msgstr "Si no te gusta la forma en que trabaja el editor visual, podrás desactivarlo desde el submenu de tu perfil, en el menú usuario en la administración." + +#: wp-includes/js/tinymce/wp-mce-help.php:217 +msgid "Advanced Rich Editing" +msgstr "Edición visual avanzada" + +#: wp-includes/js/tinymce/wp-mce-help.php:218 +msgid "Images and Attachments" +msgstr "Imágenes y archivos" + +#: wp-includes/js/tinymce/wp-mce-help.php:219 +msgid "There is a button in the editor toolbar for inserting images that are already hosted somewhere on the internet. If you have a URL for an image, click this button and enter the URL in the box which appears." +msgstr "En la barra de herramientas del editor hay un botón para insertar imágenes hospedadas en cualquier sitio de Internet. Si tienes el URL de una imagen, haz clic en ese botón y escríbelo en la ventana que aparecerá." + +#: wp-includes/js/tinymce/wp-mce-help.php:220 +msgid "If you need to upload an image or another media file from your computer, you can use the Media Library buttons above the editor. The media library will attempt to create a thumbnail-sized copy from each uploaded image. To insert your image into the post, first click on the thumbnail to reveal a menu of options. When you have selected the options you like, click \"Send to Editor\" and your image or file will appear in the post you are editing. If you are inserting a movie, there are additional options in the \"Media\" dialog that can be opened from the second toolbar row." +msgstr "Si necesitas subir una imagen o cualquier archivo multimedia de tu ordenador, puedes utilizar los botones de la Librería Multimedia sobre el editor. Esta herramienta tratará de crear una miniatura de la imagen cuando la subas. Para insertar la imagen en la entrada, primero haz clic en la miniatura y aparecerá un menú de opciones. Para insertar la imagen en el editor, primero haz clic en la miniatura y se mostrará un menú de opciones. Selecciona \"Enviar al editor\" y tu imagen o archivo aparecerá en la entrada que estás editando. Si estás insertando un video, aparecen opciones adicionales en el menú a las que se puede acceder desde la segunda fila de botones de la barra de tareas." + +#: wp-includes/js/tinymce/wp-mce-help.php:221 +msgid "HTML in the Rich Editor" +msgstr "HTML en el editor visual" + +#: wp-includes/js/tinymce/wp-mce-help.php:222 +msgid "Any HTML entered directly into the rich editor will show up as text when the post is viewed. What you see is what you get. When you want to include HTML elements that cannot be generated with the toolbar buttons, you must enter it by hand in the HTML editor. Examples are tables and <code>. To do this, click the HTML tab and edit the code, then switch back to Visual mode. If the code is valid and understood by the editor, you should see it rendered immediately." +msgstr "Cualquier etiqueta HTML que escribas en el editor se mostrará como texto al visualizar la entrada. Lo que ves es lo que obtendrás. Si quieres incluir elementos HTML distintos de los generados por los botones de la barra de herramientas, como tablas o <code>, deberás hacerlo a mano en el editor HTML. Para ello, haz clic en el botón HTML, edita el código y haz clic en Actualizar. Si el código es válido y el editor lo entiende, lo verás procesado inmediatamente." + +#: wp-includes/js/tinymce/wp-mce-help.php:223 +msgid "Pasting in the Rich Editor" +msgstr "Pegando en el editor visual" + +#: wp-includes/js/tinymce/wp-mce-help.php:224 +msgid "When pasting content from another web page the results can be inconsistent and depend on your browser and on the web page you are pasting from. The editor tries to correct any invalid HTML code that was pasted, but for best results try using the HTML tab or one of the paste buttons that are on the second row. Alternatively try pasting paragraph by paragraph. In most browsers to select one paragraph at a time, triple-click on it." +msgstr "Cuando se pegan los contenidos de otra página web los resultados pueden ser incompatibles entre sí y dependen de tu navegador y de la página web desde donde estás pegando. El editor intenta corregir cualquier código HTML no válido que se pega, pero para obtener los mejores resultados, prueba a utilizar la pestaña HTML o pegar con uno de los botones que se encuentran en la segunda fila. Alternativamente intenta pegar párrafo por párrafo. En la mayoría de los navegadores, para seleccionar un párrafo a la vez, haz triple clic sobre él." + +#: wp-includes/js/tinymce/wp-mce-help.php:225 +msgid "Pasting content from another application, like Word or Excel, is best done with the Paste from Word button on the second row, or in HTML mode." +msgstr "Al pegar contenido desde otra aplicación, como Word o Excel, se hace mejor con el botón de la segunda fila Pegar desde Word, o en modo HTML." + +#: wp-includes/js/tinymce/wp-mce-help.php:229 +msgid "Writing at Full Speed" +msgstr "Escribir a toda velocidad" + +#: wp-includes/js/tinymce/wp-mce-help.php:230 +msgid "Rather than reaching for your mouse to click on the toolbar, use these access keys. Windows and Linux use Ctrl + letter. Macintosh uses Command + letter." +msgstr "En lugar de mover el ratón para hacer clic en la barra de herramientas, usa estas teclas de acceso rápido. En Windows y Linux usa Ctrl+letra. En Macintosh usa Comando+letra." + +#: wp-includes/js/tinymce/wp-mce-help.php:233 +#: wp-includes/js/tinymce/wp-mce-help.php:247 +msgid "Letter" +msgstr "Letra" + +#: wp-includes/js/tinymce/wp-mce-help.php:233 +#: wp-includes/js/tinymce/wp-mce-help.php:247 +msgid "Action" +msgstr "Acción" + +#: wp-includes/js/tinymce/wp-mce-help.php:235 +msgid "Select all" +msgstr "Seleccionar todos" + +#: wp-includes/js/tinymce/wp-mce-help.php:245 +msgid "The following shortcuts use different access keys: Alt + Shift + letter." +msgstr "Los siguientes atajos utilizan claves de acceso diferentes: Alt + Shift + letra." + +#: wp-includes/js/tinymce/wp-mce-help.php:250 +msgid "Check Spelling" +msgstr "Comprobar ortografía" + +#: wp-includes/js/tinymce/wp-mce-help.php:251 +msgid "Justify Text" +msgstr "Justificar texto" + +#: wp-includes/js/tinymce/wp-mce-help.php:253 +msgid "Insert link" +msgstr "Insertar enlace" + +#: wp-includes/js/tinymce/wp-mce-help.php:254 +msgid "Remove link" +msgstr "Borrar enlace" + +#: wp-includes/js/tinymce/wp-mce-help.php:255 +msgid "Quote" +msgstr "Cita" + +#: wp-includes/js/tinymce/wp-mce-help.php:256 +msgid "Full Screen" +msgstr "Pantalla completa" + +#: wp-includes/js/tinymce/wp-mce-help.php:257 +msgid "Insert Page Break tag" +msgstr "Insertar etiqueta de salto de página" + +#: wp-includes/js/tinymce/wp-mce-help.php:258 +msgid "Switch to HTML mode" +msgstr "Cambiar a modo HTML" + +#: wp-includes/js/tinymce/wp-mce-help.php:271 +msgid "GNU Library General Public Licence" +msgstr "Licencia Pública General de Librería GNU (GPL)" + +#: wp-includes/js/tinymce/wp-mce-help.php:273 +msgid "For more information about this software visit the TinyMCE website." +msgstr "Para más información sobre este software, visita el sitio de TinyMCE." + +#: wp-includes/js/tinymce/wp-mce-help.php:276 +msgid "Got Moxie?" +msgstr "¿Tienes Moxie?" + +#: wp-includes/link-template.php:517 +msgid "Comments Feed" +msgstr "Feed de comentarios" + +#: wp-includes/link-template.php:1177 wp-includes/link-template.php:1455 +msgid "Previous Post" +msgstr "Entrada anterior" + +#: wp-includes/link-template.php:1177 wp-includes/link-template.php:1455 +msgid "Next Post" +msgstr "Entrada siguiente" + +#: wp-includes/link-template.php:1315 +msgid "Last Post" +msgstr "Última entrada" + +#: wp-includes/link-template.php:1803 +msgid "Newer Comments »" +msgstr "Últimos comentarios »" + +#: wp-includes/link-template.php:1840 +msgid "« Older Comments" +msgstr "« Comentarios más viejos" + +#: wp-includes/locale.php:118 +msgid "S_Sunday_initial" +msgstr "D" + +#: wp-includes/locale.php:119 +msgid "M_Monday_initial" +msgstr "L" + +#: wp-includes/locale.php:120 +msgid "T_Tuesday_initial" +msgstr "M" + +#: wp-includes/locale.php:121 +msgid "W_Wednesday_initial" +msgstr "X" + +#: wp-includes/locale.php:122 +msgid "T_Thursday_initial" +msgstr "J" + +#: wp-includes/locale.php:123 +msgid "F_Friday_initial" +msgstr "V" + +#: wp-includes/locale.php:124 +msgid "S_Saturday_initial" +msgstr "S" + +#: wp-includes/locale.php:173 +msgid "am" +msgstr "am" + +#: wp-includes/locale.php:174 +msgid "pm" +msgstr "pm" + +#: wp-includes/locale.php:175 +msgid "AM" +msgstr "AM" + +#: wp-includes/locale.php:176 +msgid "PM" +msgstr "PM" + +#: wp-includes/locale.php:182 +msgid "number_format_thousands_sep" +msgstr "." + +#: wp-includes/media.php:414 +msgid "Could not read image size" +msgstr "No se pudo leer el tamaño de imagen" + +#: wp-includes/media.php:448 wp-includes/media.php:451 +#: wp-includes/media.php:456 +msgid "Resize path invalid" +msgstr "Ruta de redimensionado no válida" + +#: wp-includes/pluggable.php:536 +msgid "ERROR: Invalid username or incorrect password." +msgstr "ERROR: El nombre de usuario y/o la contraseña no son correctos." + +#: wp-includes/pluggable.php:1074 wp-includes/pluggable.php:1187 +msgid "Author : %1$s (IP: %2$s , %3$s)" +msgstr "Autor : %1$s (IP: %2$s , %3$s)" + +#: wp-includes/pluggable.php:1075 wp-includes/pluggable.php:1188 +msgid "E-mail : %s" +msgstr "Correo electrónico : %s" + +#: wp-includes/pluggable.php:1076 wp-includes/pluggable.php:1086 +#: wp-includes/pluggable.php:1095 wp-includes/pluggable.php:1174 +#: wp-includes/pluggable.php:1181 wp-includes/pluggable.php:1189 +msgid "URL : %s" +msgstr "URL : %s" + +#: wp-includes/pluggable.php:1078 wp-includes/pluggable.php:1191 +msgid "Comment: " +msgstr "Comentario:" + +#: wp-includes/pluggable.php:1079 +msgid "You can see all comments on this post here: " +msgstr "Puedes ver todos los comentarios de esta entrada aquí:" + +#: wp-includes/pluggable.php:1081 +msgid "[%1$s] Comment: \"%2$s\"" +msgstr "[%1$s] Comentario: \"%2$s\"" + +#: wp-includes/pluggable.php:1085 wp-includes/pluggable.php:1094 +msgid "Website: %1$s (IP: %2$s , %3$s)" +msgstr "Sitio web: %1$s (IP: %2$s , %3$s)" + +#: wp-includes/pluggable.php:1087 wp-includes/pluggable.php:1096 +msgid "Excerpt: " +msgstr "Extracto:" + +#: wp-includes/pluggable.php:1088 +msgid "You can see all trackbacks on this post here: " +msgstr "Puedes ver todos los trackbacks de esta entrada aquí:" + +#: wp-includes/pluggable.php:1090 +msgid "[%1$s] Trackback: \"%2$s\"" +msgstr "[%1$s] Trackback: \"%2$s\"" + +#: wp-includes/pluggable.php:1097 +msgid "You can see all pingbacks on this post here: " +msgstr "Puede ver todos los pingback de esta entrada aquí:" + +#: wp-includes/pluggable.php:1099 +msgid "[%1$s] Pingback: \"%2$s\"" +msgstr "[%1$s] Pingback: \"%2$s\"" + +#: wp-includes/pluggable.php:1104 wp-includes/pluggable.php:1197 +msgid "Trash it: %s" +msgstr "Enviar a la papelera: %s" + +#: wp-includes/pluggable.php:1106 wp-includes/pluggable.php:1199 +msgid "Delete it: %s" +msgstr "Borrarlo: %s" + +#: wp-includes/pluggable.php:1107 wp-includes/pluggable.php:1200 +msgid "Spam it: %s" +msgstr "Marcarlo como spam: %s" + +#: wp-includes/pluggable.php:1173 wp-includes/pluggable.php:1180 +msgid "Website : %1$s (IP: %2$s , %3$s)" +msgstr "Sitio web : %1$s (IP: %2$s , %3$s)" + +#: wp-includes/pluggable.php:1175 +msgid "Trackback excerpt: " +msgstr "Extracto del trackback:" + +#: wp-includes/pluggable.php:1182 +msgid "Pingback excerpt: " +msgstr "Extracto del pingback:" + +#: wp-includes/pluggable.php:1195 +msgid "Approve it: %s" +msgstr "Aprobarlo: %s" + +#: wp-includes/pluggable.php:1202 +msgid "Currently %s comment is waiting for approval. Please visit the moderation panel:" +msgid_plural "Currently %s comments are waiting for approval. Please visit the moderation panel:" +msgstr[0] "Actualmente hay %s comentario en espera de aprobación. Por favor visita el panel de moderación:" +msgstr[1] "Actualmente hay %s comentarios en espera de aprobación. Por favor visita el panel de moderación:" + +#: wp-includes/pluggable.php:1206 +msgid "[%1$s] Please moderate: \"%2$s\"" +msgstr "[%1$s] Pendientes de moderación: \"%2$s\"" + +#: wp-includes/pluggable.php:1232 +msgid "Password Lost and Changed for user: %s" +msgstr "Contraseña perdida y cambiada para el usuario: %s" + +#: wp-includes/pluggable.php:1236 +msgid "[%s] Password Lost/Changed" +msgstr "[%s] Contraseña Perdida/Cambiada" + +#: wp-includes/pluggable.php:1261 wp-includes/pluggable.php:1269 +#: wp-login.php:216 +msgid "Username: %s" +msgstr "Nombre de usuario: %s" + +#: wp-includes/pluggable.php:1264 +msgid "[%s] New User Registration" +msgstr "[%s] Registro de nuevo usuario" + +#: wp-includes/pluggable.php:1270 +msgid "Password: %s" +msgstr "Contraseña: %s" + +#: wp-includes/pluggable.php:1273 +msgid "[%s] Your username and password" +msgstr "[%s] Tu nombre de usuario y contraseña" + +#: wp-includes/post-template.php:112 +msgid "Protected: %s" +msgstr "Protegido: %s" + +#: wp-includes/post-template.php:115 +msgid "Private: %s" +msgstr "Privado: %s" + +#: wp-includes/post-template.php:268 +msgid "There is no excerpt because this is a protected post." +msgstr "No hay extracto porque es una entrada protegida." + +#: wp-includes/post-template.php:627 +msgid "Next page" +msgstr "Página siguiente" + +#: wp-includes/post-template.php:628 +msgid "Previous page" +msgstr "Página anterior" + +#: wp-includes/post-template.php:890 wp-admin/menu.php:27 +msgid "Home" +msgstr "Inicio" + +#: wp-includes/post-template.php:1215 +msgid "This post is password protected. To view it please enter your password below:" +msgstr "Esta entrada está protegida. Para verla escribe la contraseña:" + +#: wp-includes/post-template.php:1279 +msgctxt "revision date format" +msgid "j F, Y @ G:i" +msgstr "j F, Y @ G:i" + +#: wp-includes/post-template.php:1281 +msgid "%1$s [Autosave]" +msgstr "%s [Autoguardado]" + +#: wp-includes/post-template.php:1283 +msgid "%1$s [Current Revision]" +msgstr "%s [Revisión Actual]" + +#: wp-includes/post-template.php:1349 +msgctxt "post revision" +msgid "%1$s by %2$s" +msgstr "%1$s por %2$s" + +#: wp-includes/post-template.php:1399 +msgid "Compare Revisions" +msgstr "Comparar revisiones" + +#: wp-includes/post.php:71 +msgid "Revision" +msgstr "Revisión" + +#: wp-includes/post.php:97 +msgctxt "post" +msgid "Published" +msgstr "Publicada" + +#: wp-includes/post.php:100 +msgid "Published (%s)" +msgid_plural "Published (%s)" +msgstr[0] "Publicada (%s)" +msgstr[1] "Publicadas (%s)" + +#: wp-includes/post.php:104 +msgctxt "post" +msgid "Scheduled" +msgstr "Programada" + +#: wp-includes/post.php:107 +msgid "Scheduled (%s)" +msgid_plural "Scheduled (%s)" +msgstr[0] "Programada (%s)" +msgstr[1] "Programadas (%s)" + +#: wp-includes/post.php:111 +msgctxt "post" +msgid "Draft" +msgstr "Borrador" + +#: wp-includes/post.php:114 +msgid "Draft (%s)" +msgid_plural "Drafts (%s)" +msgstr[0] "Borrador (%s)" +msgstr[1] "Borradores (%s)" + +#: wp-includes/post.php:118 +msgctxt "post" +msgid "Pending" +msgstr "Pendiente" + +#: wp-includes/post.php:121 +msgid "Pending (%s)" +msgid_plural "Pending (%s)" +msgstr[0] "Pendiente (%s)" +msgstr[1] "Pendientes (%s)" + +#: wp-includes/post.php:125 +msgctxt "post" +msgid "Private" +msgstr "Privada" + +#: wp-includes/post.php:128 +msgid "Private (%s)" +msgid_plural "Private (%s)" +msgstr[0] "Privada (%s)" +msgstr[1] "Privadas (%s)" + +#: wp-includes/post.php:132 +msgctxt "post" +msgid "Trash" +msgstr "Papelera" + +#: wp-includes/post.php:135 +msgid "Trash (%s)" +msgid_plural "Trash (%s)" +msgstr[0] "Papelera (%s)" +msgstr[1] "Papelera (%s)" + +#: wp-includes/post.php:2452 +msgid "Content, title, and excerpt are empty." +msgstr "Contenido, título y extracto están vacios." + +#: wp-includes/post.php:2576 +msgid "Could not update post in the database" +msgstr "No ha sido posible actualizar la entrada en la base de datos" + +#: wp-includes/post.php:2592 +msgid "Could not insert post into the database" +msgstr "No ha sido posible insertar la entrada en la base de datos" + +#: wp-includes/post.php:2642 +msgid "The page template is invalid." +msgstr "La plantilla de la página no es válida." + +#: wp-includes/post.php:4879 +msgid "Cannot create a revision of a revision" +msgstr "No se puede crear una revisión de una revisión" + +#: wp-includes/post.php:5054 +msgid "You do not have permission to preview drafts." +msgstr "No tienes autorización para previsualizar borradores." + +#: wp-includes/user.php:1406 +msgid "Cannot create a user with an empty login name." +msgstr "No se puede crear un usuario con el nombre de identificación vacio." + +#: wp-includes/user.php:1409 +msgid "This username is already registered." +msgstr "Este usuario ya está registrado." + +#: wp-includes/user.php:1424 +msgid "This email address is already registered." +msgstr "Esta dirección de correo electrónico ya está registrada." + +#: wp-includes/user.php:1614 +msgid "AIM" +msgstr "AIM" + +#: wp-includes/user.php:1615 +msgid "Yahoo IM" +msgstr "Yahoo IM" + +#: wp-includes/user.php:1616 +msgid "Jabber / Google Talk" +msgstr "Jabber / Google Talk" + +#: wp-includes/rss.php:900 +msgid "An error has occurred, which probably means the feed is down. Try again later." +msgstr "Ha ocurrido un error, probablemente el feed esté caído. Inténtalo de nuevo más tarde." + +#: wp-includes/script-loader.php:70 +msgid "" +"You are about to permanently delete the selected items.\n" +" 'Cancel' to stop, 'OK' to delete." +msgstr "" +"Estás a punto de borrar permanentemente los elementos seleccionados. \n" +" 'Aceptar' para borrar, 'Cancelar' para salir." + +#: wp-includes/script-loader.php:80 +msgid "(Quick Links)" +msgstr "(Enlaces rápidos)" + +#: wp-includes/script-loader.php:81 +msgid "Enter a word to look up:" +msgstr "Introduce una palabra a buscar:" + +#: wp-includes/script-loader.php:82 +msgid "Dictionary lookup" +msgstr "Buscar en el diccionario" + +#: wp-includes/script-loader.php:83 +msgid "lookup" +msgstr "buscar" + +#: wp-includes/script-loader.php:84 +msgid "Close all open tags" +msgstr "Cerrar todas las etiquetas abiertas" + +#: wp-includes/script-loader.php:85 +msgid "close tags" +msgstr "cerrar etiquetas" + +#: wp-includes/script-loader.php:86 +msgid "Enter the URL" +msgstr "Introduce la URL" + +#: wp-includes/script-loader.php:87 +msgid "Enter the URL of the image" +msgstr "Introduce la URL de la imagen" + +#: wp-includes/script-loader.php:88 +msgid "Enter a description of the image" +msgstr "Introduce una descripción de la imagen" + +#: wp-includes/script-loader.php:107 wp-includes/script-loader.php:307 +msgid "You do not have permission to do that." +msgstr "No tienes autorización para hacer eso." + +#: wp-includes/script-loader.php:108 wp-includes/script-loader.php:308 +msgid "An unidentified error has occurred." +msgstr "Ha ocurrido un error no identificado." + +#: wp-includes/script-loader.php:196 +msgid "Next >" +msgstr "Siguiente >" + +#: wp-includes/script-loader.php:197 +msgid "< Prev" +msgstr "< Anterior" + +#: wp-includes/script-loader.php:198 +msgid "Image" +msgstr "Imagen" + +#: wp-includes/script-loader.php:199 +msgid "of" +msgstr "de" + +#: wp-includes/script-loader.php:201 +msgid "This feature requires inline frames. You have iframes disabled or your browser does not support them." +msgstr "Esta función requiere de frames insertados. Tienes los iframes desactivados o tu navegador no los soporta." + +#: wp-includes/script-loader.php:226 +msgid "not configured" +msgstr "sin configurar" + +#: wp-includes/script-loader.php:229 +msgid "You have attempted to queue too many files." +msgstr "Has intentado poner en cola demasiados archivos." + +#: wp-includes/script-loader.php:231 +msgid "This file is empty. Please try another." +msgstr "Este archivo está vacio. Por favor, prueba con otro." + +#: wp-includes/script-loader.php:232 +msgid "This file type is not allowed. Please try another." +msgstr "Este tipo de archivo no está permitido. Por favor, prueba con otro." + +#: wp-includes/script-loader.php:233 +msgid "An error occurred in the upload. Please try again later." +msgstr "Ha habido un error en la subida. Por favor inténtalo más tarde." + +#: wp-includes/script-loader.php:234 +msgid "There was a configuration error. Please contact the server administrator." +msgstr "Ha habido un problema con la configuración. Por favor, contacta con el administrador del servidor." + +#: wp-includes/script-loader.php:235 +msgid "You may only upload 1 file." +msgstr "Sólo puedes subir 1 archivo." + +#: wp-includes/script-loader.php:236 +msgid "HTTP error." +msgstr "Error HTTP." + +#: wp-includes/script-loader.php:237 +msgid "Upload failed." +msgstr "Falló la subida." + +#: wp-includes/script-loader.php:238 +msgid "IO error." +msgstr "Error de entrada/salida." + +#: wp-includes/script-loader.php:239 +msgid "Security error." +msgstr "Error de seguridad." + +#: wp-includes/script-loader.php:241 +msgid "Upload stopped." +msgstr "Subida detenida." + +#: wp-includes/script-loader.php:243 +msgid "Crunching…" +msgstr "Calculando…" + +#: wp-includes/script-loader.php:244 +msgid "moved to the trash." +msgstr "movidos a la papelera." + +#: wp-includes/script-loader.php:297 +msgid "Separate multiple categories with commas." +msgstr "Separa múltiples categorías con comas." + +#: wp-includes/script-loader.php:263 wp-admin/install.php:256 +msgctxt "password strength" +msgid "Medium" +msgstr "Medio" + +#: wp-includes/script-loader.php:333 +msgid "Tags used on this post:" +msgstr "Etiquetas utilizadas en esta entrada:" + +#: wp-includes/script-loader.php:340 +msgid "Publish on:" +msgstr "Publicar el:" + +#: wp-includes/script-loader.php:341 +msgid "Schedule for:" +msgstr "Programar para el:" + +#: wp-includes/script-loader.php:342 +msgid "Published on:" +msgstr "Publicada el:" + +#: wp-includes/script-loader.php:343 +msgid "Show more comments" +msgstr "Mostrar más comentarios" + +#: wp-includes/script-loader.php:344 +msgid "No more comments found." +msgstr "No hay más comentarios." + +#: wp-includes/script-loader.php:353 +msgid "Password Protected" +msgstr "Protegida con contraseña" + +#: wp-includes/script-loader.php:367 +msgid "Submitted on:" +msgstr "Enviado el:" + +#: wp-includes/script-loader.php:391 wp-includes/script-loader.php:400 +msgid "Error while saving the changes." +msgstr "Error al guardar los cambios." + +#: wp-includes/script-loader.php:392 +msgid "Remove From Bulk Edit" +msgstr "Borrar desde la edición en bloque" + +#: wp-includes/script-loader.php:407 +msgid "Plugin Information:" +msgstr "Información del plugin:" + +#: wp-includes/script-loader.php:432 +msgid "Saving..." +msgstr "Guardando..." + +#: wp-includes/script-loader.php:433 +msgid "Could not set that as the thumbnail image. Try a different attachment." +msgstr "No se pudo establecer como imagen de miniatura. Prueba con otro adjunto." + +#: wp-includes/script-loader.php:563 +msgid "Saving Draft…" +msgstr "Guardando borrador…" + +#: wp-includes/taxonomy.php:490 wp-includes/taxonomy.php:843 +#: wp-includes/taxonomy.php:971 wp-includes/taxonomy.php:1161 +#: wp-includes/taxonomy.php:1834 wp-includes/taxonomy.php:2103 +msgid "Invalid Taxonomy" +msgstr "Taxonomía no válida" + +#: wp-includes/taxonomy.php:838 wp-includes/taxonomy.php:2880 +msgid "Empty Term" +msgstr "Término vacío" + +#: wp-includes/taxonomy.php:1979 +msgid "Invalid term ID" +msgstr "ID del término no válido" + +#: wp-includes/taxonomy.php:1982 wp-includes/taxonomy.php:2300 +msgid "A name is required for this term" +msgstr "Este término necesita un nombre." + +#: wp-includes/taxonomy.php:2024 wp-includes/taxonomy.php:2031 +#: wp-includes/taxonomy.php:2041 +msgid "Could not insert term into the database" +msgstr "No ha sido posible insertar el término en la base de datos." + +#: wp-includes/taxonomy.php:2333 +msgid "The slug “%s” is already in use by another term" +msgstr "El slug “%s” lo está utilizando ya otro término." + +#: wp-includes/taxonomy.php:3044 +msgid "Invalid object ID" +msgstr "El ID del objeto no es válido" + +#: wp-includes/theme.php:282 +msgid "File not readable." +msgstr "Archivo no legible." + +#: wp-includes/theme.php:334 +msgid "Template is missing." +msgstr "Falta la plantilla." + +#: wp-includes/theme.php:336 +msgid "The parent theme is missing. Please install the \"%s\" parent theme." +msgstr "No encontramos el tema principal. Por favor, instala el tema principal \"%s\"." + +#: wp-includes/theme.php:641 +msgid "Stylesheet is missing." +msgstr "Falta la hoja de estilo." + +#: wp-includes/user.php:80 +msgid "ERROR: The username field is empty." +msgstr "ERROR: El campo Nombre de usuario está vacío." + +#: wp-includes/user.php:83 +msgid "ERROR: The password field is empty." +msgstr "ERROR: El campo contraseña está vacío." + +#: wp-includes/user.php:91 +msgid "ERROR: Invalid username. Lost your password?" +msgstr "ERROR: El usuario es incorrecto. ¿La has olvidado?" + +#: wp-includes/user.php:96 +msgid "ERROR: Your account has been marked as a spammer." +msgstr "ERROR: Tu cuenta ha sido marcada como spammer." + +#: wp-includes/user.php:137 +msgid "Please log in again." +msgstr "Por favor, accede de nuevo." + +#: wp-includes/widgets.php:488 wp-includes/widgets.php:547 +msgid "Sidebar %d" +msgstr "Barra lateral %d" + +#: wp-includes/wp-db.php:1479 +msgid "ERROR: WordPress %1$s requires MySQL %2$s or higher" +msgstr "ERROR: WordPress %1$s necesita MySQL %2$s o superior." + +#: wp-login.php:87 +msgid "Powered by WordPress" +msgstr "Funciona gracias a WordPress" + +#: wp-login.php:171 +msgid "ERROR: Enter a username or e-mail address." +msgstr "ERROR: escribe un nombre de usuario o correo electrónico." + +#: wp-login.php:176 +msgid "ERROR: There is no user registered with that email address." +msgstr "ERROR: no hay ningún usuario registrado con esa dirección de correo electrónico." + +#: wp-login.php:188 +msgid "ERROR: Invalid username or e-mail." +msgstr "ERROR: el nombre de usuario o el correo electrónico no son correctos." + +#: wp-login.php:202 +msgid "Password reset is not allowed for this user" +msgstr "El restablecimiento de contraseña no está permitido para este usuario" + +#: wp-login.php:228 +msgid "[%s] Password Reset" +msgstr "[%s] Restablecer contraseña" + +#: wp-login.php:234 +msgid "The e-mail could not be sent." +msgstr "No se pudo enviar el correo electrónico" + +#: wp-login.php:234 +msgid "Possible reason: your host may have disabled the mail() function..." +msgstr "Posible razón: el servidor puede tener deshabilitada la función mail()..." + +#: wp-login.php:255 wp-login.php:258 wp-login.php:263 +msgid "Invalid key" +msgstr "Clave no válida." + +#: wp-login.php:303 +msgid "ERROR: This username is already registered, please choose another one." +msgstr "ERROR: Ese usuario ya existe. Por favor, elige otro." + +#: wp-login.php:308 +msgid "ERROR: Please type your e-mail address." +msgstr "ERROR: Por favor, escribe tu correo electrónico." + +#: wp-login.php:310 +msgid "ERROR: The email address isn’t correct." +msgstr "ERROR: La dirección de correo electrónico no es correcta." + +#: wp-login.php:326 +msgid "ERROR: Couldn’t register you... please contact the webmaster !" +msgstr "ERROR: No es posible registrarte... por favor, ponte en contacto con el administrador" + +#: wp-login.php:398 +msgid "Sorry, that key does not appear to be valid." +msgstr "Disculpa, la contraseña no es válida." + +#: wp-login.php:402 +msgid "Lost Password" +msgstr "Contraseña perdida" + +#: wp-login.php:410 +msgid "Username or E-mail:" +msgstr "Nombre de usuario o correo electrónico:" + +#: wp-login.php:415 +msgid "Get New Password" +msgstr "Obtener una contraseña nueva" + +#: wp-login.php:127 +msgid "Are you lost?" +msgstr "¿Te has perdido?" + +#: wp-login.php:127 +msgid "← Back to %s" +msgstr "« Volver a %s" + +#: wp-login.php:511 +msgid "Registration Form" +msgstr "Formulario de registro" + +#: wp-login.php:511 +msgid "Register For This Site" +msgstr "Registrarte en este sitio" + +#: wp-login.php:524 +msgid "A password will be e-mailed to you." +msgstr "Recibirás una contraseña en este correo electrónico." + +#: wp-login.php:532 wp-login.php:661 wp-login.php:663 +msgid "Password Lost and Found" +msgstr "Recupera tu contraseña perdida" + +#: wp-login.php:532 wp-login.php:661 wp-login.php:663 +msgid "Lost your password?" +msgstr "¿Has perdido tu contraseña?" + +#: wp-login.php:578 +msgid "You have logged in successfully." +msgstr "Te has conectado con éxito." + +#: wp-login.php:607 +msgid "ERROR: Cookies are blocked or not supported by your browser. You must enable cookies to use WordPress." +msgstr "ERROR: Las Cookies están bloqueadas o no las soporta tu navegador. Debes habilitar las cookies para usar WordPress." + +#: wp-login.php:611 +msgid "You are now logged out." +msgstr "Ahora estás desconectado." + +#: wp-login.php:613 +msgid "User registration is currently not allowed." +msgstr "No se permite el registro de nuevos usuarios." + +#: wp-login.php:615 +msgid "Check your e-mail for the confirmation link." +msgstr "Revisa tu correo electrónico para obtener el enlace de confirmación." + +#: wp-login.php:617 +msgid "Check your e-mail for your new password." +msgstr "Revisa tu correo electrónico para obtener la contraseña nueva." + +#: wp-login.php:619 +msgid "Registration complete. Please check your e-mail." +msgstr "Registro completo. Por favor, revisa tu correo electrónico." + +#: wp-login.php:621 +msgid "Your session has expired. Please log-in again." +msgstr "Tu sesión ha expirado. Vuelve a acceder." + +#: wp-mail.php:29 +msgid "Slow down cowboy, no need to check for new mails so often!" +msgstr "¡Tranquilo, campeón! ¡No hace falta comprobar el correo tan a menudo!" + +#: wp-mail.php:49 +msgid "There doesn’t seem to be any new mail." +msgstr "Parece que no hay ningún correo electrónico nuevo." + +#: wp-mail.php:115 +msgid "Author is %s" +msgstr "El autor es %s" + +#: wp-mail.php:221 +msgid "Author: %s" +msgstr "Autor: %s" + +#: wp-mail.php:222 +msgid "Posted title: %s" +msgstr "Título publicado: %s" + +#: wp-mail.php:225 +msgid "Oops: %s" +msgstr "Oops: %s" + +#: wp-mail.php:229 +msgid "Mission complete. Message %s deleted." +msgstr "Misión cumplida. Mensaje %s borrado." + +#: wp-includes/js/tinymce/langs/wp-langs.php:288 +#: wp-includes/js/tinymce/langs/wp-langs.php:304 +#: wp-includes/js/tinymce/langs/wp-langs.php:469 +#: wp-includes/js/tinymce/wp-mce-help.php:257 +#: wp-admin/includes/template.php:1829 +msgid "Help" +msgstr "Ayuda" + +#: wp-admin/includes/template.php:1816 +msgid "Documentation" +msgstr "Documentación" + +#: wp-admin/link-manager.php:50 wp-admin/user-new.php:150 wp-admin/index.php:49 +#: wp-admin/edit-link-form.php:48 wp-admin/options-general.php:70 +#: wp-admin/themes.php:47 wp-admin/media.php:77 wp-admin/custom-header.php:107 +#: wp-admin/options-discussion.php:23 wp-admin/plugin-editor.php:124 +#: wp-admin/plugin-install.php:46 wp-admin/options-privacy.php:24 +#: wp-admin/theme-editor.php:36 wp-admin/tools.php:20 +#: wp-admin/edit-form-advanced.php:178 wp-admin/edit-form-advanced.php:189 +#: wp-admin/comment.php:52 wp-admin/edit-comments.php:124 +#: wp-admin/import.php:24 wp-admin/custom-background.php:89 +#: wp-admin/options-media.php:25 wp-admin/edit.php:170 wp-admin/edit.php:179 +#: wp-admin/upload.php:149 wp-admin/export.php:46 wp-admin/theme-install.php:47 +#: wp-admin/users.php:30 wp-admin/options-writing.php:23 +#: wp-admin/update-core.php:414 wp-admin/options-reading.php:51 +#: wp-admin/includes/template.php:1818 wp-admin/options-permalink.php:28 +#: wp-admin/user-edit.php:48 wp-admin/widgets.php:46 wp-admin/credits.php:21 +#: wp-admin/plugins.php:328 wp-admin/edit-tags.php:218 +#: wp-admin/media-upload.php:70 wp-admin/nav-menus.php:457 +msgid "Support Forums" +msgstr "Foros de soporte (en inglés)" + +#: wp-admin/includes/template.php:1833 +msgid "Screen Options" +msgstr "Opciones de pantalla" + +#: wp-admin/includes/template.php:1888 +msgid "Screen Layout" +msgstr "Diseño de pantalla" + +#: wp-admin/includes/template.php:1888 +msgid "Number of Columns:" +msgstr "Número de columnas:" + +#: wp-admin/includes/theme-install.php:56 +msgid "Search for themes by keyword, author, or tag." +msgstr "Buscar temas por palabra clave, autor o etiqueta." + +#: wp-admin/themes.php:149 wp-admin/includes/theme-install.php:79 +msgid "Feature Filter" +msgstr "Filtrar por características" + +#: wp-admin/includes/theme-install.php:81 +msgid "Find a theme based on specific features" +msgstr "Buscar un tema basándote en determinadas características" + +#: wp-admin/includes/theme.php:270 wp-admin/includes/theme.php:347 +msgid "Colors" +msgstr "Colores" + +#: wp-includes/js/tinymce/langs/wp-langs.php:34 wp-admin/includes/theme.php:271 +msgid "Black" +msgstr "Negro" + +#: wp-includes/general-template.php:2077 +#: wp-includes/js/tinymce/langs/wp-langs.php:47 wp-admin/includes/theme.php:272 +msgid "Blue" +msgstr "Azul" + +#: wp-includes/js/tinymce/langs/wp-langs.php:64 wp-admin/includes/theme.php:273 +msgid "Brown" +msgstr "Marrón" + +#: wp-includes/js/tinymce/langs/wp-langs.php:45 wp-admin/includes/theme.php:275 +msgid "Green" +msgstr "Verde" + +#: wp-includes/js/tinymce/langs/wp-langs.php:43 wp-admin/includes/theme.php:276 +msgid "Orange" +msgstr "Naranja" + +#: wp-includes/js/tinymce/langs/wp-langs.php:66 wp-admin/includes/theme.php:277 +msgid "Pink" +msgstr "Rosa" + +#: wp-includes/js/tinymce/langs/wp-langs.php:56 wp-admin/includes/theme.php:278 +msgid "Purple" +msgstr "Púrpura" + +#: wp-includes/js/tinymce/langs/wp-langs.php:50 wp-admin/includes/theme.php:279 +msgid "Red" +msgstr "Rojo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:65 wp-admin/includes/theme.php:280 +msgid "Silver" +msgstr "Gris" + +#: wp-admin/includes/theme.php:281 +msgid "Tan" +msgstr "Café" + +#: wp-includes/js/tinymce/langs/wp-langs.php:73 wp-admin/includes/theme.php:282 +msgid "White" +msgstr "Blanco" + +#: wp-includes/js/tinymce/langs/wp-langs.php:60 wp-admin/includes/theme.php:283 +msgid "Yellow" +msgstr "Amarillo" + +#: wp-admin/includes/theme.php:284 +msgid "Dark" +msgstr "Negro" + +#: wp-admin/includes/theme.php:288 wp-admin/includes/theme.php:347 +msgid "Columns" +msgstr "Columnas" + +#: wp-admin/includes/theme.php:289 +msgid "One Column" +msgstr "Una columna" + +#: wp-admin/includes/theme.php:290 +msgid "Two Columns" +msgstr "Dos columnas" + +#: wp-admin/includes/theme.php:291 +msgid "Three Columns" +msgstr "Tres columnas" + +#: wp-admin/includes/theme.php:292 +msgid "Four Columns" +msgstr "Cuatro columnas" + +#: wp-admin/includes/theme.php:293 +msgid "Left Sidebar" +msgstr "Barra lateral izquierda" + +#: wp-admin/includes/theme.php:294 +msgid "Right Sidebar" +msgstr "Barra lateral derecha" + +#: wp-includes/js/tinymce/langs/wp-langs.php:494 wp-admin/options-media.php:46 +#: wp-admin/options-media.php:92 wp-admin/includes/theme.php:297 +#: wp-admin/includes/theme.php:347 +msgid "Width" +msgstr "Ancho" + +#: wp-admin/includes/theme.php:298 +msgid "Fixed Width" +msgstr "Ancho fijo" + +#: wp-admin/includes/theme.php:299 +msgid "Flexible Width" +msgstr "Ancho flexible" + +#: wp-admin/includes/theme.php:302 wp-admin/includes/theme.php:348 +msgid "Features" +msgstr "Características" + +#: wp-admin/includes/theme.php:306 +msgid "Custom Colors" +msgstr "Colores personalizados" + +#: wp-admin/includes/theme.php:318 +msgid "Theme Options" +msgstr "Opciones del tema" + +#: wp-admin/includes/theme.php:319 +msgid "Threaded Comments" +msgstr "Comentarios anidados" + +#: wp-admin/includes/theme.php:317 +msgid "Sticky Post" +msgstr "Entrada fija" + +#: wp-admin/includes/theme.php:314 +msgid "Microformats" +msgstr "Microformatos" + +#: wp-admin/includes/theme.php:323 wp-admin/includes/theme.php:348 +msgid "Subject" +msgstr "Asunto" + +#: wp-admin/includes/theme.php:324 +msgid "Holiday" +msgstr "Vacaciones" + +#: wp-admin/includes/theme.php:325 +msgid "Photoblogging" +msgstr "Fotoblogging" + +#: wp-admin/includes/theme.php:326 +msgid "Seasonal" +msgstr "Estacional" + +#: wp-admin/includes/theme-install.php:109 +msgid "Find Themes" +msgstr "Buscar temas" + +#: wp-admin/includes/theme-install.php:117 +msgid "Install a theme in .zip format" +msgstr "Instalar un tema desde un archivo .zip" + +#: wp-admin/includes/theme-install.php:118 +msgid "If you have a theme in a .zip format, you may install it by uploading it here." +msgstr "Si tienes un tema en un archivo .zip, puedes instalarlo subiendo el archivo desde aquí." + +#: wp-admin/includes/theme-install.php:143 +msgid "Install “%s”" +msgstr "Instalar “%s”" + +#: wp-admin/includes/theme-install.php:160 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:192 +msgid "Details" +msgstr "Detalles" + +#: wp-admin/includes/theme-install.php:237 +msgid "Theme Install" +msgstr "Instalar" + +#: wp-admin/includes/theme-install.php:240 +msgid "Error: This theme is currently not available. Please try again later." +msgstr "ERROR: Este tema no está disponible actualmente. Por favor vuelve a intentarlo más tarde." + +#: wp-admin/includes/theme-install.php:246 +msgid "Warning: This theme has not been tested with your current version of WordPress." +msgstr "Atención: Este tema no ha sido probado en esta versión de WordPress." + +#: wp-admin/includes/theme-install.php:248 +msgid "Warning: This theme has not been marked as compatible with your version of WordPress." +msgstr "Atención: Este tema no es compatible con esta versión de WordPress." + +#: wp-admin/includes/theme-install.php:281 +msgid "by %s" +msgstr "por %s" + +#: wp-admin/includes/theme-install.php:282 +msgid "Version: %s" +msgstr "Versión: %s" + +#: wp-admin/includes/theme-install.php:301 +msgid "Newer version (%s) is installed." +msgstr "La última versión (%s) ya está instalada." + +#: wp-admin/includes/theme-install.php:306 +msgid "This version is already installed." +msgstr "Esta versión ya está instalada." + +#: wp-admin/includes/theme.php:93 +msgid "Unable to locate WordPress theme directory." +msgstr "Ha sido imposible localizar el directorio de temas de WordPress." + +#: wp-admin/includes/theme.php:100 +msgid "Could not fully remove the theme %s." +msgstr "No se pudo eliminar completamente el tema %s." + +#: wp-admin/includes/update-core.php:347 +msgid "The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher and MySQL version %3$s or higher. You are running PHP version %4$s and MySQL version %5$s." +msgstr "La actualización no se pudo instalar a causa de que WordPress %1$s requiere la versión %2$s o superior de PHP y la versión %3$s o superior de MySQL. Estás usando la versión %4$s de PHP y la versión %5$s de MySQL." + +#: wp-admin/includes/update-core.php:349 +msgid "The update cannot be installed because WordPress %1$s requires PHP version %2$s or higher. You are running version %3$s." +msgstr "La actualización no puede instalarse ya que WordPress %1$s requiere la versión %2$s o superior de PHP. Estás usando la versión %3$s." + +#: wp-admin/includes/update-core.php:351 +msgid "The update cannot be installed because WordPress %1$s requires MySQL version %2$s or higher. You are running version %3$s." +msgstr "La actualización no puede instalarse porque WordPress %1$s requiere la versión %2$s o superior de MySQL. Estás usando la versión %3$s." + +#: wp-admin/includes/update-core.php:354 +msgid "Verifying the unpacked files…" +msgstr "Verificando los archivos descomprimidos…" + +#: wp-admin/includes/update-core.php:365 +msgid "The update could not be unpacked" +msgstr "No se ha podido descomprimir la actualización." + +#: wp-admin/includes/update-core.php:451 +msgid "Upgrading database…" +msgstr "Actualizado la base de datos…" + +#: wp-admin/includes/class-wp-plugins-list-table.php:429 +#: wp-admin/includes/update.php:89 wp-admin/includes/update.php:112 +msgid "Version %s" +msgstr "Versión %s" + +#: wp-admin/includes/update.php:103 +msgid "You are using a development version (%1$s). Cool! Please stay updated." +msgstr "Estás usando una versión en desarrollo (%1$s). ¡Mola! Por favor, mantente actualizado." + +#: wp-admin/includes/update.php:107 +msgid "Get Version %2$s" +msgstr "Descargar versión %2$s" + +#: wp-admin/includes/update.php:148 +msgid "You are using WordPress %s." +msgstr "Estás usando WordPress %s." + +#: wp-admin/includes/update.php:151 +msgid "Update to %s" +msgstr "Actualizar a %s" + +#: wp-admin/includes/update.php:151 +msgid "Latest" +msgstr "Última" + +#: wp-admin/includes/update.php:305 +msgid "An automated WordPress update has failed to complete - please attempt the update again now." +msgstr "No se ha podido completar la actualización automática de WordPress. Por favor, vuelve a intentarlo." + +#: wp-admin/includes/update.php:307 +msgid "An automated WordPress update has failed to complete! Please notify the site administrator." +msgstr "¡No se ha podido completar la actualización automática de WordPress! Por favor, avisa al administrador." + +#: wp-admin/includes/upgrade.php:68 +msgid "Note that password carefully! It is a random password that was generated just for you." +msgstr "¡Anota la contraseña cuidadosamente! Es una contraseña aleatoria que ha sido generada sólo para ti." + +#: wp-admin/includes/upgrade.php:111 +msgctxt "Default category slug" +msgid "Uncategorized" +msgstr "Sin categoría" + +#: wp-admin/includes/upgrade.php:131 +msgctxt "Default link category slug" +msgid "Blogroll" +msgstr "Sitios de interés" + +#: wp-admin/includes/upgrade.php:204 +msgid "Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!" +msgstr "Bienvenido a WordPress. Esta es tu primera entrada. Edítala o bórrala, ¡y comienza a publicar!." + +#: wp-admin/includes/upgrade.php:213 +msgid "Hello world!" +msgstr "¡Hola mundo!" + +#: wp-admin/includes/upgrade.php:215 +msgctxt "Default post slug" +msgid "hello-world" +msgstr "hola-mundo" + +#: wp-admin/includes/upgrade.php:227 +msgid "Mr WordPress" +msgstr "Sr WordPress" + +#: wp-admin/includes/upgrade.php:229 +msgid "Hi, this is a comment.
    To delete a comment, just log in and view the post's comments. There you will have the option to edit or delete them." +msgstr "Hola, esto es un comentario.
    Para borrar un comentario sólo tienes que entrar y ver los comentarios de la entrada. Entonces tendrás la opción de editar o borrar." + +#: wp-includes/js/tinymce/langs/wp-langs.php:303 +#: wp-includes/js/tinymce/wp-mce-help.php:203 +msgid "About" +msgstr "Acerca de" + +#: wp-admin/users.php:61 wp-admin/includes/user.php:34 +#: wp-admin/includes/user.php:88 +msgid "You can’t give users that role." +msgstr "No puedes dar este perfil a los usuarios." + +#: wp-login.php:298 wp-admin/includes/user.php:135 +msgid "ERROR: Please enter a username." +msgstr "ERROR: Por favor, introduce un nombre de usuario." + +#: wp-admin/includes/user.php:142 wp-admin/includes/user.php:144 +msgid "ERROR: You entered your new password only once." +msgstr "ERROR: Has escrito tu nueva contraseña sólo una vez." + +#: wp-admin/includes/user.php:147 +msgid "ERROR: Please enter your password." +msgstr "ERROR: Por favor, escribe tu contraseña." + +#: wp-admin/includes/user.php:149 +msgid "ERROR: Please enter your password twice." +msgstr "ERROR: Por favor, escribe tu contraseña dos veces." + +#: wp-admin/includes/user.php:154 +msgid "ERROR: Passwords may not contain the character \"\\\"." +msgstr "ERROR: La contraseña no puede contener el carácter \"\\\"." + +#: wp-admin/includes/user.php:158 +msgid "ERROR: Please enter the same password in the two password fields." +msgstr "ERROR: Por favor, introduce la misma contraseña en los dos campos." + +#: wp-admin/includes/user.php:167 +msgid "ERROR: This username is already registered. Please choose another one." +msgstr "ERROR: Ese usuario ya existe. Por favor, elige otro." + +#: wp-admin/includes/user.php:171 +msgid "ERROR: Please enter an e-mail address." +msgstr "ERROR: Por favor, introduce un correo electrónico" + +#: wp-admin/includes/user.php:173 +msgid "ERROR: The e-mail address isn’t correct." +msgstr "ERROR: La dirección de correo electrónico no es correcta." + +#: wp-login.php:313 wp-admin/includes/user.php:175 +msgid "ERROR: This email is already registered, please choose another one." +msgstr "ERROR: Esa dirección de correo electrónico ya está registrada. Por favor, elige otra." + +#: wp-admin/includes/deprecated.php:524 +msgid "No matching users were found!" +msgstr "¡No se encontraron usuarios!" + +#: wp-includes/widgets.php:67 wp-admin/includes/widgets.php:194 +#: wp-admin/widgets.php:273 +msgid "There are no options for this widget." +msgstr "No hay opciones para este widget." + +#: wp-includes/admin-bar.php:108 wp-includes/admin-bar.php:110 +#: wp-includes/admin-bar.php:138 wp-admin/index.php:24 +#: wp-admin/user/menu.php:10 wp-admin/menu.php:25 +msgid "Dashboard" +msgstr "Escritorio" + +#: wp-admin/install.php:60 +msgid "WordPress › Installation" +msgstr "Instalación de WordPress" + +#: wp-admin/install.php:92 +msgid "ERROR: %s" +msgstr "ERROR: %s" + +#: wp-admin/install.php:105 +msgid "User(s) already exists." +msgstr "El (los) usuario(s) ya existe(n)." + +#: wp-includes/script-loader.php:259 wp-login.php:467 wp-admin/user-new.php:314 +#: wp-admin/install.php:122 wp-admin/install.php:253 wp-admin/user-edit.php:375 +msgid "Strength indicator" +msgstr "Seguridad de la contraseña" + +#: wp-login.php:468 wp-admin/user-new.php:315 wp-admin/install.php:123 +#: wp-admin/user-edit.php:376 +msgid "Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! \" ? $ % ^ & )." +msgstr "Tu contraseña debe tener al menos siete caracteres. Para que tu contraseña sea segura, usa mayúsculas, minúsculas, números y símbolos como ! \" ? $ % ^ & )." + +#: wp-admin/install.php:128 +msgid "Your E-mail" +msgstr "Tu correo electrónico" + +#: wp-admin/install.php:130 +msgid "Double-check your email address before continuing." +msgstr "Comprueba bien tu dirección de correo electrónico antes de continuar." + +#: wp-admin/install.php:136 +msgid "Install WordPress" +msgstr "Instalar WordPress" + +#: wp-admin/install.php:144 +msgid "Already Installed" +msgstr "Ya está instalado" + +#: wp-admin/install.php:144 +msgid "You appear to have already installed WordPress. To reinstall please clear your old database tables first." +msgstr "WordPress parece estar ya instalado. Si deseas reinstalar, por favor, borra las tablas de la base de datos." + +#: wp-admin/install.php:161 +msgid "Insufficient Requirements" +msgstr "Requisitos Insuficientes" + +#: wp-admin/install.php:169 +msgid "Welcome" +msgstr "Bienvenido" + +#: wp-admin/install.php:170 +msgid "Welcome to the famous five minute WordPress installation process! You may want to browse the ReadMe documentation at your leisure. Otherwise, just fill in the information below and you’ll be on your way to using the most extendable and powerful personal publishing platform in the world." +msgstr "¡Bienvenido al famoso proceso de instalación de WordPress de cinco minutos! Tal vez quieras leer tranquilamente la Documentación del archivo Léeme. En caso contrario, rellena los datos más abajo y en seguida estarás utilizando la plataforma de publicación personal más potente y extensible del mundo." + +#: wp-admin/install.php:172 +msgid "Information needed" +msgstr "Información necesaria" + +#: wp-admin/install.php:173 +msgid "Please provide the following information. Don’t worry, you can always change these settings later." +msgstr "Por favor, debes facilitarnos los siguientes datos. No te preocupes, siempre podrás cambiar estos ajustes más tarde." + +#: wp-admin/install.php:205 +msgid "you must provide an e-mail address." +msgstr "debes proporcionar un correo electrónico." + +#: wp-admin/install.php:209 +msgid "that isn’t a valid e-mail address. E-mail addresses look like: username@example.com" +msgstr "esa no es una dirección de correo electrónico válido. Una dirección bien formada tiene este aspecto: usuario@ejemplo.com" + +#: wp-admin/install.php:219 +msgid "Success!" +msgstr "¡Lo lograste!" + +#: wp-admin/install.php:221 +msgid "WordPress has been installed. Were you expecting more steps? Sorry to disappoint." +msgstr "Wordpress se ha instalado correctamente. ¿Esperabas más pasos? Sentimos decepcionarte. :)" + +#: wp-includes/general-template.php:261 wp-login.php:627 wp-login.php:646 +#: wp-admin/install.php:144 wp-admin/install.php:238 +msgid "Log In" +msgstr "Acceder" + +#: wp-includes/script-loader.php:260 wp-admin/install.php:254 +msgid "Very weak" +msgstr "Muy débil" + +#: wp-includes/script-loader.php:261 wp-admin/install.php:255 +msgid "Weak" +msgstr "Débil" + +#: wp-includes/script-loader.php:264 wp-admin/install.php:257 +msgid "Strong" +msgstr "Fuerte" + +#: wp-admin/link-add.php:15 +msgid "Add New Link" +msgstr "Añadir enlace" + +#: wp-includes/taxonomy.php:406 +msgid "Edit Category" +msgstr "Editar Categoría" + +#: wp-admin/link-manager.php:62 wp-admin/edit-link-form.php:56 +#: wp-admin/menu.php:96 +msgctxt "link" +msgid "Add New" +msgstr "Añadir nuevo" + +#: wp-admin/link-manager.php:71 +msgid "%s link deleted." +msgid_plural "%s links deleted" +msgstr[0] "%s enlace eliminado." +msgstr[1] "%s enlaces eliminados." + +#: wp-admin/link-manager.php:79 +msgid "Search Links" +msgstr "Buscar enlaces" + +#: wp-admin/custom-header.php:581 +#: wp-admin/includes/class-wp-links-list-table.php:110 +msgid "Yes" +msgstr "Sí" + +#: wp-admin/includes/class-wp-links-list-table.php:146 +msgid "Visit %s" +msgstr "Visitar %s" + +#: wp-admin/includes/class-wp-links-list-table.php:42 +msgid "No links found." +msgstr "No se encontraron enlaces." + +#: wp-admin/link-parse-opml.php:90 +msgid "XML error: %1$s at line %2$s" +msgstr "Error de XML: %1$s en la línea %2$s" + +#: wp-includes/link-template.php:1056 wp-admin/link.php:104 +msgid "Edit Link" +msgstr "Editar enlace" + +#: wp-admin/link.php:109 +msgid "Link not found." +msgstr "No se encontró el enlace." + +#: wp-admin/maint/repair.php:13 +msgid "WordPress › Database Repair" +msgstr "WordPress › Reparación de la base de datos" + +#: wp-admin/maint/repair.php:22 +msgid "To allow use of this page to automatically repair database problems, please add the following line to your wp-config.php file. Once this line is added to your config, reload this page." +msgstr "Para permitir el uso de esta página y así reparar automáticamente problemas en la base de datos, añade la línea siguiente a tu fichero wp-config.php. Una vez hayas añadido esta línea a tu configuración vuelve a cargar esta página." + +#: wp-admin/maint/repair.php:71 +msgid "Some database problems could not be repaired. Please copy-and-paste the following list of errors to the WordPress support forums to get additional assistance." +msgstr "Algunos problemas de la base de datos no se han podido reparar. Por favor, copia y pega la siguiente lista de errores en los foros de soporte de WordPress para conseguir ayuda." + +#: wp-admin/maint/repair.php:77 +msgid "Repairs complete. Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users." +msgstr "Reparación completa. Quita la siguiente línea del archivo wp-config.php para evitar que esta página la utilicen usuarios sin autorización." + +#: wp-admin/maint/repair.php:85 +msgid "Repair Database" +msgstr "Reparar base de datos" + +#: wp-admin/maint/repair.php:86 +msgid "WordPress can also attempt to optimize the database. This improves performance in some situations. Repairing and optimizing the database can take a long time and the database will be locked while optimizing." +msgstr "WordPress puede también tratar de optimizar la base de datos. Esto mejora el rendimiento en algunas situaciones. Reparar y optimizar la base de datos puede llevar bastante tiempo y la base de datos se bloqueará durante la optimización." + +#: wp-admin/maint/repair.php:87 +msgid "Repair and Optimize Database" +msgstr "Reparar y optimizar la base de datos" + +#: wp-admin/media-upload.php:35 +msgid "You are not allowed to be here" +msgstr "No tienes autorización para estar aquí." + +#: wp-admin/media-upload.php:62 +msgid "Upload New Media" +msgstr "Subir nuevo medio" + +#: wp-admin/media.php:23 wp-admin/media.php:57 +msgid "You are not allowed to edit this attachment." +msgstr "No tienes autorización para editar este archivo adjunto." + +#: wp-admin/media.php:61 +msgid "You attempted to edit an attachment that doesn’t exist. Perhaps it was deleted?" +msgstr "Estás intentando editar un adjunto que no existe. ¿Lo has borrado?" + +#: wp-admin/media.php:62 +msgid "You can’t edit this attachment because it is in the Trash. Please move it out of the Trash and try again." +msgstr "No puedes editar este adjunto ya que está en la Papelera. Sácalo de la Papelera e inténtalo de nuevo." + +#: wp-admin/media.php:88 wp-admin/upload.php:165 wp-admin/upload.php:191 +msgid "Media attachment updated." +msgstr "El archivo ha sido actualizado." + +#: wp-admin/media.php:110 wp-admin/media.php:119 +msgid "Update Media" +msgstr "Actualizar medio" + +#: wp-admin/includes/template.php:1421 wp-admin/includes/template.php:1472 +msgid "Sites" +msgstr "Sitios" + +#: wp-includes/admin-bar.php:305 wp-admin/update-core.php:266 +#: wp-admin/update-core.php:274 wp-admin/menu.php:159 wp-admin/menu.php:164 +msgid "Themes" +msgstr "Temas" + +#: wp-includes/admin-bar.php:126 wp-admin/menu.php:30 +msgid "My Sites" +msgstr "Mis sitios" + +#: wp-admin/menu.php:89 +msgid "Library" +msgstr "Librería multimedia" + +#: wp-admin/media.php:104 wp-admin/upload.php:157 wp-admin/menu.php:91 +msgctxt "file" +msgid "Add New" +msgstr "Añadir nuevo" + +#: wp-includes/post.php:1179 wp-admin/menu.php:102 +msgctxt "page" +msgid "Add New" +msgstr "Añadir nueva" + +#: wp-includes/admin-bar.php:286 wp-admin/menu.php:114 +msgid "Comments %s" +msgstr "Comentarios %s" + +#: wp-includes/admin-bar.php:299 wp-admin/menu.php:158 wp-admin/menu.php:163 +msgid "Appearance" +msgstr "Apariencia" + +#: wp-admin/menu.php:174 +msgctxt "theme editor" +msgid "Editor" +msgstr "Editor" + +#: wp-admin/menu.php:183 +msgid "Plugins %s" +msgstr "Plugins %s" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:208 +msgid "Installed" +msgstr "Instalados" + +#: wp-admin/plugins.php:384 wp-admin/menu.php:189 +msgctxt "plugin" +msgid "Add New" +msgstr "Añadir nuevo" + +#: wp-admin/menu.php:190 +msgctxt "plugin editor" +msgid "Editor" +msgstr "Editor" + +#: wp-admin/user/menu.php:14 wp-admin/user-edit.php:28 wp-admin/menu.php:198 +msgid "Profile" +msgstr "Perfil" + +#: wp-admin/users.php:363 wp-admin/user-edit.php:176 wp-admin/menu.php:204 +#: wp-admin/menu.php:206 +msgctxt "user" +msgid "Add New" +msgstr "Añadir nuevo" + +#: wp-admin/admin-header.php:156 wp-admin/menu.php:208 wp-admin/menu.php:211 +msgid "Your Profile" +msgstr "Tu perfil" + +#: wp-admin/tools.php:12 wp-admin/menu.php:218 +msgid "Tools" +msgstr "Herramientas" + +#: wp-admin/menu.php:227 wp-admin/options.php:21 +#: wp-content/plugins/akismet/admin.php:45 +msgid "Settings" +msgstr "Ajustes" + +#: wp-admin/menu.php:228 +msgctxt "settings screen" +msgid "General" +msgstr "Generales" + +#: wp-admin/menu.php:229 +msgid "Writing" +msgstr "Escritura" + +#: wp-admin/menu.php:230 +msgid "Reading" +msgstr "Lectura" + +#: wp-admin/menu.php:233 +msgid "Privacy" +msgstr "Privacidad" + +#: wp-admin/menu.php:234 +msgid "Permalinks" +msgstr "Enlaces permanentes" + +#: wp-admin/users.php:376 wp-admin/includes/dashboard.php:464 +msgid "Search Users" +msgstr "Buscar usuarios" + +#: wp-content/plugins/akismet/admin.php:134 +msgid "Options saved." +msgstr "Opciones guardadas." + +#: wp-includes/link-template.php:1315 +msgid "First Post" +msgstr "Primera entrada" + +#: wp-includes/js/tinymce/langs/wp-langs.php:398 +msgid "Enabled" +msgstr "Activado" + +#: wp-includes/js/tinymce/langs/wp-langs.php:291 +msgid "Path" +msgstr "Ruta" + +#: wp-admin/includes/class-wp-users-list-table.php:127 +#: wp-admin/includes/class-wp-users-list-table.php:254 +#: wp-admin/includes/nav-menu.php:189 +msgid "Remove" +msgstr "Eliminar" + +#: wp-admin/user-edit.php:242 +msgid "Role:" +msgstr "Perfil:" + +#: wp-admin/includes/class-wp-plugins-list-table.php:262 +#: wp-admin/includes/class-wp-plugins-list-table.php:377 +msgid "Deactivate" +msgstr "Desactivar" + +#: wp-includes/class-wp-xmlrpc-server.php:316 wp-admin/options-general.php:85 +#: wp-admin/install.php:97 +msgid "Site Title" +msgstr "Título del sitio" + +#: wp-includes/comment-template.php:1525 +msgid "Email" +msgstr "Correo electrónico" + +#: wp-admin/update-core.php:279 wp-admin/update-core.php:308 +#: wp-admin/update-core.php:493 wp-admin/update-core.php:498 +msgid "Update Themes" +msgstr "Actualizar temas" + +#: wp-admin/options-discussion.php:15 +msgid "Discussion Settings" +msgstr "Ajustes de comentarios" + +#: wp-admin/options-discussion.php:38 wp-admin/options-discussion.php:39 +msgid "Default article settings" +msgstr "Ajustes por defecto de las entradas" + +#: wp-admin/options-discussion.php:46 +msgid "Allow link notifications from other blogs (pingbacks and trackbacks.)" +msgstr "Permitir notificaciones de enlace desde otros sitios (pingbacks y trackbacks)" + +#: wp-admin/options-discussion.php:50 +msgid "Allow people to post comments on new articles" +msgstr "Permitir comentarios en las nuevas entradas" + +#: wp-admin/options-discussion.php:52 +msgid "These settings may be overridden for individual articles." +msgstr "Estos ajustes pueden modificarse para cada entrada en particular." + +#: wp-admin/options-discussion.php:56 wp-admin/options-discussion.php:57 +msgid "Other comment settings" +msgstr "Otros ajustes de comentarios" + +#: wp-admin/options-discussion.php:58 +msgid "Comment author must fill out name and e-mail" +msgstr "El autor del comentario debe rellenar el nombre y el correo electrónico" + +#: wp-admin/options-discussion.php:62 +msgid "Users must be registered and logged in to comment" +msgstr "Los usuarios deben registrarse e identificarse para comentar" + +#: wp-admin/options-discussion.php:69 +msgid "Automatically close comments on articles older than %s days" +msgstr "Cerrar automáticamente los comentarios en las entradas con más de %s días" + +#: wp-admin/options-discussion.php:85 +msgid "Enable threaded (nested) comments %s levels deep" +msgstr "Activar los comentarios anidados hasta %s niveles" + +#: wp-admin/options-discussion.php:94 +msgid "last" +msgstr "última" + +#: wp-admin/options-discussion.php:96 +msgid "first" +msgstr "primera" + +#: wp-admin/options-discussion.php:98 +msgid "Break comments into pages with %1$s top level comments per page and the %2$s page displayed by default" +msgstr "Separa los comentarios en páginas de %1$s comentarios por página y se muestra la %2$s página por defecto" + +#: wp-admin/options-discussion.php:106 +msgid "older" +msgstr "más antiguos" + +#: wp-admin/options-discussion.php:108 +msgid "newer" +msgstr "más recientes" + +#: wp-admin/options-discussion.php:110 +msgid "Comments should be displayed with the %s comments at the top of each page" +msgstr "Los comentarios se ordenarán con los %s al principio" + +#: wp-admin/options-discussion.php:116 wp-admin/options-discussion.php:117 +msgid "E-mail me whenever" +msgstr "Enviarme un correo electrónico cuando" + +#: wp-admin/options-discussion.php:120 +msgid "Anyone posts a comment" +msgstr "Alguien envía un comentario" + +#: wp-admin/options-discussion.php:124 +msgid "A comment is held for moderation" +msgstr "Se ha recibido un comentario para moderar" + +#: wp-admin/options-discussion.php:128 wp-admin/options-discussion.php:129 +msgid "Before a comment appears" +msgstr "Para que un comentario aparezca" + +#: wp-admin/options-discussion.php:132 +msgid "An administrator must always approve the comment" +msgstr "Un administrador debe aprobar el comentario" + +#: wp-admin/options-discussion.php:134 +msgid "Comment author must have a previously approved comment" +msgstr "El autor del comentario debe tener un comentario previamente aprobado" + +#: wp-admin/options-discussion.php:138 wp-admin/options-discussion.php:139 +msgid "Comment Moderation" +msgstr "Moderación de comentarios" + +#: wp-admin/options-discussion.php:140 +msgid "Hold a comment in the queue if it contains %s or more links. (A common characteristic of comment spam is a large number of hyperlinks.)" +msgstr "Mantener un comentario en espera si contiene más de %s enlaces (una característica común del spam en comentarios es el gran número de enlaces)." + +#: wp-admin/options-discussion.php:142 +msgid "When a comment contains any of these words in its content, name, URL, e-mail, or IP, it will be held in the moderation queue. One word or IP per line. It will match inside words, so “press” will match “WordPress”." +msgstr "Mantener en la cola de moderación todo comentario que incluya cualquiera de las siguientes palabras en su contenido, nombre, URL, e-mail o IP. Una palabra o IP por línea. Atención a las coincidencias en el interior de palabras: “press” coincidirá con “WordPress”." + +#: wp-admin/options-discussion.php:149 wp-admin/options-discussion.php:150 +msgid "Comment Blacklist" +msgstr "Lista negra de comentarios" + +#: wp-admin/options-discussion.php:151 +msgid "When a comment contains any of these words in its content, name, URL, e-mail, or IP, it will be marked as spam. One word or IP per line. It will match inside words, so “press” will match “WordPress”." +msgstr "Cuando un comentario contenga cualquiera de estas palabras en su contenido, nombre, URL, correo electrónico, o IP, será marcado como spam. Una palabra o IP por línea. Tendrá en cuenta las coincidencias parciales, así que “press” coincidirá con “WordPress”." + +#: wp-admin/options-discussion.php:160 +msgid "Avatars" +msgstr "Avatares" + +#: wp-admin/options-discussion.php:168 wp-admin/options-discussion.php:169 +msgid "Avatar Display" +msgstr "Visibilidad" + +#: wp-admin/options-discussion.php:171 +msgid "Don’t show Avatars" +msgstr "No mostrar avatares" + +#: wp-admin/options-discussion.php:171 +msgid "Show Avatars" +msgstr "Mostrar avatares" + +#: wp-admin/options-discussion.php:180 wp-admin/options-discussion.php:181 +msgid "Maximum Rating" +msgstr "Calificación máxima" + +#: wp-admin/options-discussion.php:186 +msgid "G — Suitable for all audiences" +msgstr "G — Para todos los públicos" + +#: wp-admin/options-discussion.php:188 +msgid "PG — Possibly offensive, usually for audiences 13 and above" +msgstr "PG — Posiblemente ofensivo, normalmente para mayores de 13 años" + +#: wp-admin/options-discussion.php:190 +msgid "R — Intended for adult audiences above 17" +msgstr "R — Destinado a un público adulto mayor de 17" + +#: wp-admin/options-discussion.php:192 +msgid "X — Even more mature than above" +msgstr "X — Contenido más adulto que los anteriores." + +#: wp-admin/options-discussion.php:203 wp-admin/options-discussion.php:204 +msgid "Default Avatar" +msgstr "Avatar por defecto" + +#: wp-admin/options-discussion.php:206 +msgid "For users without a custom avatar of their own, you can either display a generic logo or a generated one based on their e-mail address." +msgstr "Para usuarios que no tengan un avatar personalizado podemos mostrar uno genérico o uno basado en su dirección de correo electrónico." + +#: wp-admin/options-discussion.php:210 +msgid "Mystery Man" +msgstr "Hombre misterioso" + +#: wp-admin/options-discussion.php:211 +msgid "Blank" +msgstr "Sin avatar" + +#: wp-admin/options-discussion.php:212 +msgid "Gravatar Logo" +msgstr "Logo de Gravatar" + +#: wp-admin/options-discussion.php:213 +msgid "Identicon (Generated)" +msgstr "Identicon (autogenerado)" + +#: wp-admin/options-discussion.php:214 +msgid "Wavatar (Generated)" +msgstr "Wavatar (autogenerado)" + +#: wp-admin/options-discussion.php:215 +msgid "MonsterID (Generated)" +msgstr "MonsterID (autogenerado)" + +#: wp-admin/options-general.php:15 +msgid "General Settings" +msgstr "Ajustes generales" + +#: wp-admin/options-general.php:18 +msgctxt "timezone date format" +msgid "Y-m-d G:i:s" +msgstr "d-m-Y G:i" + +#: wp-admin/options-general.php:89 +msgid "Tagline" +msgstr "Descripción corta" + +#: wp-admin/options-general.php:95 +msgid "WordPress address (URL)" +msgstr "Dirección de WordPress (URL)" + +#: wp-admin/options-general.php:104 wp-admin/options-general.php:123 +msgid "E-mail address" +msgstr "Dirección de correo electrónico" + +#: wp-admin/options-general.php:106 +msgid "This address is used for admin purposes, like new user notification." +msgstr "Esta dirección se usa sólo con fines administrativos, como para la notificación de nuevos usuarios." + +#: wp-admin/options-general.php:109 wp-admin/options-general.php:110 +msgid "Membership" +msgstr "Miembros" + +#: wp-admin/options-general.php:112 +msgid "Anyone can register" +msgstr "Cualquiera puede registrarse" + +#: wp-admin/options-general.php:116 +msgid "New User Default Role" +msgstr "Perfil predeterminado para nuevos usuarios" + +#: wp-admin/options-general.php:158 +msgid "Timezone" +msgstr "Zona horaria" + +#: wp-admin/options-general.php:165 +msgid "UTC time is %s" +msgstr "La hora UTC es %s" + +#: wp-admin/options-general.php:167 +msgid "Local time is %1$s" +msgstr "La hora local es %1$s" + +#: wp-admin/options-general.php:170 +msgid "Choose a city in the same timezone as you." +msgstr "Elige una ciudad que esté en la misma zona horaria que la tuya." + +#: wp-admin/options-general.php:181 +msgid "This timezone is currently in standard time." +msgstr "Esta zona horaria se encuentra actualmente en horario de invierno." + +#: wp-admin/options-general.php:203 +msgid "Standard time begins on: %s." +msgstr "El horario de invierno comienza el: %s." + +#: wp-includes/class-wp-xmlrpc-server.php:326 wp-admin/options-general.php:219 +#: wp-admin/options-general.php:221 +msgid "Date Format" +msgstr "Formato de fecha" + +#: wp-admin/options-general.php:244 wp-admin/options-general.php:276 +msgid "Custom:" +msgstr "Personalizado:" + +#: wp-includes/class-wp-xmlrpc-server.php:331 wp-admin/options-general.php:252 +#: wp-admin/options-general.php:254 +msgid "Time Format" +msgstr "Formato de hora" + +#: wp-admin/options-general.php:283 +msgid "Week Starts On" +msgstr "La semana comienza el" + +#: wp-admin/options-head.php:16 wp-admin/options.php:158 +msgid "Settings saved." +msgstr "Ajustes guardados." + +#: wp-admin/options-media.php:15 +msgid "Media Settings" +msgstr "Ajustes de medios" + +#: wp-admin/options-media.php:39 +msgid "Image sizes" +msgstr "Tamaño de las imágenes" + +#: wp-admin/options-media.php:40 +msgid "The sizes listed below determine the maximum dimensions in pixels to use when inserting an image into the body of a post." +msgstr "Los tamaños que se listan a continuación indican las dimensiones máximas a utilizar para insertar una imagen en el contenido de una entrada." + +#: wp-admin/options-media.php:44 +msgid "Thumbnail size" +msgstr "Tamaño de la miniatura" + +#: wp-includes/js/tinymce/langs/wp-langs.php:495 +#: wp-includes/js/tinymce/langs/wp-langs.php:500 wp-admin/options-media.php:48 +#: wp-admin/options-media.php:94 +msgid "Height" +msgstr "Altura" + +#: wp-admin/options-media.php:51 +msgid "Crop thumbnail to exact dimensions (normally thumbnails are proportional)" +msgstr "Recortar las miniaturas en las dimensiones exactas (normalmente, las miniaturas son proporcionales)" + +#: wp-admin/options-media.php:56 wp-admin/options-media.php:57 +msgid "Medium size" +msgstr "Tamaño medio" + +#: wp-admin/options-media.php:58 wp-admin/options-media.php:68 +msgid "Max Width" +msgstr "Anchura máxima" + +#: wp-admin/options-media.php:60 wp-admin/options-media.php:70 +msgid "Max Height" +msgstr "Altura máxima" + +#: wp-admin/options-media.php:66 wp-admin/options-media.php:67 +msgid "Large size" +msgstr "Tamaño grande" + +#: wp-admin/options-media.php:78 +msgid "Embeds" +msgstr "Incrustados" + +#: wp-admin/options-media.php:83 +msgid "Auto-embeds" +msgstr "Auto-incrustados" + +#: wp-admin/options-media.php:90 +msgid "Maximum embed size" +msgstr "Tamaño máximo de incrustación" + +#: wp-admin/options-media.php:96 +msgid "If the width value is left blank, embeds will default to the max width of your theme." +msgstr "Si el valor del ancho se deja vacío, lo que incrustes se verá al valor máximo de ancho de tu tema." + +#: wp-admin/options-media.php:104 +msgid "Uploading Files" +msgstr "Subida de archivos" + +#: wp-admin/options-media.php:107 +msgid "Store uploads in this folder" +msgstr "Guardar los archivos subidos en esta carpeta" + +#: wp-admin/options-media.php:109 +msgid "Default is wp-content/uploads" +msgstr "El predeterminado es wp-content/uploads" + +#: wp-admin/options-media.php:114 +msgid "Full URL path to files" +msgstr "Ruta URL completa a los archivos" + +#: wp-admin/options-media.php:116 +msgid "Configuring this is optional. By default, it should be blank." +msgstr "Esta configuración es opcional. Por defecto debería estar en blanco." + +#: wp-admin/options-media.php:124 +msgid "Organize my uploads into month- and year-based folders" +msgstr "Organizar mis archivos subidos en carpetas basadas en mes y año" + +#: wp-admin/options-permalink.php:15 +msgid "Permalink Settings" +msgstr "Ajustes de los enlaces permanentes" + +#: wp-admin/options-permalink.php:133 +msgid "You should update your web.config now" +msgstr "Ahora debes actualizar tu web.config" + +#: wp-admin/options-permalink.php:135 +msgid "Permalink structure updated. Remove write access on web.config file now!" +msgstr "La estructura de enlaces permanentes se ha actualizado. Elimina el acceso de escritura en el archivo web.config ahora mismo." + +#: wp-admin/options-permalink.php:137 +msgid "Permalink structure updated" +msgstr "Estructura de enlaces permanentes actualizada" + +#: wp-admin/options-permalink.php:140 +msgid "You should update your .htaccess now." +msgstr "Ahora debes actualizar tu .htaccess" + +#: wp-admin/options-permalink.php:142 wp-admin/options-permalink.php:145 +msgid "Permalink structure updated." +msgstr "Estructura de enlaces permanentes actualizada." + +#: wp-admin/options-permalink.php:158 +msgid "By default WordPress uses web URLs which have question marks and lots of numbers in them, however WordPress offers you the ability to create a custom URL structure for your permalinks and archives. This can improve the aesthetics, usability, and forward-compatibility of your links. A number of tags are available, and here are some examples to get you started." +msgstr "Por defecto, WordPress usa URLs que tengan signos de interrogación y un montón de números. Sin embargo, WordPress ofrece la posibilidad de crear una estructura de URL para tus enlaces permanentes y archivos. Esto puede mejorar la estética, usabilidad y compatibilidad de tus enlaces. Hay disponibles ciertas etiquetas, y aquí hay algunos ejemplos para comenzar." + +#: wp-admin/options-permalink.php:174 +msgid "Common settings" +msgstr "Ajustes habituales" + +#: wp-includes/js/tinymce/langs/wp-langs.php:217 +#: wp-admin/options-permalink.php:177 +msgid "Default" +msgstr "Predeterminado" + +#: wp-admin/options-permalink.php:181 +msgid "Day and name" +msgstr "Día y nombre" + +#: wp-admin/options-permalink.php:185 +msgid "Month and name" +msgstr "Mes y nombre" + +#: wp-admin/options-permalink.php:189 +msgid "Numeric" +msgstr "Numérico" + +#: wp-admin/options-permalink.php:195 +msgid "Custom Structure" +msgstr "Estructura personalizada" + +#: wp-admin/options-permalink.php:205 +msgid "Optional" +msgstr "Opcional" + +#: wp-admin/options-permalink.php:207 +msgid "If you like, you may enter custom structures for your category and tag URLs here. For example, using topics as your category base would make your category links like http://example.org/topics/uncategorized/. If you leave these blank the defaults will be used." +msgstr "Si quieres, puedes introducir estructuras personalizadas para las URLs de las categorías y etiquetas. Por ejemplo, usar secciones como categoría base mostraría tus enlaces de categoría como http://ejemplo.org/index.php/secciones/general/. Si dejas esto en blanco se usará la opción predeterminada." + +#: wp-admin/options-permalink.php:209 +msgid "If you like, you may enter custom structures for your category and tag URLs here. For example, using topics as your category base would make your category links like http://example.org/index.php/topics/uncategorized/. If you leave these blank the defaults will be used." +msgstr "Si quieres, puedes introducir estructuras personalizadas para las URLs de las categorías y etiquetas. Por ejemplo, usar secciones como categoría base haría tus enlaces de categoría como http://ejemplo.org/index.php/secciones/general/. Si dejas esto en blanco se usará la opción predeterminada." + +#: wp-admin/options-permalink.php:214 +msgid "Category base" +msgstr "Categoría base" + +#: wp-admin/options-permalink.php:218 +msgid "Tag base" +msgstr "Etiqueta base" + +#: wp-admin/options-permalink.php:232 +msgid "If your web.config file were writable, we could do this automatically, but it isn’t so this is the url rewrite rule you should have in your web.config file. Click in the field and press CTRL + a to select all. Then insert this rule inside of the /<configuration>/<system.webServer>/<rewrite>/<rules> element in web.config file." +msgstr "Si tu archivo web.config tuviera permisos de escritura los cambios se harían automáticamente. Al no ser así, a continuación tienes las reglas de mod_rewrite que debes agregar manualmente a tu archivo web.config que se encuentra en el directorio raíz de WordPress. Haz clic en el área de texto y pulsa CTRL + a para seleccionar todo el texto. Después copia y pega las reglas de la configuración /<configuration>/<system.webServer>/<rewrite>/<rules> en tu archivo web.config." + +#: wp-admin/options-permalink.php:237 +msgid "If you temporarily make your web.config file writable for us to generate rewrite rules automatically, do not forget to revert the permissions after rule has been saved." +msgstr "Si temporalmente tienes que hacer el web.config editable para que podamos generar automaticamente las reglas de reescritura, no te olvides de volverlo a poner como estaba." + +#: wp-admin/options-permalink.php:239 +msgid "If the root directory of your site were writable, we could do this automatically, but it isn’t so this is the url rewrite rule you should have in your web.config file. Create a new file, called web.config in the root directory of your site. Click in the field and press CTRL + a to select all. Then insert this code into the web.config file." +msgstr "Si la carpeta raíz de tu sitio tuviera permisos de escritura, podríamos hacer este cambio automáticamente. Al no tener permisos de escritura, deberás editar tu web.config y añadirla a mano. Crea un nuevo archivo en la carpeta raíz de tu sitio y llámalo web.config. Haz clic en el siguiente campo y teclea CTRL + a para seleccionarlo todo. Luego pega este código en el fichero web.config." + +#: wp-admin/options-permalink.php:244 +msgid "If you temporarily make your site’s root directory writable for us to generate the web.config file automatically, do not forget to revert the permissions after the file has been created." +msgstr "Si das permisos temporales de escritura a la carpeta raíz de tu sitio para que se genere el archivo web.config automáticamente, no olvides revertir los permisos después de que se cree el archivo." + +#: wp-admin/options-permalink.php:249 +msgid "If your .htaccess file were writable, we could do this automatically, but it isn’t so these are the mod_rewrite rules you should have in your .htaccess file. Click in the field and press CTRL + a to select all." +msgstr "Si tu archivo .htaccess tuviera permisos de escritura los cambios se harían automáticamente, pero si no fuera así, aquí tienes las reglas de mod_rewrite que debes agregar manualmente a tu archivo .htaccess. Haz clic en el área de texto y pulsa CTRL + a o COMANDO + a para seleccionarlo todo." + +#: wp-admin/options-privacy.php:15 +msgid "Privacy Settings" +msgstr "Ajustes de privacidad" + +#: wp-admin/options-privacy.php:44 +msgid "I would like to block search engines, but allow normal visitors" +msgstr "Quiero bloquear los motores de búsqueda, pero permitir visitantes normales." + +#: wp-admin/options-reading.php:15 +msgid "Reading Settings" +msgstr "Ajustes de lectura" + +#: wp-admin/options-reading.php:78 wp-admin/options-reading.php:79 +msgid "Front page displays" +msgstr "La página inicial mostrará" + +#: wp-admin/options-reading.php:82 +msgid "Your latest posts" +msgstr "Tus últimas entradas" + +#: wp-admin/options-reading.php:87 +msgid "A static page (select below)" +msgstr "Una página estática (seleccionar abajo)" + +#: wp-admin/options-reading.php:91 +msgid "Front page: %s" +msgstr "Página inicial: %s" + +#: wp-admin/options-reading.php:92 +msgid "Posts page: %s" +msgstr "Página de entradas: %s" + +#: wp-admin/options-reading.php:95 +msgid "Warning: these pages should not be the same!" +msgstr "Atención: estas páginas no pueden ser las mismas." + +#: wp-admin/options-reading.php:101 +msgid "Blog pages show at most" +msgstr "Número máximo de entradas a mostrar en el sitio" + +#: wp-admin/options-reading.php:103 +msgid "posts" +msgstr "entradas" + +#: wp-admin/options-reading.php:107 +msgid "Syndication feeds show the most recent" +msgstr "Número máximo de entradas a mostrar en el feed" + +#: wp-admin/options-reading.php:111 wp-admin/options-reading.php:112 +msgid "For each article in a feed, show" +msgstr "Mostrar, para cada entrada en el feed," + +#: wp-admin/options-reading.php:113 +msgid "Full text" +msgstr "Texto completo" + +#: wp-admin/options-reading.php:114 +msgid "Summary" +msgstr "Resumen" + +#: wp-admin/options-reading.php:119 +msgid "Encoding for pages and feeds" +msgstr "Codificación para páginas y feeds" + +#: wp-admin/options-writing.php:15 +msgid "Writing Settings" +msgstr "Ajustes de escritura" + +#: wp-admin/options-writing.php:38 +msgid "Size of the post box" +msgstr "Tamaño de la caja de texto" + +#: wp-admin/options-writing.php:40 +msgid "lines" +msgstr "líneas" + +#: wp-admin/options-writing.php:43 wp-admin/options-writing.php:44 +msgid "Formatting" +msgstr "Formato" + +#: wp-admin/options-writing.php:47 +msgid "Convert emoticons like :-) and :-P to graphics on display" +msgstr "Convertir emoticonos como :-) y :-P a gráficos en pantalla" + +#: wp-admin/options-writing.php:48 +msgid "WordPress should correct invalidly nested XHTML automatically" +msgstr "WordPress corregirá de forma automática el XHTML incorrectamente anidado" + +#: wp-admin/options-writing.php:52 +msgid "Default Post Category" +msgstr "Categoría predeterminada para las entradas" + +#: wp-admin/options-writing.php:77 +msgid "Default Link Category" +msgstr "Categoría predeterminada para enlaces" + +#: wp-admin/options-writing.php:132 +msgid "Remote Publishing" +msgstr "Publicación remota" + +#: wp-admin/options-writing.php:133 +msgid "To post to WordPress from a desktop blogging client or remote website that uses the Atom Publishing Protocol or one of the XML-RPC publishing interfaces you must enable them below." +msgstr "Para enviar una entrada a WordPress desde un cliente de escritorio o sitio web que utilice el protocolo de publicación Atom o uno de los interfaces de publicación XML-RPC, debes autorizarlos antes." + +#: wp-admin/options-writing.php:136 wp-admin/options-writing.php:137 +msgid "Atom Publishing Protocol" +msgstr "Protocolo de publicación Atom" + +#: wp-admin/options-writing.php:140 +msgid "Enable the Atom Publishing Protocol." +msgstr "Activar el protocolo de publicación Atom." + +#: wp-admin/options-writing.php:144 wp-admin/options-writing.php:145 +#: wp-admin/credits.php:170 +msgid "XML-RPC" +msgstr "XML-RPC" + +#: wp-admin/options-writing.php:148 +msgid "Enable the WordPress, Movable Type, MetaWeblog and Blogger XML-RPC publishing protocols." +msgstr "Activar los protocolos de publicación XML-RPC para WordPress, Movable Type, MetaWeblog y Blogger." + +#: wp-admin/options-writing.php:99 +msgid "Post via e-mail" +msgstr "Publicar por correo electrónico" + +#: wp-admin/options-writing.php:100 +msgid "To post to WordPress by e-mail you must set up a secret e-mail account with POP3 access. Any mail received at this address will be posted, so it’s a good idea to keep this address very secret. Here are three random strings you could use: %s, %s, %s." +msgstr "Para publicar en WordPress por correo electrónico debes crear una cuenta de correo electrónico secreta con acceso POP3. Todo correo recibido en esta dirección será publicado, por ello es buena idea que mantengas esa dirección totalmente secreta. Aquí tienes tres cadenas aleatorias que puedes usar como nombre de cuenta: %s, %s, %s." + +#: wp-admin/options-writing.php:104 +msgid "Mail Server" +msgstr "Servidor de correo" + +#: wp-admin/options-writing.php:106 +msgid "Port" +msgstr "Puerto" + +#: wp-admin/options-writing.php:111 +msgid "Login Name" +msgstr "Nombre de acceso" + +#: wp-admin/options-writing.php:121 +msgid "Default Mail Category" +msgstr "Categoría predeterminada para publicar por correo electrónico" + +#: wp-admin/options-writing.php:155 +msgid "Update Services" +msgstr "Servicios de actualización" + +#: wp-admin/options-writing.php:159 +msgid "When you publish a new post, WordPress automatically notifies the following site update services. For more about this, see Update Services on the Codex. Separate multiple service URLs with line breaks." +msgstr "Cuando publicas una entrada nueva, WordPress lo notifica automáticamente a los siguientes servicios de actualización. Para más información, visita Update Services en el Codex. Separa las URL de distintos servicios con saltos de línea." + +#: wp-admin/options.php:113 +msgid "Error: options page not found." +msgstr "Error: no se encuentra la página de opciones." + +#: wp-admin/options.php:173 +msgid "All Settings" +msgstr "Todos los ajustes" + +#: wp-admin/plugin-editor.php:20 +msgid "Edit Plugins" +msgstr "Editar plugins" + +#: wp-admin/plugin-editor.php:104 +msgid "No such file exists! Double check the name and try again." +msgstr "¡El archivo no existe! Comprueba el nombre e inténtalo de nuevo." + +#: wp-admin/plugin-editor.php:111 +msgid "Files of this type are not editable." +msgstr "Los archivos de este tipo no son editables." + +#: wp-admin/theme-editor.php:122 +msgid "Function Name..." +msgstr "Nombre de la función..." + +#: wp-admin/plugin-editor.php:149 wp-admin/theme-editor.php:134 +msgid "File edited successfully." +msgstr "El archivo ha sido editado correctamente." + +#: wp-admin/plugin-editor.php:151 +msgid "This plugin has been deactivated because your changes resulted in a fatal error." +msgstr "El plugin ha sido desactivado porque tus cambios han provocado un error fatal." + +#: wp-admin/plugin-editor.php:167 +msgid "Editing %s (active)" +msgstr "Editando %s (activo)" + +#: wp-admin/plugin-editor.php:169 +msgid "Browsing %s (active)" +msgstr "Examinando %s (activo)" + +#: wp-admin/plugin-editor.php:172 +msgid "Editing %s (inactive)" +msgstr "Editando %s (inactivo)" + +#: wp-admin/plugin-editor.php:174 +msgid "Browsing %s (inactive)" +msgstr "Examinando %s (inactivo)" + +#: wp-admin/plugin-editor.php:180 +msgid "Select plugin to edit:" +msgstr "Elige el plugin a editar:" + +#: wp-admin/plugin-editor.php:202 +msgid "Plugin Files" +msgstr "Archivos del plugin" + +#: wp-admin/plugin-editor.php:231 wp-admin/theme-editor.php:233 +msgid "Documentation:" +msgstr "Documentación:" + +#: wp-admin/plugin-editor.php:231 wp-admin/theme-editor.php:235 +msgid "Lookup" +msgstr "Buscar" + +#: wp-admin/plugin-editor.php:235 +msgid "Warning: Making changes to active plugins is not recommended. If your changes cause a fatal error, the plugin will be automatically deactivated." +msgstr "Atención: No es recomendable realizar cambios en plugins activos. Si tus cambios provocan un error fatal, el plugin se desactivará automáticamente." + +#: wp-admin/plugin-editor.php:241 +msgid "Update File and Attempt to Reactivate" +msgstr "Actualizar archivo e intentar reactivarlo" + +#: wp-admin/plugin-editor.php:243 wp-admin/theme-editor.php:246 +msgid "Update File" +msgstr "Actualizar archivo" + +#: wp-admin/plugin-editor.php:248 wp-admin/theme-editor.php:248 +msgid "You need to make this file writable before you can save your changes. See the Codex for more information." +msgstr "Para guardar los cambios, es necesario que el archivo tenga permisos de escritura. Visita el codex para obtener más información." + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:33 +msgctxt "Plugin Installer" +msgid "Featured" +msgstr "Destacados" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:34 +msgctxt "Plugin Installer" +msgid "Popular" +msgstr "Populares" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:35 +msgctxt "Plugin Installer" +msgid "Newest" +msgstr "Recientes" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:36 +msgctxt "Plugin Installer" +msgid "Recently Updated" +msgstr "Actualizados recientemente" + +#: wp-admin/plugins.php:263 +msgid "%1$s by %2$s" +msgstr "%1$s por %2$s" + +#: wp-admin/plugins.php:272 +msgid "Are you sure you wish to delete these files?" +msgstr "¿Estás seguro de que deseas eliminar estos archivos?" + +#: wp-admin/plugins.php:282 +msgid "Yes, Delete these files" +msgstr "Sí, quiero borrar estos archivos" + +#: wp-admin/plugins.php:285 +msgid "No, Return me to the plugin list" +msgstr "No, quiero volver a la lista de plugins" + +#: wp-admin/plugins.php:288 +msgid "Click to view entire list of files which will be deleted" +msgstr "Pulsa aquí para ver la lista completa de archivos que serán eliminados" + +#: wp-admin/plugins.php:322 +msgid "Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here." +msgstr "Los plugins amplían las funcionalidades de WordPress. Una vez instalados, puedes activarlos o desactivarlos desde aquí." + +#: wp-admin/plugins.php:325 +msgid "If something goes wrong with a plugin and you can’t use WordPress, delete or rename that file in the %s directory and it will be automatically deactivated." +msgstr "Si algo va mal con un plugin y no puedes utilizar tu WordPress, borra o renombra ese archivo en el directorio %s y se desactivará automáticamente." + +#: wp-admin/plugins.php:339 +msgid "The plugin %s has been deactivated due to an error: %s" +msgstr "El plugin %s se ha desactivado debido a un error: %s" + +#: wp-admin/plugins.php:349 +msgid "Plugin could not be activated because it triggered a fatal error." +msgstr "El plugin no ha podido activarse porque ha provocado un error fatal." + +#: wp-admin/plugins.php:364 +msgid "Plugin could not be deleted due to an error: %s" +msgstr "El plugin no se ha podido eliminar debido a un error: %s" + +#: wp-admin/plugins.php:366 +msgid "The selected plugins have been deleted." +msgstr "Los plugins elegidos han sido eliminados." + +#: wp-admin/plugins.php:369 +msgid "Plugin activated." +msgstr "El plugin ha sido activado." + +#: wp-admin/plugins.php:371 +msgid "Selected plugins activated." +msgstr "Los plugins elegidos han sido activados." + +#: wp-admin/plugins.php:373 +msgid "Plugin deactivated." +msgstr "El plugin ha sido desactivado." + +#: wp-admin/plugins.php:375 +msgid "Selected plugins deactivated." +msgstr "Los plugins elegidos han sido desactivados." + +#: wp-admin/plugins.php:377 +msgid "No out of date plugins were selected." +msgstr "Ningún plugin actualizable elegido." + +#: wp-includes/js/tinymce/langs/wp-langs.php:307 +#: wp-admin/includes/class-wp-plugins-list-table.php:193 +msgid "Plugin" +msgstr "Plugin" + +#: wp-admin/includes/class-wp-plugins-list-table.php:368 +#: wp-admin/includes/class-wp-plugins-list-table.php:377 +msgid "Deactivate this plugin" +msgstr "Desactivar este plugin" + +#: wp-admin/includes/class-wp-plugins-list-table.php:368 +msgid "Network Deactivate" +msgstr "Desactivar para la red" + +#: wp-admin/includes/class-wp-upgrader.php:1285 +#: wp-admin/includes/class-wp-plugins-list-table.php:371 +msgid "Activate this plugin for all sites in this network" +msgstr "Activar este plugin para todos los sitios en esta red" + +#: wp-admin/includes/class-wp-upgrader.php:1285 +#: wp-admin/includes/class-wp-plugins-list-table.php:371 +msgid "Network Activate" +msgstr "Activar para la red" + +#: wp-admin/includes/class-wp-plugins-list-table.php:387 +msgid "Open this file in the Plugin Editor" +msgstr "Abrir este archivo en el editor de plugins" + +#: wp-admin/includes/class-wp-plugins-list-table.php:373 +#: wp-admin/includes/class-wp-plugins-list-table.php:382 +msgid "Delete this plugin" +msgstr "Borrar este plugin" + +#: wp-admin/includes/class-wp-plugins-list-table.php:437 +msgid "Visit plugin site" +msgstr "Visitar la web del plugin" + +#: wp-admin/includes/class-wp-plugins-list-table.php:292 +msgid "Clear List" +msgstr "Limpiar lista" + +#: wp-admin/includes/class-wp-plugins-list-table.php:212 +msgctxt "plugins" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "Todo (%s)" +msgstr[1] "Todos (%s)" + +#: wp-admin/includes/class-wp-plugins-list-table.php:215 +msgid "Active (%s)" +msgid_plural "Active (%s)" +msgstr[0] "Activo (%s)" +msgstr[1] "Activos (%s)" + +#: wp-admin/includes/class-wp-plugins-list-table.php:218 +msgid "Recently Active (%s)" +msgid_plural "Recently Active (%s)" +msgstr[0] "Activo recientemente (%s)" +msgstr[1] "Activos recientemente (%s)" + +#: wp-admin/includes/class-wp-plugins-list-table.php:221 +msgid "Inactive (%s)" +msgid_plural "Inactive (%s)" +msgstr[0] "Inactivo (%s)" +msgstr[1] "Inactivos (%s)" + +#: wp-admin/includes/class-wp-plugins-list-table.php:224 +msgid "Network (%s)" +msgid_plural "Network (%s)" +msgstr[0] "Red (%s)" +msgstr[1] "Red (%s)" + +#: wp-admin/includes/class-wp-plugins-list-table.php:183 +msgid "No plugins found." +msgstr "No se encontraron plugins." + +#: wp-admin/includes/class-wp-plugins-list-table.php:185 +msgid "You do not appear to have any plugins available at this time." +msgstr "No parece que tengas plugins disponibles en este momento." + +#: wp-admin/post.php:149 +msgid "You attempted to edit an item that doesn’t exist. Perhaps it was deleted?" +msgstr "Lo que intentas editar no existe. ¿Habrá sido borrado?" + +#: wp-admin/async-upload.php:38 wp-admin/post.php:152 +#: wp-admin/edit-tags.php:227 +msgid "You are not allowed to edit this item." +msgstr "No tienes autorización para editar esto." + +#: wp-admin/post.php:155 +msgid "You can’t edit this item because it is in the Trash. Please restore it and try again." +msgstr "No puedes editar esto ya que está en la Papelera. Sácala de la Papelera e inténtalo de nuevo." + +#: wp-admin/async-upload.php:35 wp-admin/post.php:158 +msgid "Unknown post type." +msgstr "Tipo de entrada desconocida." + +#: wp-admin/press-this.php:132 +msgid "Embed Code" +msgstr "Incrustar código" + +#: wp-admin/press-this.php:135 +msgid "Insert Video" +msgstr "Insertar vídeo" + +#: wp-admin/press-this.php:161 +msgid "Click to insert." +msgstr "Clic para insertar." + +#: wp-includes/js/tinymce/wp-mce-help.php:255 wp-admin/press-this.php:165 +#: wp-admin/press-this.php:193 +msgid "Insert Image" +msgstr "Insertar imagen" + +#: wp-admin/press-this.php:263 +msgid "Unable to retrieve images or no images on page." +msgstr "No se pueden extraer imágenes o no hay imágenes en la página." + +#: wp-admin/press-this.php:315 +msgid "click images to select" +msgstr "haz clic en las imágenes para seleccionar" + +#: wp-admin/press-this.php:315 +msgid "Add from URL" +msgstr "Añadir desde URL" + +#: wp-admin/press-this.php:315 +msgid "Refresh" +msgstr "Actualizar" + +#: wp-admin/press-this.php:417 +msgid "Loading..." +msgstr "Cargando..." + +#: wp-admin/press-this.php:570 wp-admin/press-this.php:574 +msgid "Post Tags" +msgstr "Etiquetas de las entradas" + +#: wp-admin/press-this.php:600 +msgid "Your post has been saved." +msgstr "Tu entrada ha sido guardada correctamente." + +#: wp-admin/press-this.php:600 +msgid "View post" +msgstr "Ver entrada" + +#: wp-admin/press-this.php:600 +msgid "Close Window" +msgstr "Cerrar ventana" + +#: wp-admin/press-this.php:626 wp-admin/press-this.php:627 +msgid "Insert an Image" +msgstr "Insertar imagen" + +#: wp-admin/press-this.php:629 +msgid "Embed a Video" +msgstr "Insertar vídeo" + +#: wp-includes/general-template.php:1808 wp-includes/general-template.php:1813 +#: wp-admin/includes/post.php:1789 wp-admin/press-this.php:616 +msgid "HTML" +msgstr "HTML" + +#: wp-includes/general-template.php:1809 wp-includes/general-template.php:1814 +#: wp-admin/includes/post.php:1788 wp-admin/press-this.php:617 +msgid "Visual" +msgstr "Visual" + +#: wp-admin/press-this.php:640 +msgid "via " +msgstr "vía " + +#: wp-admin/revision.php:96 +msgid "Compare Revisions of “%1$s”" +msgstr "Comparar revisiones de “%s”" + +#: wp-admin/revision.php:122 +msgid "Revision for “%1$s” created on %2$s" +msgstr "Revisión para “%1$s” creada el %2$s" + +#: wp-admin/revision.php:162 +msgid "Older: %s" +msgstr "Anteriores: %s" + +#: wp-admin/revision.php:163 +msgid "Newer: %s" +msgstr "Recientes: %s" + +#: wp-admin/revision.php:196 +msgid "These revisions are identical." +msgstr "Estas revisiones son idénticas." + +#: wp-includes/default-widgets.php:66 wp-includes/default-widgets.php:196 +#: wp-includes/default-widgets.php:262 wp-includes/default-widgets.php:317 +#: wp-includes/default-widgets.php:357 wp-includes/default-widgets.php:403 +#: wp-includes/default-widgets.php:489 wp-includes/default-widgets.php:582 +#: wp-includes/default-widgets.php:679 wp-includes/default-widgets.php:1026 +#: wp-includes/default-widgets.php:1099 +#: wp-content/plugins/akismet/widget.php:51 +msgid "Title:" +msgstr "Título:" + +#: wp-admin/themes.php:123 wp-admin/includes/class-wp-themes-list-table.php:193 +msgid "Tags:" +msgstr "Etiquetas:" + +#: wp-includes/script-loader.php:336 wp-includes/taxonomy.php:411 +msgid "Separate tags with commas" +msgstr "Separa las etiquetas con comas." + +#: wp-admin/theme-editor.php:20 +msgid "Edit Themes" +msgstr "Editar temas" + +#: wp-admin/theme-editor.php:52 +msgid "The requested theme does not exist." +msgstr "El tema solicitado no existe." + +#: wp-admin/theme-editor.php:152 +msgid "Select theme to edit:" +msgstr "Elige el tema a editar:" + +#: wp-admin/theme-editor.php:173 +msgid "Templates" +msgstr "Plantillas" + +#: wp-admin/theme-editor.php:254 +msgid "Oops, no such file exists! Double check the name and try again, merci." +msgstr "¡El archivo no existe! Comprueba el nombre e inténtalo de nuevo, gracias." + +#: wp-admin/includes/class-wp-theme-install-list-table.php:33 +msgctxt "Theme Installer" +msgid "Featured" +msgstr "Destacados" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:35 +msgctxt "Theme Installer" +msgid "Newest" +msgstr "Recientes" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:36 +msgctxt "Theme Installer" +msgid "Recently Updated" +msgstr "Actualizados recientemente" + +#: wp-admin/themes.php:61 +msgid "The active theme is broken. Reverting to the default theme." +msgstr "El tema activo está dañado. Volviendo al tema por defecto." + +#: wp-admin/themes.php:66 +msgid "New theme activated. Visit site" +msgstr "Nuevo tema activado. Visitar sitio" + +#: wp-admin/themes.php:69 +msgid "Theme deleted." +msgstr "El tema ha sido eliminado." + +#: wp-admin/themes.php:82 +msgid "Current Theme" +msgstr "Tema actual" + +#: wp-admin/themes.php:85 +msgid "Current theme preview" +msgstr "Vista previa del tema actual" + +#: wp-admin/themes.php:89 wp-admin/includes/class-wp-themes-list-table.php:183 +msgid "%1$s %2$s by %3$s" +msgstr "%1$s %2$s por %3$s" + +#: wp-admin/includes/class-wp-themes-list-table.php:190 +msgid "All of this theme’s files are located in %2$s." +msgstr "Todos los archivos de este tema se encuentran en %2$s." + +#: wp-admin/themes.php:139 +msgid "Available Themes" +msgstr "Temas disponibles" + +#: wp-admin/includes/class-wp-themes-list-table.php:162 +msgid "Preview of “%s”" +msgstr "Vista previa de “%s”" + +#: wp-admin/includes/class-wp-themes-list-table.php:171 +msgid "" +"You are about to delete this theme '%s'\n" +" 'Cancel' to stop, 'OK' to delete." +msgstr "" +"Estás a punto de borrar este tema '%s'\n" +" 'Aceptar' para borrar, 'Cancelar' para salir." + +#: wp-admin/themes.php:207 +msgid "Broken Themes" +msgstr "Temas dañados" + +#: wp-admin/tools.php:33 wp-admin/options-writing.php:89 +msgid "Press This is a bookmarklet: a little app that runs in your browser and lets you grab bits of the web." +msgstr "Publicar esto es un marcador: una pequeña aplicación que se ejecuta en el navegador y permite coger secciones de la web." + +#: wp-admin/tools.php:36 wp-admin/options-writing.php:91 +msgid "Drag-and-drop the following link to your bookmarks bar or right click it and add it to your favorites for a posting shortcut." +msgstr "Arrastra el siguente enlace y colócalo en tu barra de marcadores o haz clic con el botón derecho para añadirlo en tu lista de favoritos como un atajo de publicación de entradas." + +#: wp-admin/update-core.php:36 +msgid "Download nightly build" +msgstr "Descargando la última versión de desarrollo" + +#: wp-admin/update-core.php:56 +msgid "Download %s" +msgstr "Descargar %s" + +#: wp-admin/update-core.php:78 +msgid "Hide this update" +msgstr "Ocultar esta actualización" + +#: wp-admin/update-core.php:80 +msgid "Bring back this update" +msgstr "Volver a mostrar esta actualización" + +#: wp-admin/update-core.php:83 +msgid "This localized version contains both the translation and various other localization fixes. You can skip upgrading if you want to keep your current translation." +msgstr "Esta versión traducida contiene tanto la traducción como otros ajustes de traducción. Puedes saltarte la actualización si quieres mantener la traducción actual." + +#: wp-admin/update-core.php:95 wp-admin/update-core.php:107 +msgid "Show hidden updates" +msgstr "Mostrar actualizaciones ocultas" + +#: wp-admin/update-core.php:96 +msgid "Hide hidden updates" +msgstr "Ocultar actualizaciones ocultas" + +#: wp-includes/js/tinymce/langs/wp-langs.php:150 wp-admin/update-core.php:211 +#: wp-admin/update-core.php:218 wp-admin/update-core.php:284 +#: wp-admin/update-core.php:291 wp-admin/includes/nav-menu.php:781 +#: wp-admin/includes/nav-menu.php:958 +msgid "Select All" +msgstr "Elegir todo" + +#: wp-admin/update-core.php:227 +msgid "Compatibility with WordPress %1$s: 100%% (according to its author)" +msgstr "Compatibilidad con WordPress %1$s: 100%% (según su autor)" + +#: wp-admin/update-core.php:230 wp-admin/update-core.php:238 +msgid "Compatibility with WordPress %1$s: %2$d%% (%3$d \"works\" votes out of %4$d total)" +msgstr "Compatibilidad con WordPress %1$s: %2$d%% (%3$d votos de \"funciona\" de un total de %4$d)" + +#: wp-admin/update-core.php:232 wp-admin/update-core.php:240 +msgid "Compatibility with WordPress %1$s: Unknown" +msgstr "Compatibilidad con WordPress %1$s: Desconocida" + +#: wp-admin/update-core.php:362 +msgid "Installation Failed" +msgstr "Instalación fallida" + +#: wp-admin/update.php:78 +msgid "Plugin Reactivation" +msgstr "Reactivación del plugin" + +#: wp-admin/update.php:80 +msgid "Plugin reactivated successfully." +msgstr "El plugin ha sido reactivado." + +#: wp-admin/update.php:83 +msgid "Plugin failed to reactivate due to a fatal error." +msgstr "El plugin no ha sido reactivado debido a un error fatal." + +#: wp-admin/update.php:108 +msgid "Installing Plugin: %s" +msgstr "Instalando plugin: %s" + +#: wp-admin/update.php:130 +msgid "Upload Plugin" +msgstr "Subir plugin" + +#: wp-admin/update.php:135 +msgid "Installing Plugin from uploaded file: %s" +msgstr "Instalando plugin desde el archivo: %s" + +#: wp-admin/update.php:211 +msgid "Installing Theme: %s" +msgstr "Instalando tema: %s" + +#: wp-admin/update.php:230 +msgid "Upload Theme" +msgstr "Subir tema" + +#: wp-admin/update.php:237 +msgid "Installing Theme from uploaded file: %s" +msgstr "Instalando tema desde el archivo: %s" + +#: wp-admin/upgrade.php:61 +msgid "Your WordPress database is already up-to-date!" +msgstr "¡Tu base de datos de WordPress ya está actualizada!" + +#: wp-admin/upgrade.php:98 +msgid "%s queries" +msgstr "%s consultas" + +#: wp-admin/upgrade.php:100 +msgid "%s seconds" +msgstr "%s segundos" + +#: wp-admin/upload.php:42 +msgid "You are not allowed to scan for lost attachments." +msgstr "No tienes autorización para buscar adjuntos perdidos." + +#: wp-admin/upload.php:95 +msgid "You are not allowed to move this post to the trash." +msgstr "No tienes autorización para mover esta entrada a la papelera." + +#: wp-admin/upload.php:105 +msgid "You are not allowed to move this post out of the trash." +msgstr "No tienes autorización para sacar esta entrada de la papelera." + +#: wp-admin/upload.php:115 +msgid "You are not allowed to delete this post." +msgstr "No tienes autorización para borrar esta entrada." + +#: wp-admin/upload.php:171 +msgid "Reattached %d attachment." +msgid_plural "Reattached %d attachments." +msgstr[0] "Se ha vuelto a adjuntar %d adjunto." +msgstr[1] "Se han vuelto a adjuntar %d adjuntos." + +#: wp-admin/upload.php:176 +msgid "Media attachment permanently deleted." +msgid_plural "%d media attachments permanently deleted." +msgstr[0] "Medio adjunto borrado permanentemente." +msgstr[1] "%d medios adjuntos borrados permanentemente." + +#: wp-admin/upload.php:181 +msgid "Media attachment moved to the trash." +msgid_plural "%d media attachments moved to the trash." +msgstr[0] "Medio adjunto movido a la papelera." +msgstr[1] "%d medios adjuntos movidos a la papelera." + +#: wp-admin/upload.php:187 +msgid "Media attachment restored from the trash." +msgid_plural "%d media attachments restored from the trash." +msgstr[0] "Medio adjunto restaurado de la papelera." +msgstr[1] "%d medios adjuntos restaurados de la papelera." + +#: wp-admin/upload.php:192 +msgid "Media permanently deleted." +msgstr "Medio borrado permanentemente." + +#: wp-admin/upload.php:193 +msgid "Error saving media attachment." +msgstr "Error al guardar el archivo." + +#: wp-admin/upload.php:194 +msgid "Media moved to the trash." +msgstr "Medios movidos a la papelera." + +#: wp-admin/upload.php:195 +msgid "Media restored from the trash." +msgstr "Medios restaurados de la papelera." + +#: wp-admin/includes/class-wp-media-list-table.php:57 +msgctxt "uploaded files" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "Todo (%s)" +msgstr[1] "Todos (%s)" + +#: wp-admin/includes/class-wp-media-list-table.php:69 +msgctxt "detached files" +msgid "Unattached (%s)" +msgid_plural "Unattached (%s)" +msgstr[0] "Sin adjuntar (%s)" +msgstr[1] "Sin adjuntar (%s)" + +#: wp-admin/includes/class-wp-media-list-table.php:72 +msgctxt "uploaded files" +msgid "Trash (%s)" +msgid_plural "Trash (%s)" +msgstr[0] "Papelera (%s)" +msgstr[1] "Papelera (%s)" + +#: wp-admin/includes/class-wp-media-list-table.php:81 +msgid "Attach to a post" +msgstr "Adjuntar a una entrada" + +#: wp-admin/includes/class-wp-media-list-table.php:100 +msgid "Scan for lost attachments" +msgstr "Buscar adjuntos perdidos" + +#: wp-admin/user-edit.php:28 +msgid "Edit User" +msgstr "Editar usuario" + +#: wp-admin/user-edit.php:22 wp-admin/user-edit.php:24 +msgid "Invalid user ID." +msgstr "El ID del usuario no es válido." + +#: wp-admin/user-edit.php:66 +msgid "Use https" +msgstr "Usar https" + +#: wp-admin/user-edit.php:67 +msgid "Always use https when visiting the admin" +msgstr "Usar siempre https para visitar la administración" + +#: wp-admin/user-edit.php:75 wp-admin/user-edit.php:102 +#: wp-admin/user-edit.php:149 +msgid "You do not have permission to edit this user." +msgstr "No tienes autorización para editar este usuario." + +#: wp-admin/user-edit.php:159 +msgid "User updated." +msgstr "El usuario ha sido actualizado." + +#: wp-admin/user-edit.php:193 +msgid "Personal Options" +msgstr "Opciones personales" + +#: wp-admin/user-edit.php:198 +msgid "Visual Editor" +msgstr "Editor visual" + +#: wp-admin/user-edit.php:199 +msgid "Disable the visual editor when writing" +msgstr "Desactivar el editor visual al escribir" + +#: wp-admin/includes/misc.php:567 wp-admin/user-edit.php:204 +msgid "Admin Color Scheme" +msgstr "Esquema de color de administración" + +#: wp-admin/user-edit.php:212 +msgid "Enable keyboard shortcuts for comment moderation." +msgstr "Activar los atajos del teclado para la moderación de comentarios." + +#: wp-admin/user-new.php:296 wp-admin/user-edit.php:274 +msgid "First Name" +msgstr "Nombre" + +#: wp-admin/user-new.php:300 wp-admin/user-edit.php:279 +msgid "Last Name" +msgstr "Apellidos" + +#: wp-admin/user-edit.php:284 +msgid "Nickname" +msgstr "Alias" + +#: wp-includes/theme-compat/comments.php:78 +#: wp-includes/theme-compat/comments.php:81 wp-admin/user-new.php:287 +#: wp-admin/user-new.php:291 wp-admin/user-edit.php:284 +#: wp-admin/user-edit.php:329 +msgid "(required)" +msgstr "(requerido)" + +#: wp-admin/user-edit.php:289 +msgid "Display name publicly as" +msgstr "Mostrar este nombre públicamente" + +#: wp-admin/user-edit.php:325 +msgid "Contact Info" +msgstr "Información de contacto" + +#: wp-includes/theme-compat/comments.php:84 +#: wp-includes/comment-template.php:1527 wp-admin/user-new.php:304 +#: wp-admin/user-edit.php:342 +msgid "Website" +msgstr "Web" + +#: wp-admin/user-edit.php:358 +msgid "About Yourself" +msgstr "Acerca de ti" + +#: wp-admin/user-edit.php:358 +msgid "About the user" +msgstr "Acerca del usuario" + +#: wp-admin/user-edit.php:362 +msgid "Biographical Info" +msgstr "Información biográfica" + +#: wp-admin/user-edit.php:364 +msgid "Share a little biographical information to fill out your profile. This may be shown publicly." +msgstr "Incluye alguna información biográfica en tu perfil. Podrá mostrarse públicamente." + +#: wp-admin/user-edit.php:372 +msgid "New Password" +msgstr "Nueva contraseña" + +#: wp-admin/user-edit.php:373 +msgid "If you would like to change the password type a new one. Otherwise leave this blank." +msgstr "Si deseas cambiar la contraseña del usuario, escribe aquí dos veces la nueva. En caso contrario, deja las casillas en blanco." + +#: wp-admin/user-edit.php:374 +msgid "Type your new password again." +msgstr "Teclea tu nueva contraseña otra vez." + +#: wp-admin/user-edit.php:393 +msgid "Additional Capabilities" +msgstr "Capacidades adicionales" + +#: wp-admin/user-edit.php:412 +msgid "Update Profile" +msgstr "Actualizar perfil" + +#: wp-admin/user-edit.php:412 +msgid "Update User" +msgstr "Actualizar usuario" + +#: wp-admin/user-new.php:75 +msgid "" +"Hi,\n" +"\n" +"You have been invited to join '%s' at\n" +"%s as a %s.\n" +"Please click the following link to confirm the invite:\n" +"%s\n" +msgstr "" +"Hola,\n" +"\n" +"Has sido invitado a participar de '%s' en\n" +"%s como %s.\n" +"Por favor, haz clic en el enlace para aceptar la invitación:\n" +"%s\n" + +#: wp-admin/user-new.php:76 +msgid "[%s] Joining confirmation" +msgstr "[%s] Esperando confirmación" + +#: wp-admin/user-new.php:129 wp-admin/user-new.php:265 wp-admin/menu.php:213 +#: wp-admin/menu.php:215 +msgid "Add New User" +msgstr "Añadir nuevo usuario" + +#: wp-admin/user-new.php:163 +msgid "Invitation email sent to new user. A confirmation link must be clicked before their account is created." +msgstr "La invitación ha sido enviada al nuevo usuario por correo electrónico. Deberá hacer clic en el enlace de confirmación para que su cuenta sea creada." + +#: wp-admin/user-new.php:309 +msgid "(twice, required)" +msgstr "(dos veces, requerido)" + +#: wp-admin/user-new.php:319 +msgid "Send Password?" +msgstr "¿Enviar Contraseña?" + +#: wp-admin/user-new.php:320 +msgid "Send this password to the new user by email." +msgstr "Enviar esta contraseña al nuevo usuario por correo electrónico." + +#: wp-admin/user-new.php:253 wp-admin/user-new.php:337 +msgid "Skip Confirmation Email" +msgstr "No enviar el correo electrónico de confirmación" + +#: wp-admin/users.php:52 wp-admin/users.php:69 +msgid "You can’t edit that user." +msgstr "No puedes editar ese usuario." + +#: wp-admin/users.php:101 wp-admin/users.php:148 +msgid "You can’t delete users." +msgstr "No puedes borrar usuarios." + +#: wp-admin/users.php:163 +msgid "Delete Users" +msgstr "Borrar usuarios" + +#: wp-admin/users.php:172 +msgid "ID #%1s: %2s The current user will not be deleted." +msgstr "ID #%1s: %2s El usuario actual no se borrará." + +#: wp-admin/users.php:174 wp-admin/users.php:277 +msgid "ID #%1s: %2s" +msgstr "ID #%1s: %2s" + +#: wp-admin/users.php:181 +msgid "What should be done with posts and links owned by this user?" +msgid_plural "What should be done with posts and links owned by these users?" +msgstr[0] "¿Qué debe hacerse con los enlaces y entradas que le pertenecen?" +msgstr[1] "" + +#: wp-admin/users.php:184 +msgid "Delete all posts and links." +msgstr "Borrar todas las entradas y enlaces." + +#: wp-admin/users.php:186 +msgid "Attribute all posts and links to:" +msgstr "Atribuir todas las entradas y enlaces a:" + +#: wp-admin/users.php:190 +msgid "Confirm Deletion" +msgstr "Confirmar borrado" + +#: wp-admin/users.php:192 +msgid "There are no valid users selected for deletion." +msgstr "No se han seleccionado usuarios válidos para borrar." + +#: wp-admin/users.php:315 +msgid "%s user deleted" +msgid_plural "%s users deleted" +msgstr[0] "%s usuario borrado" +msgstr[1] "%s usuarios borrados" + +#: wp-admin/users.php:318 +msgid "New user created." +msgstr "Nuevo usuario creado." + +#: wp-admin/users.php:321 +msgid "Changed roles." +msgstr "Cambiar perfil." + +#: wp-admin/users.php:324 +msgid "The current user’s role must have user editing capabilities." +msgstr "El perfil del usuario actual debería poder editar usuarios." + +#: wp-admin/users.php:325 +msgid "Other user roles have been changed." +msgstr "Se han cambiado los perfiles de los otros usuarios." + +#: wp-admin/users.php:328 +msgid "You can’t delete the current user." +msgstr "No puedes borrar el usuario actual." + +#: wp-admin/users.php:329 +msgid "Other users have been deleted." +msgstr "Se han eliminado los otros usuarios." + +#: wp-admin/includes/class-wp-users-list-table.php:101 +msgctxt "users" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "Todo (%s)" +msgstr[1] "Todos (%s)" + +#: wp-admin/includes/class-wp-users-list-table.php:115 +msgid "%1$s (%2$s)" +msgstr "%1$s (%2$s)" + +#: wp-admin/includes/class-wp-users-list-table.php:143 +#: wp-admin/includes/class-wp-users-list-table.php:145 +msgid "Change role to…" +msgstr "Cambiar perfil a…" + +#: wp-admin/includes/class-wp-users-list-table.php:148 +msgid "Change" +msgstr "Cambiar" + +#: wp-includes/functions.php:3236 wp-includes/admin-bar.php:308 +#: wp-admin/widgets.php:33 +msgid "Widgets" +msgstr "Widgets" + +#: wp-admin/widgets.php:51 wp-admin/widgets.php:374 +msgid "Inactive Widgets" +msgstr "Widgets inactivos" + +#: wp-admin/widgets.php:143 +msgid "No Sidebars Defined" +msgstr "No hay barras laterales definidas" + +#: wp-admin/widgets.php:145 +msgid "The theme you are currently using isn’t widget-aware, meaning that it has no sidebars that you are able to change. For information on making your theme widget-aware, please follow these instructions." +msgstr "Estás viendo este mensaje porque el tema que estás usando actualmente no está preparado para widgets. Esto significa que no tiene barras laterales que puedas cambiar. Para información de cómo preparar tu tema para widgets, por favor sigue estas instrucciones." + +#: wp-admin/widgets.php:265 +msgid "Widget %s" +msgstr "Widget %s" + +#: wp-admin/widgets.php:276 +msgid "Select both the sidebar for this widget and the position of the widget in that sidebar." +msgstr "Selecciona la barra lateral y la posición en la que irá el widget." + +#: wp-admin/custom-background.php:252 wp-admin/widgets.php:278 +msgid "Position" +msgstr "Posición" + +#: wp-admin/widgets.php:316 +msgid "Save Widget" +msgstr "Guardar Widget" + +#: wp-admin/widgets.php:332 +msgid "Changes saved." +msgstr "Cambios guardados." + +#: wp-admin/widgets.php:336 +msgid "Error while saving." +msgstr "Error al guardar los cambios." + +#: wp-admin/widgets.php:337 +msgid "Error in displaying the widget settings form." +msgstr "Error al mostrar el formulario con las opciones del widget." + +#: wp-admin/widgets.php:360 +msgid "Available Widgets" +msgstr "Widgets disponibles" + +#: wp-admin/widgets.php:362 +msgid "Drag widgets from here to a sidebar on the right to activate them. Drag widgets back here to deactivate them and delete their settings." +msgstr "Arrastra los widgets de aquí a la barra de la derecha para activarlos. Arrastra los widgets aquí desde la barra de la derecha para desactivarlos y eliminar su configuración." + +#: wp-admin/widgets.php:377 +msgid "Drag widgets here to remove them from the sidebar but keep their settings." +msgstr "Arrastra los widgets aquí para eliminarlos de la barra lateral pero manteniendo su configuración." + +#: wp-app.php:420 +msgid "Sorry, you do not have the right to edit/publish new posts." +msgstr "Lo sentimos, no tienes autorización para editar/publicar nuevas entradas." + +#: wp-includes/class-wp-xmlrpc-server.php:2038 +#: wp-includes/class-wp-xmlrpc-server.php:2405 wp-app.php:445 wp-app.php:640 +#: wp-app.php:826 +msgid "Sorry, your entry could not be posted. Something wrong happened." +msgstr "Disculpa, ha sido imposible publicar la entrada. Algo ha ocurrido." + +#: wp-app.php:472 +msgid "Sorry, you do not have the right to access this post." +msgstr "Lo sentimos, no tienes autorización para acceder a esta entrada." + +#: wp-includes/class-wp-xmlrpc-server.php:2078 wp-app.php:506 wp-app.php:672 +#: wp-app.php:745 wp-app.php:795 +msgid "Sorry, you do not have the right to edit this post." +msgstr "Lo sentimos, no tienes autorización para editar esta entrada." + +#: wp-includes/class-wp-xmlrpc-server.php:2094 wp-app.php:529 wp-app.php:688 +msgid "For some strange yet very annoying reason, this post could not be edited." +msgstr "Por alguna extraña razón esta entrada no puede editarse." + +#: wp-includes/class-wp-xmlrpc-server.php:2128 wp-app.php:551 wp-app.php:709 +msgid "Sorry, you do not have the right to delete this post." +msgstr "Lo sentimos, no tienes autorización para borrar esta entrada." + +#: wp-includes/class-wp-xmlrpc-server.php:2133 wp-app.php:559 wp-app.php:724 +msgid "For some strange yet very annoying reason, this post could not be deleted." +msgstr "Por alguna extraña y desagradable razón esta entrada no puede borrarse." + +#: wp-app.php:577 +msgid "Sorry, you do not have permission to upload files." +msgstr "Lo sentimos, no tienes autorización para subir archivos." + +#: wp-comments-post.php:36 +msgid "Sorry, comments are closed for this item." +msgstr "Disculpa, los comentarios están cerrados." + +#: wp-comments-post.php:71 +msgid "Sorry, you must be logged in to post a comment." +msgstr "Disculpa, debes identificarte para escribir un comentario." + +#: wp-comments-post.php:78 +msgid "Error: please fill the required fields (name, email)." +msgstr "Error: por favor, completa los campos requeridos (nombre, correo electrónico)." + +#: wp-comments-post.php:80 +msgid "Error: please enter a valid email address." +msgstr "Error: por favor, escribe un correo electrónico válido." + +#: wp-content/plugins/akismet/admin.php:40 +#: wp-content/plugins/akismet/admin.php:137 +msgid "Akismet Configuration" +msgstr "Configuración de Akismet" + +#: wp-content/plugins/akismet/admin.php:122 +msgid "Your key has been cleared." +msgstr "Tu clave ha sido eliminada." + +#: wp-content/plugins/akismet/admin.php:123 +msgid "Your key has been verified. Happy blogging!" +msgstr "Tu clave ha sido verificada. ¡Disfruta tu sitio!" + +#: wp-content/plugins/akismet/admin.php:124 +msgid "The key you entered is invalid. Please double-check it." +msgstr "La clave que has introducido no es válida. Por favor compruébala." + +#: wp-content/plugins/akismet/admin.php:125 +msgid "The key you entered could not be verified because a connection to akismet.com could not be established. Please check your server configuration." +msgstr "La clave que has introducido no se ha podido verificar porque no se ha podido realizar la conexión con akismet.com. Por favor, comprueba la configuración de tu servidor." + +#: wp-content/plugins/akismet/admin.php:126 +msgid "There was a problem connecting to the Akismet server. Please check your server configuration." +msgstr "Hubo un problema al conectar con el servidor de Akismet. Por favor, comprueba la configuración de tu servidor." + +#: wp-content/plugins/akismet/admin.php:127 +msgid "Please enter an API key. (Get your key.)" +msgstr "Por favor introduce una clave de API. (Consigue tu clave.)" + +#: wp-content/plugins/akismet/admin.php:128 +msgid "This key is valid." +msgstr "La clave es válida." + +#: wp-content/plugins/akismet/admin.php:129 +msgid "The key below was previously validated but a connection to akismet.com can not be established at this time. Please check your server configuration." +msgstr "La clave mostrada fue validada anteriormente pero no se puede realizar una conexión con akismet.com en este momento. Por favor, comprueba la configuración de tu servidor." + +#: wp-content/plugins/akismet/admin.php:152 +msgid "Why might my key be invalid?" +msgstr "¿Por qué no es válida mi clave?" + +#: wp-content/plugins/akismet/admin.php:153 +msgid "This can mean one of two things, either you copied the key wrong or that the plugin is unable to reach the Akismet servers, which is most often caused by an issue with your web host around firewalls or similar." +msgstr "Esto puede significar una de estas dos cosas: que has copiado mal la clave o que el plugin no es capaz de encontrar los servidores de Akismet, que a menudo suele ocurrir por un problema con tu alojamiento web con los cortafuegos o algo similar." + +#: wp-content/plugins/akismet/admin.php:159 +msgid "Update options »" +msgstr "Actualizar opciones »" + +#: wp-content/plugins/akismet/admin.php:164 +msgid "Server Connectivity" +msgstr "Conectividad del servidor" + +#: wp-content/plugins/akismet/admin.php:177 +msgid "Unable to reach some Akismet servers." +msgstr "No se puede acceder a ningún servidor de Akismet." + +#: wp-content/plugins/akismet/admin.php:178 +msgid "A network problem or firewall is blocking some connections from your web server to Akismet.com. Akismet is working but this may cause problems during times of network congestion. Please contact your web host or firewall administrator and give them this information about Akismet and firewalls." +msgstr "Un problema en la red o en el firewall está bloqueando algunas conexiones de su servidor web para Akismet.com. Akismet está funcionando pero esto te puede causar problemas cuando la red esté saturada. Por favor, ponte en contacto con tuproveedor e infórmales sobre este problema." + +#: wp-content/plugins/akismet/admin.php:182 +msgid "Unable to reach any Akismet servers." +msgstr "No se puede acceder a ningún servidor de Akismet." + +#: wp-content/plugins/akismet/admin.php:183 +msgid "A network problem or firewall is blocking all connections from your web server to Akismet.com. Akismet cannot work correctly until this is fixed. Please contact your web host or firewall administrator and give them this information about Akismet and firewalls." +msgstr "Un problema en la red o en el firewall está bloqueando algunas conexiones de tu servidor web para Akismet.com. Akismet no está funcionando correctamente. Por favor, ponte en contacto con tu proveedor e infórmales sobre este problema." + +#: wp-content/plugins/akismet/admin.php:187 +msgid "All Akismet servers are available." +msgstr "Todos los servidores Akismet están disponibles." + +#: wp-content/plugins/akismet/admin.php:188 +msgid "Akismet is working correctly. All servers are accessible." +msgstr "Akismet está funcionando correctamente. Se puede acceder a todos los servidores." + +#: wp-content/plugins/akismet/admin.php:168 +msgid "Network functions are disabled." +msgstr "Las funciones de red están desactivadas." + +#: wp-content/plugins/akismet/admin.php:193 +msgid "Unable to find Akismet servers." +msgstr "No se pudieron encontrar los servidores de Akismet." + +#: wp-content/plugins/akismet/admin.php:194 +msgid "A DNS problem or firewall is preventing all access from your web server to Akismet.com. Akismet cannot work correctly until this is fixed. Please contact your web host or firewall administrator and give them this information about Akismet and firewalls." +msgstr "Un problema de DNS o en el firewall impide el acceso de su servidor a Akismet.com. Akismet no puede funcionar correctamente con este problema. Por favor, ponte en contacto con tu proveedor e infórmales sobre este problema." + +#: wp-content/plugins/akismet/admin.php:202 +msgid "Akismet server" +msgstr "Servidor Akismet" + +#: wp-content/plugins/akismet/admin.php:202 +msgid "Network Status" +msgstr "Estado de la red" + +#: wp-content/plugins/akismet/admin.php:219 +msgid "Last checked %s ago." +msgstr "Última consulta hace %s." + +#: wp-content/plugins/akismet/admin.php:220 +msgid "Check network status »" +msgstr "Comprueba el estado de la red »" + +#: wp-content/plugins/akismet/admin.php:231 +msgid "Akismet Stats" +msgstr "Estadísticas de Akismet" + +#: wp-content/plugins/akismet/admin.php:290 +msgid "Akismet is almost ready." +msgstr "Akismet casi está preparado." + +#: wp-content/plugins/akismet/admin.php:302 +msgid "Akismet has detected a problem." +msgstr "Akismet ha detectado un problema." + +#: wp-content/plugins/akismet/legacy.php:47 +msgid "Akismet Spam (%s)" +msgstr "Spam en Akismet (%s)" + +#: wp-content/plugins/akismet/legacy.php:49 +#: wp-content/plugins/akismet/legacy.php:51 +msgid "Akismet Spam" +msgstr "Spam en Akismet" + +#: wp-content/plugins/akismet/legacy.php:61 +#: wp-content/plugins/akismet/legacy.php:80 +msgid "You do not have sufficient permission to moderate comments." +msgstr "No tienes autorización para moderar comentarios." + +#: wp-content/plugins/akismet/legacy.php:96 +msgid "%1$s comments recovered." +msgstr "%1$s comentario ha sido recuperado." + +#: wp-content/plugins/akismet/legacy.php:100 +msgid "All spam deleted." +msgstr "Todo el spam ha sido borrado." + +#: wp-content/plugins/akismet/legacy.php:148 +msgid "Caught Spam" +msgstr "Spam capturado" + +#: wp-content/plugins/akismet/legacy.php:153 +msgid "Akismet has caught %1$s spam for you since you first installed it." +msgstr "Akismet ha capturado %1$s spam desde la primera vez que lo instalaste." + +#: wp-content/plugins/akismet/legacy.php:160 +msgid "You have no spam currently in the queue. Must be your lucky day. :)" +msgstr "En este momento no tienes spam en cola. Debe ser tu día de suerte. :)" + +#: wp-content/plugins/akismet/legacy.php:163 +msgid "You can delete all of the spam from your database with a single click. This operation cannot be undone, so you may wish to check to ensure that no legitimate comments got through first. Spam is automatically deleted after 15 days, so don’t sweat it." +msgstr "Puedes borrar todo el spam de tu base de datos con un solo clic. Esta operación no es reversible así que puede que quieras antes comprobar si hay comentarios legítimos. El spam se borra automáticamente a los 15 días, así que no te agobies." + +#: wp-content/plugins/akismet/legacy.php:169 +#: wp-content/plugins/akismet/legacy.php:347 +msgid "There are currently %1$s comments identified as spam." +msgstr "En este momento hay %1$s comentarios identificados como spam." + +#: wp-content/plugins/akismet/legacy.php:169 +#: wp-content/plugins/akismet/legacy.php:347 +msgid "Delete all" +msgstr "Borrar todos" + +#: wp-content/plugins/akismet/legacy.php:178 +msgid "These are the latest comments identified as spam by Akismet. If you see any mistakes, simply mark the comment as \"not spam\" and Akismet will learn from the submission. If you wish to recover a comment from spam, simply select the comment, and click Not Spam. After 15 days we clean out the junk for you." +msgstr "Estos son los últimos comentarios identificados como spam por Akismet. Si encuentras algún error, sólo tienes que marcarlo como \"No es spam\" y Akismet aprenderá al recibirlo. Si deseas recuperar un comentario, selecciónalo y haz clic en \"No es spam\". Tras 15 días, la basura desaparecerá sola." + +#: wp-admin/export.php:135 wp-admin/export.php:141 wp-admin/export.php:158 +#: wp-admin/export.php:173 wp-admin/export.php:190 +#: wp-content/plugins/akismet/legacy.php:209 +msgid "All" +msgstr "Todo" + +#: wp-content/plugins/akismet/legacy.php:232 +msgid "Search Spam »" +msgstr "Buscar spam »" + +#: wp-includes/link-template.php:1665 wp-includes/link-template.php:1701 +#: wp-content/plugins/akismet/legacy.php:239 +#: wp-content/plugins/akismet/legacy.php:306 +msgid "« Previous Page" +msgstr "« Página anterior" + +#: wp-includes/link-template.php:1594 wp-includes/link-template.php:1702 +#: wp-content/plugins/akismet/legacy.php:260 +#: wp-content/plugins/akismet/legacy.php:327 +msgid "Next Page »" +msgstr "Página siguiente »" + +#: wp-content/plugins/akismet/legacy.php:282 +msgid "IP:" +msgstr "IP:" + +#: wp-content/plugins/akismet/legacy.php:333 +msgid "De-spam marked comments »" +msgstr "Quitar marca de spam »" + +#: wp-content/plugins/akismet/legacy.php:335 +msgid "Comments you de-spam will be submitted to Akismet as mistakes so it can learn and get better." +msgstr "Los comentarios a los que quites la marca de \"spam\" se enviarán a Akismet como errores para que vaya aprendiendo y mejorando." + +#: wp-admin/includes/nav-menu.php:709 wp-admin/includes/nav-menu.php:943 +#: wp-content/plugins/akismet/legacy.php:340 +msgid "No results found." +msgstr "Sin resultados." + +#: wp-content/plugins/akismet/admin.php:281 +msgid "Akismet has protected your site from %3$s spam comments." +msgid_plural "Akismet has protected your site from %3$s spam comments." +msgstr[0] "Akismet ha protegido tu sitio de %3$s comentarios de spam." +msgstr[1] "Akismet ha protegido tu sitio de %3$s comentarios de spam." + +#: wp-content/plugins/akismet/legacy.php:385 +msgid "Recheck Queue for Spam" +msgstr "Volver a comprobar cola de spam" + +#: wp-content/plugins/akismet/admin.php:478 +msgid "Check for Spam" +msgstr "Comprobar la lista de spam" + +#: wp-includes/feed-atom-comments.php:19 +msgid "Comments on %s" +msgstr "Comentarios en %s" + +#: wp-includes/theme-compat/sidebar.php:75 wp-includes/default-widgets.php:299 +msgid "Powered by WordPress, state-of-the-art semantic personal publishing platform." +msgstr "Gestionado con WordPress, una avanzada plataforma semántica de publicación personal." + +#: wp-includes/comment-template.php:987 +msgid "Enter your password to view comments." +msgstr "Escribe tu contraseña para ver los comentarios." + +#: wp-includes/comment-template.php:582 wp-includes/comment-template.php:974 +msgid "No Comments" +msgstr "No hay comentarios" + +#: wp-includes/comment-template.php:584 wp-includes/comment-template.php:975 +msgid "1 Comment" +msgstr "1 comentario" + +#: wp-includes/comment-template.php:580 wp-includes/comment-template.php:976 +msgid "% Comments" +msgstr "% comentarios" + +#: wp-includes/link-template.php:731 wp-includes/link-template.php:938 +#: wp-includes/link-template.php:1013 wp-includes/link-template.php:1054 +msgid "Edit This" +msgstr "Editar Esto" + +#: wp-includes/theme-compat/comments.php:66 +#: wp-includes/comment-template.php:1535 +msgid "You must be logged in to post a comment." +msgstr "Disculpa, debes iniciar sesión para escribir un comentario." + +#: wp-includes/category-template.php:1030 +msgid "Tags: " +msgstr "Etiquetas: " + +#: wp-includes/post-template.php:185 +msgid "(more...)" +msgstr "(más...)" + +#: wp-includes/post-template.php:625 +msgid "Pages:" +msgstr "Páginas:" + +#: wp-admin/export.php:134 +msgid "Categories:" +msgstr "Categorías:" + +#: wp-includes/default-widgets.php:298 +msgid "The latest comments to all posts in RSS" +msgstr "Últimos comentarios a todas las entradas en RSS" + +#: wp-includes/default-widgets.php:298 +msgid "Comments RSS" +msgstr "RSS de los comentarios" + +#: wp-includes/comment-template.php:1355 +msgid "%s says:" +msgstr "%s dice:" + +#: wp-includes/comment-template.php:1358 +msgid "Your comment is awaiting moderation." +msgstr "Tu comentario está pendiente de moderación" + +#: wp-includes/comment-template.php:1365 +msgid "%1$s at %2$s" +msgstr "%1$s a las %2$s" + +#: wp-includes/comment-template.php:1365 +msgid "(Edit)" +msgstr "(Editar)" + +#: wp-includes/category-template.php:59 wp-includes/category-template.php:174 +#: wp-includes/category-template.php:177 wp-includes/category-template.php:184 +#: wp-includes/category-template.php:197 wp-includes/category-template.php:200 +#: wp-includes/category-template.php:207 +msgid "View all posts in %s" +msgstr "Ver todas las entradas en %s" + +#: wp-includes/theme-compat/sidebar.php:69 wp-includes/default-widgets.php:283 +#: wp-includes/default-widgets.php:288 +msgid "Meta" +msgstr "Meta" + +#: wp-includes/atomlib.php:133 +msgid "XML error: %s at line %d" +msgstr "Error de XML: %s en la línea %d" + +#: wp-includes/author-template.php:143 +msgid "Visit %s’s website" +msgstr "Visitar el sitio de %s" + +#: wp-includes/author-template.php:211 wp-includes/author-template.php:325 +msgid "Posts by %s" +msgstr "Entradas de %s" + +#: wp-includes/bookmark-template.php:82 +msgid "Last updated: %s" +msgstr "Última actualización: %s" + +#: wp-includes/bookmark-template.php:206 +msgid "Bookmarks" +msgstr "Marcadores" + +#: wp-includes/capabilities.php:723 +msgid "Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead." +msgstr "El uso de niveles de usuarios por plugins y temas está obsoleto. Usa los perfiles y capacidades en su lugar." + +#: wp-includes/category-template.php:419 +msgid "No categories" +msgstr "No hay categorías" + +#: wp-includes/category-template.php:568 +msgid "%s topic" +msgid_plural "%s topics" +msgstr[0] "%s tema" +msgstr[1] "%s temas" + +#: wp-includes/class-pop3.php:82 +msgid "No server specified" +msgstr "Servidor no especificado" + +#: wp-includes/class-pop3.php:90 wp-includes/class-pop3.php:102 +#: wp-includes/class-pop3.php:123 wp-includes/class-pop3.php:246 +#: wp-includes/class-pop3.php:300 wp-includes/class-pop3.php:311 +#: wp-includes/class-pop3.php:359 wp-includes/class-pop3.php:393 +#: wp-includes/class-pop3.php:426 wp-includes/class-pop3.php:525 +#: wp-includes/class-pop3.php:548 +msgid "Error " +msgstr "Error " + +#: wp-includes/class-pop3.php:115 +msgid "no login ID submitted" +msgstr "no se ha enviado el ID de usuario" + +#: wp-includes/class-pop3.php:118 wp-includes/class-pop3.php:138 +msgid "connection not established" +msgstr "no se estableció la conexión" + +#: wp-includes/class-pop3.php:135 wp-includes/class-pop3.php:171 +msgid "No password submitted" +msgstr "No se envió la contraseña" + +#: wp-includes/class-pop3.php:143 +msgid "Authentication failed" +msgstr "Autentificación fallida" + +#: wp-includes/class-pop3.php:162 wp-includes/class-pop3.php:205 +#: wp-includes/class-pop3.php:230 wp-includes/class-pop3.php:272 +#: wp-includes/class-pop3.php:346 wp-includes/class-pop3.php:386 +#: wp-includes/class-pop3.php:416 wp-includes/class-pop3.php:450 +#: wp-includes/class-pop3.php:513 wp-includes/class-pop3.php:578 +msgid "No connection to server" +msgstr "No hay conexión con el servidor." + +#: wp-includes/class-pop3.php:168 +msgid "No login ID submitted" +msgstr "No se ha enviado el ID de usuario" + +#: wp-includes/class-pop3.php:176 +msgid "No server banner" +msgstr "No hay identificación del servidor" + +#: wp-includes/class-pop3.php:176 wp-includes/class-pop3.php:186 +msgid "abort" +msgstr "cancelar" + +#: wp-includes/class-pop3.php:186 +msgid "apop authentication failed" +msgstr "Falló la autenticación apop" + +#: wp-includes/class-pop3.php:323 +msgid "Premature end of list" +msgstr "Fin de la lista prematuro" + +#: wp-includes/class-pop3.php:456 +msgid "Empty command string" +msgstr "Cadena de comandos vacía" + +#: wp-includes/class-pop3.php:476 +msgid "connection does not exist" +msgstr "conexión inexistente" + +#: wp-includes/class-pop3.php:583 +msgid "No msg number submitted" +msgstr "No se envió ningún número de mensaje" + +#: wp-includes/class-pop3.php:589 +msgid "Command failed " +msgstr "Comando fallido" + +#: wp-includes/category-template.php:837 +msgid "View all posts filed under %s" +msgstr "Ver todas las entradas archivadas en %s" + +#: wp-includes/category-template.php:852 +msgid "Feed for all posts filed under %s" +msgstr "Feed para todas las entradas archivadas en %s" + +#: wp-includes/comment-template.php:977 +msgid "Comments Off" +msgstr "Comentarios desactivados" + +#: wp-includes/comment-template.php:1014 +msgid "Comment on %s" +msgstr "Comentarios en %s" + +#: wp-includes/comment-template.php:1040 +msgid "Log in to Reply" +msgstr "Inicia sesión para responder" + +#: wp-includes/comment-template.php:1100 +msgid "Leave a Comment" +msgstr "Dejar un comentario" + +#: wp-includes/comment-template.php:1101 +msgid "Log in to leave a Comment" +msgstr "Inicia sesión para dejar un comentario" + +#: wp-includes/comment-template.php:1140 +msgid "Click here to cancel reply." +msgstr "Clic para cancelar respuesta." + +#: wp-includes/theme-compat/comments.php:59 +#: wp-includes/comment-template.php:1197 wp-includes/comment-template.php:1541 +msgid "Leave a Reply" +msgstr "Deja un comentario" + +#: wp-includes/theme-compat/comments.php:59 +#: wp-includes/comment-template.php:1198 wp-includes/comment-template.php:1542 +msgid "Leave a Reply to %s" +msgstr "Responder a %s" + +#: wp-admin/comment.php:126 +msgid "Permanently Delete Comment" +msgstr "Borrar comentario permanentemente" + +#: wp-admin/comment.php:129 +msgid "You are about to approve the following comment:" +msgstr "Estás a punto de aprobar el siguiente comentario:" + +#: wp-admin/comment.php:130 +msgid "Approve Comment" +msgstr "Aprobar comentario" + +#: wp-admin/theme-editor.php:241 wp-admin/comment.php:151 +#: wp-admin/plugins.php:250 +msgid "Caution:" +msgstr "Atención:" + +#: wp-includes/theme-compat/sidebar.php:21 wp-includes/post-template.php:1418 +#: wp-includes/js/tinymce/langs/wp-langs.php:308 +#: wp-admin/edit-form-advanced.php:150 wp-admin/comment.php:155 +#: wp-admin/includes/class-wp-posts-list-table.php:274 +#: wp-admin/includes/class-wp-posts-list-table.php:781 +#: wp-admin/includes/plugin-install.php:127 +#: wp-admin/includes/class-wp-comments-list-table.php:254 +#: wp-admin/includes/class-wp-comments-list-table.php:525 +#: wp-admin/includes/theme-install.php:62 +#: wp-admin/includes/class-wp-media-list-table.php:135 +#: wp-admin/includes/meta-boxes.php:524 wp-admin/edit-form-comment.php:86 +msgid "Author" +msgstr "Autor" + +#: wp-includes/theme-compat/comments-popup.php:80 wp-login.php:520 +#: wp-admin/user-new.php:229 wp-admin/user-new.php:291 wp-admin/comment.php:160 +#: wp-admin/includes/class-wp-users-list-table.php:165 +#: wp-admin/includes/template.php:356 wp-admin/user-edit.php:329 +msgid "E-mail" +msgstr "Correo electrónico" + +#: wp-admin/comment.php:166 wp-admin/includes/media.php:2229 +#: wp-admin/includes/internal-linking.php:79 wp-admin/includes/template.php:361 +#: wp-admin/includes/template.php:730 wp-admin/includes/nav-menu.php:127 +#: wp-admin/includes/nav-menu.php:550 +#: wp-admin/includes/class-wp-links-list-table.php:81 +#: wp-admin/press-this.php:180 +msgid "URL" +msgstr "URL" + +#: wp-includes/comment-template.php:678 wp-includes/comment-template.php:1534 +#: wp-admin/comment.php:171 +msgctxt "noun" +msgid "Comment" +msgstr "Comentario" + +#: wp-includes/functions.php:2710 wp-includes/functions.php:2712 +#: wp-admin/comment.php:176 +msgid "Are you sure you want to do this?" +msgstr "¿Seguro que quieres hacer esto?" + +#: wp-admin/custom-header.php:580 wp-admin/comment.php:182 +#: wp-admin/includes/class-wp-links-list-table.php:110 +msgid "No" +msgstr "No" + +#: wp-admin/comment.php:282 wp-admin/includes/media.php:1767 +msgid "Unknown action." +msgstr "Acción desconocida." + +#: wp-admin/custom-background.php:169 wp-admin/includes/theme.php:305 +msgid "Custom Background" +msgstr "Fondo personalizado" + +#: wp-admin/custom-background.php:172 +msgid "Background updated. Visit your site to see how it looks." +msgstr "Fondo actualizado. Visita tu sitio para ver cómo queda." + +#: wp-admin/custom-header.php:508 wp-admin/custom-background.php:236 +msgid "Choose an image from your computer:" +msgstr "Elige una imagen desde tu ordenador:" + +#: wp-admin/custom-header.php:512 wp-admin/custom-background.php:239 +#: wp-admin/includes/media.php:1579 wp-admin/includes/media.php:1581 +#: wp-admin/includes/class-wp-theme-install-list-table.php:32 +#: wp-admin/includes/template.php:1467 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:32 +msgid "Upload" +msgstr "Subir" + +#: wp-admin/includes/template.php:2202 wp-admin/options.php:219 +msgid "Save Changes" +msgstr "Guardar cambios" + +#: wp-admin/custom-header.php:468 wp-admin/includes/theme.php:307 +msgid "Custom Header" +msgstr "Cabecera personalizada" + +#: wp-admin/custom-header.php:472 +msgid "Header updated. Visit your site to see how it looks." +msgstr "Cabezera actualizada. Visita tu sitio para ver los cambios." + +#: wp-admin/custom-header.php:669 wp-admin/custom-header.php:730 +msgid "Image could not be processed. Please go back and try again." +msgstr "La imagen no se pudo procesar. Por favor, prueba de nuevo." + +#: wp-admin/custom-header.php:669 wp-admin/custom-header.php:730 +msgid "Image Processing Error" +msgstr "Error en el procesado de la imagen" + +#: wp-admin/custom-header.php:686 +msgid "Choose the part of the image you want to use as your header." +msgstr "Elige la parte de la imagen que quieras usar como cabecera." + +#: wp-admin/custom-header.php:780 +msgid "You do not have permission to customize headers." +msgstr "No tienes autorización para personalizar cabeceras." + +#: wp-admin/includes/dashboard.php:590 +#: wp-admin/includes/class-wp-posts-list-table.php:527 +#: wp-admin/includes/class-wp-posts-list-table.php:533 +#: wp-admin/includes/class-wp-terms-list-table.php:255 +#: wp-admin/includes/class-wp-media-list-table.php:205 +#: wp-admin/includes/class-wp-media-list-table.php:218 +#: wp-admin/includes/class-wp-links-list-table.php:136 +msgid "Edit “%s”" +msgstr "Editar “%s”" + +#: wp-includes/script-loader.php:339 wp-includes/script-loader.php:366 +#: wp-admin/includes/dashboard.php:697 +#: wp-admin/includes/class-wp-posts-list-table.php:194 +#: wp-admin/includes/class-wp-posts-list-table.php:542 +#: wp-admin/includes/class-wp-comments-list-table.php:414 +#: wp-admin/includes/class-wp-users-list-table.php:246 +#: wp-admin/includes/class-wp-plugins-list-table.php:387 +#: wp-admin/includes/class-wp-terms-list-table.php:259 +#: wp-admin/includes/class-wp-media-list-table.php:337 +#: wp-admin/includes/class-wp-media-list-table.php:351 +#: wp-admin/includes/post.php:1205 +#: wp-admin/includes/class-wp-links-list-table.php:139 +#: wp-admin/includes/widgets.php:182 wp-admin/includes/meta-boxes.php:84 +#: wp-admin/includes/meta-boxes.php:130 wp-admin/includes/meta-boxes.php:182 +#: wp-admin/edit-form-comment.php:62 +msgid "Edit" +msgstr "Editar" + +#: wp-includes/post-template.php:1376 +#: wp-admin/includes/class-wp-posts-list-table.php:192 +#: wp-admin/includes/class-wp-posts-list-table.php:547 +#: wp-admin/includes/class-wp-comments-list-table.php:195 +#: wp-admin/includes/class-wp-comments-list-table.php:404 +#: wp-admin/includes/class-wp-media-list-table.php:354 +msgid "Restore" +msgstr "Restaurar" + +#: wp-admin/includes/class-wp-posts-list-table.php:549 +#: wp-admin/includes/class-wp-media-list-table.php:340 +#: wp-admin/includes/class-wp-media-list-table.php:356 +msgid "Trash" +msgstr "Papelera" + +#: wp-admin/includes/dashboard.php:701 +#: wp-admin/includes/class-wp-posts-list-table.php:197 +#: wp-admin/includes/class-wp-posts-list-table.php:551 +#: wp-admin/includes/media.php:1315 +#: wp-admin/includes/class-wp-comments-list-table.php:200 +#: wp-admin/includes/class-wp-comments-list-table.php:408 +#: wp-admin/includes/class-wp-media-list-table.php:79 +#: wp-admin/includes/class-wp-media-list-table.php:343 +#: wp-admin/includes/class-wp-media-list-table.php:359 +#: wp-admin/includes/meta-boxes.php:198 wp-admin/edit-form-comment.php:71 +msgid "Delete Permanently" +msgstr "Borrar permanentemente" + +#: wp-admin/includes/class-wp-posts-list-table.php:558 +#: wp-admin/includes/class-wp-media-list-table.php:345 +#: wp-admin/includes/class-wp-media-list-table.php:364 +msgid "View “%s”" +msgstr "Ver “%s”" + +#: wp-admin/includes/class-wp-posts-list-table.php:558 +#: wp-admin/includes/class-wp-terms-list-table.php:264 +#: wp-admin/includes/class-wp-media-list-table.php:345 +#: wp-admin/includes/class-wp-media-list-table.php:364 +msgid "View" +msgstr "Ver" + +#: wp-admin/includes/class-wp-posts-list-table.php:639 +#: wp-admin/includes/class-wp-media-list-table.php:250 +msgid "No Tags" +msgstr "Sin etiquetas" + +#: wp-admin/includes/class-wp-posts-list-table.php:571 +#: wp-admin/includes/class-wp-media-list-table.php:265 +msgid "Unpublished" +msgstr "Sin publicar" + +#: wp-admin/includes/dashboard.php:590 +#: wp-admin/includes/class-wp-posts-list-table.php:574 +#: wp-admin/includes/class-wp-media-list-table.php:267 +msgid "Y/m/d g:i:s A" +msgstr "d/m/Y G:i" + +#: wp-admin/includes/class-wp-media-list-table.php:272 +msgid "%s from now" +msgstr "%s desde ahora" + +#: wp-admin/includes/class-wp-posts-list-table.php:581 +#: wp-admin/includes/plugin-install.php:313 +#: wp-admin/includes/class-wp-comments-list-table.php:333 +#: wp-admin/includes/theme-install.php:165 +#: wp-admin/includes/class-wp-media-list-table.php:274 +#: wp-content/plugins/akismet/admin.php:369 +#: wp-content/plugins/akismet/admin.php:397 +msgid "%s ago" +msgstr "hace %s" + +#: wp-admin/includes/class-wp-media-list-table.php:297 +msgid "(Unattached)" +msgstr "(Sin adjuntar)" + +#: wp-admin/includes/class-wp-media-list-table.php:298 +#: wp-admin/includes/class-wp-media-list-table.php:347 +msgid "Attach" +msgstr "Adjuntar" + +#: wp-admin/includes/class-wp-list-table.php:429 +msgid "%s pending" +msgstr "%s pendientes" + +#: wp-admin/includes/class-wp-media-list-table.php:126 +msgid "No media attachments found." +msgstr "No se han encontrado adjuntos." + +#: wp-admin/link-manager.php:64 wp-admin/edit-comments.php:143 +#: wp-admin/edit.php:191 wp-admin/upload.php:159 wp-admin/users.php:369 +#: wp-admin/plugins.php:387 wp-admin/edit-tags.php:242 +msgid "Search results for “%s”" +msgstr "Resultados de búsqueda para “%s”" + +#: wp-admin/edit-comments.php:173 +msgid "%s comment approved" +msgid_plural "%s comments approved" +msgstr[0] "%s comentario aprobado" +msgstr[1] "%s comentarios aprobados" + +#: wp-admin/edit-comments.php:177 +msgid "%s comment marked as spam." +msgid_plural "%s comments marked as spam." +msgstr[0] "%s comentario marcado como spam." +msgstr[1] "%s comentarios marcados como spam." + +#: wp-includes/js/tinymce/langs/wp-langs.php:267 +#: wp-includes/js/tinymce/wp-mce-help.php:236 wp-admin/edit-comments.php:177 +#: wp-admin/edit-comments.php:185 wp-admin/edit.php:223 wp-admin/upload.php:182 +#: wp-admin/upload.php:194 wp-admin/includes/image-edit.php:56 +#: wp-admin/includes/media.php:1324 wp-admin/includes/template.php:406 +#: wp-admin/includes/template.php:409 +msgid "Undo" +msgstr "Deshacer" + +#: wp-admin/edit-comments.php:181 +msgid "%s comment restored from the spam" +msgid_plural "%s comments restored from the spam" +msgstr[0] "%s comentario recuperado de spam" +msgstr[1] "%s comentarios recuperados de spam" + +#: wp-admin/edit-comments.php:192 +msgid "%s comment permanently deleted" +msgid_plural "%s comments permanently deleted" +msgstr[0] "%s comentario borrado permanentemente" +msgstr[1] "%s comentarios borrados permanentemente" + +#: wp-admin/includes/class-wp-comments-list-table.php:146 +msgctxt "comments" +msgid "All" +msgid_plural "All" +msgstr[0] "Todo" +msgstr[1] "Todos" + +#: wp-admin/includes/class-wp-comments-list-table.php:147 +msgid "Pending (%s)" +msgid_plural "Pending (%s)" +msgstr[0] "Pendiente (%s)" +msgstr[1] "Pendientes (%s)" + +#: wp-admin/includes/class-wp-comments-list-table.php:148 +msgid "Approved" +msgid_plural "Approved" +msgstr[0] "Aprobado" +msgstr[1] "Aprobados" + +#: wp-admin/includes/class-wp-comments-list-table.php:149 +msgid "Spam (%s)" +msgid_plural "Spam (%s)" +msgstr[0] "Spam (%s)" +msgstr[1] "Spam (%s)" + +#: wp-admin/includes/class-wp-comments-list-table.php:150 +msgid "Trash (%s)" +msgid_plural "Trash (%s)" +msgstr[0] "Papelera (%s)" +msgstr[1] "Papelera (%s)" + +#: wp-admin/edit-comments.php:217 +msgid "Search Comments" +msgstr "Buscar comentarios" + +#: wp-admin/includes/deprecated.php:563 +msgid "Displaying %s–%s of %s" +msgstr "Mostrando %s–%s de %s" + +#: wp-admin/includes/class-wp-list-table.php:290 +msgid "Bulk Actions" +msgstr "Acciones en lote" + +#: wp-admin/includes/dashboard.php:696 +#: wp-admin/includes/class-wp-comments-list-table.php:188 +#: wp-admin/includes/class-wp-comments-list-table.php:391 +#: wp-admin/includes/class-wp-comments-list-table.php:396 +msgid "Unapprove" +msgstr "Rechazar" + +#: wp-admin/includes/dashboard.php:695 +#: wp-admin/includes/class-wp-comments-list-table.php:190 +#: wp-admin/includes/class-wp-comments-list-table.php:393 +#: wp-admin/includes/class-wp-comments-list-table.php:395 +msgid "Approve" +msgstr "Aprobar" + +#: wp-content/plugins/akismet/legacy.php:288 +msgid "Not Spam" +msgstr "No es spam" + +#: wp-admin/includes/class-wp-posts-list-table.php:199 +#: wp-admin/includes/media.php:1323 +#: wp-admin/includes/class-wp-comments-list-table.php:202 +#: wp-admin/includes/meta-boxes.php:200 wp-admin/edit-form-comment.php:71 +msgid "Move to Trash" +msgstr "Mover a la papelera" + +#: wp-includes/js/tinymce/langs/wp-langs.php:16 +#: wp-admin/includes/template.php:1954 +#: wp-admin/includes/class-wp-list-table.php:300 +msgid "Apply" +msgstr "Aplicar" + +#: wp-admin/includes/class-wp-comments-list-table.php:215 +msgid "Show all comment types" +msgstr "Mostrar todos los comentarios" + +#: wp-includes/theme-compat/comments-popup.php:33 +#: wp-admin/edit-form-advanced.php:143 wp-admin/edit-comments.php:110 +#: wp-admin/edit-comments.php:140 +#: wp-admin/includes/class-wp-posts-list-table.php:284 +#: wp-admin/includes/class-wp-posts-list-table.php:901 +#: wp-admin/includes/class-wp-comments-list-table.php:218 +#: wp-admin/includes/file.php:16 wp-admin/includes/template.php:1468 +#: wp-admin/includes/template.php:1781 +#: wp-content/plugins/akismet/legacy.php:214 +msgid "Comments" +msgstr "Comentarios" + +#: wp-admin/includes/class-wp-posts-list-table.php:910 +#: wp-admin/includes/class-wp-comments-list-table.php:219 +msgid "Pings" +msgstr "Pings" + +#: wp-admin/includes/class-wp-posts-list-table.php:225 +#: wp-admin/includes/class-wp-comments-list-table.php:227 +#: wp-admin/includes/class-wp-media-list-table.php:96 +#: wp-admin/includes/class-wp-links-list-table.php:71 +msgid "Filter" +msgstr "Filtrar" + +#: wp-admin/includes/class-wp-comments-list-table.php:232 +msgid "Empty Spam" +msgstr "Vaciar spam" + +#: wp-admin/includes/class-wp-posts-list-table.php:229 +#: wp-admin/includes/class-wp-comments-list-table.php:232 +#: wp-admin/includes/class-wp-media-list-table.php:102 +msgid "Empty Trash" +msgstr "Vaciar papelera" + +#: wp-admin/includes/class-wp-comments-list-table.php:133 +msgid "No comments awaiting moderation… yet." +msgstr "No hay comentarios pendientes de moderación." + +#: wp-admin/includes/class-wp-comments-list-table.php:135 +msgid "No comments found." +msgstr "Sin comentarios." + +#: wp-admin/edit-form-advanced.php:33 +msgid "Post updated. View post" +msgstr "Entrada actualizada. Vista previa" + +#: wp-admin/edit-form-advanced.php:34 wp-admin/edit-form-advanced.php:50 +msgid "Custom field updated." +msgstr "Campo personalizado actualizado." + +#: wp-admin/edit-form-advanced.php:35 wp-admin/edit-form-advanced.php:51 +msgid "Custom field deleted." +msgstr "Campo personalizado borrado." + +#: wp-admin/edit-form-advanced.php:36 +msgid "Post updated." +msgstr "Entrada actualizada." + +#: wp-admin/edit-form-advanced.php:38 +msgid "Post restored to revision from %s" +msgstr "Entrada restaurada a la revisión %s" + +#: wp-admin/edit-form-advanced.php:39 +msgid "Post published. View post" +msgstr "Entrada publicada. Ver entrada" + +#: wp-admin/edit-form-advanced.php:40 +msgid "Post saved." +msgstr "Entrada guardada." + +#: wp-admin/edit-form-advanced.php:41 +msgid "Post submitted. Preview post" +msgstr "Entrada enviada. Vista previa" + +#: wp-admin/edit-form-advanced.php:42 +msgid "Post scheduled for: %1$s. Preview post" +msgstr "Entrada programada el: %1$s. Vista previa" + +#: wp-admin/edit-form-advanced.php:44 wp-admin/edit-form-advanced.php:57 +#: wp-admin/includes/meta-boxes.php:159 wp-admin/edit-form-comment.php:58 +msgid "M j, Y @ G:i" +msgstr "j F Y G:i a" + +#: wp-admin/edit-form-advanced.php:45 +msgid "Post draft updated. Preview post" +msgstr "Entrada actualizada. Vista previa" + +#: wp-admin/edit-form-advanced.php:49 +msgid "Page updated. View page" +msgstr "Página actualizada. Vista previa" + +#: wp-admin/edit-form-advanced.php:52 +msgid "Page updated." +msgstr "Página actualizada." + +#: wp-admin/edit-form-advanced.php:53 +msgid "Page restored to revision from %s" +msgstr "Página restaurada desde la revisión %s" + +#: wp-admin/edit-form-advanced.php:54 +msgid "Page published. View page" +msgstr "Página publicada. Vista previa" + +#: wp-admin/edit-form-advanced.php:56 +msgid "Page submitted. Preview page" +msgstr "Página enviada. Vista previa" + +#: wp-admin/edit-form-advanced.php:57 +msgid "Page scheduled for: %1$s. Preview page" +msgstr "Página programada para: %1$s. Vista previa" + +#: wp-admin/edit-form-advanced.php:58 +msgid "Page draft updated. Preview page" +msgstr "Borrador de página actualizado. Vista previa" + +#: wp-admin/edit-form-advanced.php:91 +msgid "There is an autosave of this post that is more recent than the version below. View the autosave" +msgstr "Hay una copia automática de esta entrada con fecha más reciente que la de la versión mostrada. Ver la copia automática" + +#: wp-includes/script-loader.php:345 wp-admin/edit-form-advanced.php:103 +#: wp-admin/includes/dashboard.php:559 wp-admin/includes/meta-boxes.php:215 +#: wp-admin/includes/meta-boxes.php:216 wp-admin/press-this.php:490 +msgid "Publish" +msgstr "Publicar" + +#: wp-admin/edit-form-advanced.php:123 +msgid "Attributes" +msgstr "Atributos" + +#: wp-includes/post.php:4689 wp-admin/edit-form-advanced.php:130 +#: wp-admin/includes/meta-boxes.php:382 +msgid "Excerpt" +msgstr "Extracto" + +#: wp-admin/edit-form-advanced.php:133 +msgid "Send Trackbacks" +msgstr "Enviar trackbacks" + +#: wp-admin/edit-form-advanced.php:136 +msgid "Custom Fields" +msgstr "Campos personalizados" + +#: wp-admin/edit-form-advanced.php:140 wp-admin/includes/dashboard.php:332 +#: wp-admin/menu.php:231 +msgid "Discussion" +msgstr "Comentarios" + +#: wp-admin/edit-form-advanced.php:146 +#: wp-admin/includes/class-wp-posts-list-table.php:749 +#: wp-admin/includes/class-wp-terms-list-table.php:102 +#: wp-admin/includes/class-wp-terms-list-table.php:344 +#: wp-admin/includes/meta-boxes.php:509 +msgid "Slug" +msgstr "Slug" + +#: wp-includes/post.php:70 wp-admin/revision.php:97 wp-admin/revision.php:123 +#: wp-admin/edit-form-advanced.php:154 +msgid "Revisions" +msgstr "Revisiones" + +#: wp-admin/edit-form-advanced.php:280 wp-admin/admin-ajax.php:1542 +msgid "Last edited by %1$s on %2$s at %3$s" +msgstr "Última edición por %1$s el %2$s a las %3$s" + +#: wp-admin/edit-form-advanced.php:282 wp-admin/admin-ajax.php:1544 +msgid "Last edited on %1$s at %2$s" +msgstr "Última edición el %1$s a las %2$s" + +#: wp-admin/edit-form-comment.php:17 +msgid "Editing Comment # %s" +msgstr "Editando comentario # %s" + +#: wp-admin/edit-form-comment.php:42 +msgid "View Comment" +msgstr "Ver comentario" + +#: wp-includes/comment.php:389 wp-admin/edit-form-comment.php:50 +msgctxt "adjective" +msgid "Approved" +msgstr "Aprobado" + +#: wp-includes/comment.php:391 wp-admin/edit-form-comment.php:52 +msgctxt "adjective" +msgid "Spam" +msgstr "Spam" + +#: wp-admin/edit-form-comment.php:59 +msgid "Submitted on: %1$s" +msgstr "Enviado el: %1$s" + +#: wp-admin/includes/template.php:372 wp-admin/edit-form-comment.php:74 +msgid "Update Comment" +msgstr "Actualizar comentario" + +#: wp-admin/edit-form-comment.php:91 +msgid "Name:" +msgstr "Nombre:" + +#: wp-admin/edit-form-comment.php:98 +msgid "E-mail (%s):" +msgstr "Correo electrónico (%s):" + +#: wp-admin/edit-form-comment.php:98 +msgid "send e-mail" +msgstr "enviar correo electrónico" + +#: wp-admin/edit-form-comment.php:100 +msgid "E-mail:" +msgstr "Correo electrónico:" + +#: wp-admin/edit-form-comment.php:109 +msgid "visit site" +msgstr "visitar sitio" + +#: wp-admin/edit-form-comment.php:110 +msgid "URL (%s):" +msgstr "URL (%s):" + +#: wp-admin/edit-form-comment.php:112 +msgid "URL:" +msgstr "URL:" + +#: wp-includes/taxonomy.php:62 wp-admin/menu.php:97 +msgid "Link Categories" +msgstr "Categorías de enlaces" + +#: wp-includes/taxonomy.php:401 +msgid "Search Categories" +msgstr "Buscar categorías" + +#: wp-admin/includes/class-wp-themes-list-table.php:171 +#: wp-admin/includes/media.php:1317 +#: wp-admin/includes/class-wp-users-list-table.php:130 +#: wp-admin/includes/class-wp-users-list-table.php:252 +#: wp-admin/includes/template.php:505 +#: wp-admin/includes/class-wp-plugins-list-table.php:268 +#: wp-admin/includes/class-wp-plugins-list-table.php:373 +#: wp-admin/includes/class-wp-plugins-list-table.php:382 +#: wp-admin/includes/class-wp-terms-list-table.php:83 +#: wp-admin/includes/class-wp-terms-list-table.php:263 +#: wp-admin/includes/class-wp-links-list-table.php:47 +#: wp-admin/includes/class-wp-links-list-table.php:140 +#: wp-admin/includes/widgets.php:206 wp-admin/includes/meta-boxes.php:627 +#: wp-admin/widgets.php:314 +msgid "Delete" +msgstr "Borrar" + +#: wp-admin/edit-tags.php:342 wp-admin/edit-tag-form.php:48 +msgid "The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens." +msgstr "El “slug” es la versión amigable de la URL del nombre. Suele estar en minúsculas y contiene sólo letras, números y guiones." + +#: wp-admin/edit-tags.php:357 +msgid "The description is not prominent by default; however, some themes may show it." +msgstr "La descripción no suele mostrarse por defecto, sin embargo hay algunos temas que puede que la muestren." + +#: wp-includes/taxonomy.php:67 +msgid "Edit Link Category" +msgstr "Editar categoría del enlace" + +#: wp-includes/taxonomy.php:408 +msgid "Update Category" +msgstr "Actualizar categoría" + +#: wp-admin/edit-link-form.php:14 +msgid "Links / Edit Link" +msgstr "Enlaces / Editar enlace" + +#: wp-admin/edit-link-form.php:15 wp-admin/includes/meta-boxes.php:633 +msgid "Update Link" +msgstr "Actualizar enlace" + +#: wp-admin/edit-link-form.php:19 +msgid "Links / Add New Link" +msgstr "Enlaces / Añadir nuevo enlace" + +#: wp-includes/script-loader.php:280 wp-admin/edit-link-form.php:20 +#: wp-admin/includes/meta-boxes.php:635 +msgid "Add Link" +msgstr "Añadir enlace" + +#: wp-includes/js/tinymce/langs/wp-langs.php:110 wp-admin/edit-link-form.php:27 +#: wp-admin/includes/image-edit.php:75 wp-admin/includes/nav-menu.php:516 +#: wp-admin/includes/post.php:1779 wp-admin/includes/widgets.php:211 +#: wp-admin/includes/meta-boxes.php:25 wp-admin/includes/meta-boxes.php:602 +msgid "Save" +msgstr "Guardar" + +#: wp-includes/theme-compat/sidebar.php:63 +#: wp-includes/category-template.php:427 wp-includes/default-widgets.php:422 +#: wp-includes/default-widgets.php:428 wp-admin/edit-link-form.php:28 +#: wp-admin/includes/class-wp-posts-list-table.php:277 +#: wp-admin/includes/class-wp-links-list-table.php:82 +#: wp-admin/press-this.php:518 +msgid "Categories" +msgstr "Categorías" + +#: wp-includes/js/tinymce/langs/wp-langs.php:344 +#: wp-includes/js/tinymce/langs/wp-langs.php:395 wp-admin/edit-link-form.php:29 +#: wp-admin/includes/meta-boxes.php:699 +msgid "Target" +msgstr "Destino" + +#: wp-admin/edit-link-form.php:30 wp-admin/includes/nav-menu.php:161 +#: wp-admin/includes/nav-menu.php:1144 +msgid "Link Relationship (XFN)" +msgstr "Relación con el enlace (XFN)" + +#: wp-includes/js/tinymce/langs/wp-langs.php:358 +#: wp-includes/js/tinymce/wp-mce-help.php:201 wp-admin/edit-link-form.php:31 +msgid "Advanced" +msgstr "Avanzado" + +#: wp-admin/edit-link-form.php:59 +msgid "Link added." +msgstr "Enlace añadido." + +#: wp-includes/theme-compat/comments.php:78 +#: wp-includes/theme-compat/comments-popup.php:75 +#: wp-includes/comment-template.php:1523 +#: wp-admin/includes/class-wp-users-list-table.php:164 +#: wp-admin/includes/template.php:351 wp-admin/user-edit.php:233 +msgid "Name" +msgstr "Nombre" + +#: wp-admin/edit-link-form.php:89 +msgid "Example: Nifty blogging software" +msgstr "Ejemplo: Estupendo software de publicación" + +#: wp-admin/edit-link-form.php:94 +msgid "Web Address" +msgstr "Dirección web" + +#: wp-admin/edit-link-form.php:97 +msgid "Example: http://wordpress.org/ — don’t forget the http://" +msgstr "Ejemplo: http://wordpress.org/ —no olvides poner http://" + +#: wp-admin/edit-link-form.php:102 wp-admin/themes.php:213 +#: wp-admin/includes/media.php:1098 +#: wp-admin/includes/class-wp-plugins-list-table.php:194 +#: wp-admin/includes/nav-menu.php:167 wp-admin/includes/nav-menu.php:1145 +#: wp-admin/includes/class-wp-terms-list-table.php:101 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:144 +#: wp-admin/press-this.php:151 wp-admin/press-this.php:186 +msgid "Description" +msgstr "Descripción" + +#: wp-admin/edit-link-form.php:105 +msgid "This will be shown when someone hovers over the link in the blogroll, or optionally below the link." +msgstr "Esto se mostrará cuando alguien pase el cursor sobre el enlace en los sitios de interés, u opcionalmente a debajo del enlace." + +#: wp-admin/edit-tags.php:336 wp-admin/edit-tag-form.php:42 +msgid "The name is how it appears on your site." +msgstr "El nombre es cómo aparecerá en tu sitio." + +#: wp-includes/deprecated.php:707 wp-includes/js/tinymce/langs/wp-langs.php:484 +#: wp-admin/includes/media.php:850 wp-admin/includes/media.php:944 +#: wp-admin/includes/media.php:2131 wp-admin/includes/media.php:2147 +#: wp-admin/includes/class-wp-users-list-table.php:264 +#: wp-admin/edit-tags.php:348 wp-admin/edit-tag-form.php:55 +msgid "None" +msgstr "Ninguna" + +#: wp-admin/edit-tags.php:350 wp-admin/edit-tag-form.php:57 +msgid "Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional." +msgstr "Las categorías, a diferencia de las etiquetas, pueden tener jerarquías. Podrías tener una categoría de Jazz, y por debajo las categorías Bebop y Big Band. Totalmente opcional." + +#: wp-admin/edit-tag-form.php:65 +msgid "The description is not prominent by default, however some themes may show it." +msgstr "La descripción no suele mostrarse por defecto, sin embargo hay algunas plantillas que puede que la muestren." + +#: wp-includes/taxonomy.php:1972 wp-includes/taxonomy.php:2274 +#: wp-admin/includes/class-wp-terms-list-table.php:23 +msgid "Invalid taxonomy" +msgstr "Taxonomia no válida" + +#: wp-includes/taxonomy.php:406 +msgid "Edit Tag" +msgstr "Editar etiqueta" + +#: wp-admin/edit-tags.php:229 +msgid "Item added." +msgstr "Añadido." + +#: wp-admin/edit-tags.php:230 +msgid "Item deleted." +msgstr "Eliminado." + +#: wp-admin/edit-tags.php:231 +msgid "Item updated." +msgstr "Actualizado." + +#: wp-admin/edit-tags.php:232 +msgid "Item not added." +msgstr "No añadido." + +#: wp-admin/edit-tags.php:234 +msgid "Items deleted." +msgstr "Eliminados." + +#: wp-admin/edit-tags.php:275 +msgid "Note:
    Deleting a category does not delete the posts in that category. Instead, posts that were only assigned to the deleted category are set to the category %s." +msgstr "Nota:
    Al borrar una categoría no borrarás las entradas que hay en ella. En su lugar, las entradas que sólo estén asignadas a esa categoría se asignarán a la categoría %s." + +#: wp-admin/upload.php:98 +msgid "Error in moving to trash..." +msgstr "Error al mover a la papelera..." + +#: wp-admin/upload.php:108 +msgid "Error in restoring from trash..." +msgstr "Error al restaurar de la papelera..." + +#: wp-admin/edit.php:109 wp-admin/post.php:248 +msgid "You are not allowed to delete this item." +msgstr "No tienes autorización para borrar este elemento." + +#: wp-admin/edit.php:113 wp-admin/edit.php:116 wp-admin/upload.php:118 +msgid "Error in deleting..." +msgstr "Error al borrar..." + +#: wp-includes/post.php:1179 wp-admin/menu.php:77 +msgctxt "post" +msgid "Add New" +msgstr "Añadir nueva" + +#: wp-admin/edit.php:196 +msgid "This has been saved." +msgstr "Se ha guardado." + +#: wp-includes/post.php:1183 wp-admin/edit.php:196 +#: wp-content/plugins/akismet/legacy.php:294 +msgid "View Post" +msgstr "Ver entrada" + +#: wp-includes/post.php:1181 wp-admin/edit.php:196 wp-admin/press-this.php:600 +msgid "Edit Post" +msgstr "Editar entrada" + +#: wp-admin/edit.php:203 +msgid "%s post updated." +msgid_plural "%s posts updated." +msgstr[0] "%s entrada actualizada." +msgstr[1] "%s entradas actualizadas." + +#: wp-admin/edit.php:211 +msgid "%s item not updated, somebody is editing it." +msgid_plural "%s items not updated, somebody is editing them." +msgstr[0] "%s no se ha actualizado, alguien lo está editando." +msgstr[1] "%s no se han actualizado, alguien los está editando." + +#: wp-admin/edit.php:216 +msgid "Item permanently deleted." +msgid_plural "%s items permanently deleted." +msgstr[0] "Borrado permanentemente." +msgstr[1] "%s borrados permanentemente." + +#: wp-admin/includes/class-wp-posts-list-table.php:145 +msgctxt "posts" +msgid "Mine (%s)" +msgid_plural "Mine (%s)" +msgstr[0] "Mío (%s)" +msgstr[1] "Míos (%s)" + +#: wp-admin/includes/class-wp-posts-list-table.php:156 +msgctxt "posts" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "Todo (%s)" +msgstr[1] "Todos (%s)" + +#: wp-admin/includes/media.php:2018 +#: wp-admin/includes/class-wp-list-table.php:374 +msgid "Show all dates" +msgstr "Mostrar todas las fechas" + +#: wp-admin/includes/class-wp-posts-list-table.php:215 +#: wp-admin/includes/class-wp-links-list-table.php:64 +msgid "View all categories" +msgstr "Ver todas las categorías" + +#: wp-admin/includes/class-wp-list-table.php:402 +msgid "List View" +msgstr "Ver lista" + +#: wp-admin/includes/class-wp-list-table.php:403 +msgid "Excerpt View" +msgstr "Ver extracto" + +#: wp-admin/export.php:17 wp-admin/menu.php:221 +msgid "Export" +msgstr "Exportar" + +#: wp-admin/export.php:121 +msgid "When you click the button below WordPress will create an XML file for you to save to your computer." +msgstr "Cuando hagas clic en el botón de abajo, WordPress creará un archivo XML para que lo guardes en tu ordenador." + +#: wp-admin/export.php:122 +msgid "This format, which we call WordPress eXtended RSS or WXR, will contain your posts, pages, comments, custom fields, categories, and tags." +msgstr "Este formato, que llamamos WordPress eXtended RSS (RSS ampliado de WordPress) o WXR, contendrá todas tus entradas, comentarios, campos personalizados, categorías y etiquetas." + +#: wp-admin/export.php:202 +msgid "Download Export File" +msgstr "Descargar el archivo de exportación" + +#: wp-admin/import.php:93 +msgid "No importers are available." +msgstr "No hay importadores disponibles." + +#: wp-admin/upgrade.php:62 wp-admin/upgrade.php:94 +#: wp-admin/includes/media.php:1319 +msgid "Continue" +msgstr "Continuar" + +#: wp-admin/export.php:131 wp-admin/includes/class-wp-users-list-table.php:167 +#: wp-admin/includes/class-wp-terms-list-table.php:110 wp-admin/menu.php:74 +msgid "Posts" +msgstr "Entradas" + +#: wp-admin/import.php:30 +msgid "Blogger" +msgstr "Blogger" + +#: wp-admin/users.php:17 wp-admin/includes/template.php:1473 +#: wp-admin/menu.php:196 +msgid "Users" +msgstr "Usuarios" + +#: wp-includes/script-loader.php:434 +msgid "Done" +msgstr "Hecho" + +#: wp-includes/comment-template.php:30 wp-includes/theme.php:236 +msgid "Anonymous" +msgstr "Anónimo" + +#: wp-admin/import.php:32 +msgid "LiveJournal" +msgstr "LiveJournal" + +#: wp-admin/options-reading.php:91 wp-admin/options-reading.php:92 +#: wp-admin/includes/template.php:548 wp-admin/widgets.php:295 +msgid "— Select —" +msgstr "— Seleccionar —" + +#: wp-includes/post-template.php:1216 wp-admin/includes/dashboard.php:186 +msgid "Submit" +msgstr "Enviar" + +#: wp-admin/import.php:33 +msgid "Movable Type and TypePad" +msgstr "Movable Type y TypePad" + +#: wp-admin/import.php:34 wp-admin/includes/upgrade.php:129 +msgid "Blogroll" +msgstr "Sitios de interés" + +#: wp-includes/default-widgets.php:698 wp-admin/import.php:35 +msgid "RSS" +msgstr "RSS" + +#: wp-includes/functions.php:2375 +msgid "Invalid file type" +msgstr "Tipo de archivo no válido" + +#: wp-admin/includes/bookmark.php:192 +msgid "Could not update link in the database" +msgstr "No ha sido posible actualizar el enlace en la base de datos." + +#: wp-admin/includes/bookmark.php:199 +msgid "Could not insert link into the database" +msgstr "No ha sido posible insertar el enlace en la base de datos." + +#: wp-admin/includes/class-wp-filesystem-base.php:212 +msgid "Changing to %s" +msgstr "Cambiando a %s" + +#: wp-admin/includes/class-wp-filesystem-base.php:221 +msgid "Found %s" +msgstr "Encontrado %s" + +#: wp-admin/includes/class-wp-filesystem-ftpext.php:28 +msgid "The ftp PHP extension is not available" +msgstr "La extensión PHP de FTP no está disponible." + +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:38 +#: wp-admin/includes/class-wp-filesystem-ftpext.php:44 +msgid "FTP hostname is required" +msgstr "El nombre del servidor del FTP es necesario" + +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:47 +#: wp-admin/includes/class-wp-filesystem-ftpext.php:53 +msgid "FTP username is required" +msgstr "El nombre de usuario del FTP es necesario" + +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:52 +#: wp-admin/includes/class-wp-filesystem-ftpext.php:58 +msgid "FTP password is required" +msgstr "La contraseña del FTP es necesaria" + +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:64 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:69 +#: wp-admin/includes/class-wp-filesystem-ftpext.php:74 +msgid "Failed to connect to FTP Server %1$s:%2$s" +msgstr "Ha sido imposible conectar con el servidor FTP %1$s:%2$s" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:117 +#: wp-admin/includes/class-wp-filesystem-ftpsockets.php:74 +#: wp-admin/includes/class-wp-filesystem-ftpext.php:79 +msgid "Username/Password incorrect for %s" +msgstr "Nombre de usuario y/o contraseña incorrecto/s para %s" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:57 +msgid "The ssh2 PHP extension is not available" +msgstr "La extesión PHP de SSH2 no está disponible" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:61 +msgid "The ssh2 PHP extension is available, however, we require the PHP5 function stream_get_contents()" +msgstr "La extensión ssh2 de PHP está disponible, no obstante es necesaria la función de PHP5 stream_get_contents()" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:72 +msgid "SSH2 hostname is required" +msgstr "El nombre del servidor del SSH2 es necesario" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:88 +msgid "SSH2 username is required" +msgstr "El nombre de usuario del SSH2 es necesario" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:96 +msgid "SSH2 password is required" +msgstr "La contraseña del SSH2 es necesaria" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:111 +msgid "Failed to connect to SSH2 Server %1$s:%2$s" +msgstr "Ha sido imposible conectar con el SSH2 %1$s:%2$s" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:122 +msgid "Public and Private keys incorrect for %s" +msgstr "Claves públicas y privadas incorrectas para %s" + +#: wp-admin/includes/class-wp-filesystem-ssh2.php:138 +msgid "Unable to perform command: %s" +msgstr "No se pudo realizar el comando: %s" + +#: wp-admin/includes/class-wp-upgrader.php:41 +msgid "Invalid Data provided." +msgstr "Datos facilitado no válidos." + +#: wp-admin/includes/file.php:518 wp-admin/includes/class-wp-upgrader.php:42 +#: wp-admin/includes/plugin.php:684 wp-admin/includes/theme.php:85 +msgid "Could not access filesystem." +msgstr "No ha sido posible acceder al sistema de archivos." + +#: wp-admin/includes/class-wp-upgrader.php:43 wp-admin/includes/plugin.php:687 +#: wp-admin/includes/theme.php:88 +msgid "Filesystem error." +msgstr "Error del sistema de archivos." + +#: wp-admin/includes/class-wp-upgrader.php:44 +msgid "Unable to locate WordPress Root directory." +msgstr "Ha sido imposible localizar el directorio de WordPress." + +#: wp-admin/includes/class-wp-upgrader.php:45 +msgid "Unable to locate WordPress Content directory (wp-content)." +msgstr "Ha sido imposible localizar el directorio de contenidos de WordPress (wp-content)." + +#: wp-admin/includes/class-wp-upgrader.php:46 wp-admin/includes/plugin.php:692 +msgid "Unable to locate WordPress Plugin directory." +msgstr "Ha sido imposible localizar el directorio de plugins de WordPress." + +#: wp-admin/includes/class-wp-upgrader.php:47 +msgid "Unable to locate WordPress Theme directory." +msgstr "Ha sido imposible localizar el directorio de temas de WordPress." + +#: wp-admin/includes/class-wp-upgrader.php:49 +msgid "Unable to locate needed folder (%s)." +msgstr "Ha sido imposible localizar la carpeta %s." + +#: wp-admin/includes/class-wp-upgrader.php:51 +msgid "Download failed." +msgstr "Descarga fallida." + +#: wp-admin/includes/class-wp-upgrader.php:52 +#: wp-admin/includes/update-core.php:368 +msgid "Installing the latest version…" +msgstr "Instalando última versión…" + +#: wp-admin/includes/class-wp-upgrader.php:53 +msgid "Destination folder already exists." +msgstr "La carpeta ya existe." + +#: wp-admin/includes/file.php:612 wp-admin/includes/file.php:704 +#: wp-admin/includes/file.php:763 wp-admin/includes/class-wp-upgrader.php:54 +#: wp-admin/includes/update-core.php:513 +msgid "Could not create directory." +msgstr "No ha sido posible crear el directorio" + +#: wp-admin/includes/file.php:578 wp-admin/includes/file.php:672 +#: wp-admin/includes/class-wp-upgrader.php:55 +msgid "Incompatible Archive." +msgstr "Archivo incompatible." + +#: wp-admin/includes/class-wp-upgrader.php:57 +msgid "Enabling Maintenance mode…" +msgstr "Activando el modo mantenimiento…" + +#: wp-admin/includes/class-wp-upgrader.php:58 +msgid "Disabling Maintenance mode…" +msgstr "Desactivando el modo de mantenimiento…" + +#: wp-admin/includes/class-wp-upgrader.php:369 +msgid "The plugin is at the latest version." +msgstr "Tienes la última versión del plugin." + +#: wp-admin/includes/class-wp-upgrader.php:371 +#: wp-admin/includes/class-wp-upgrader.php:611 +#: wp-admin/includes/class-wp-upgrader.php:864 +msgid "Downloading update from %s…" +msgstr "Descargando paquete de instalación desde %s…" + +#: wp-admin/includes/class-wp-upgrader.php:372 +#: wp-admin/includes/class-wp-upgrader.php:612 +#: wp-admin/includes/class-wp-upgrader.php:865 +msgid "Unpacking the update…" +msgstr "Descomprimiendo actualización…" + +#: wp-admin/includes/class-wp-upgrader.php:373 +msgid "Deactivating the plugin…" +msgstr "Desactivando el plugin…" + +#: wp-admin/includes/class-wp-upgrader.php:374 +msgid "Removing the old version of the plugin…" +msgstr "Eliminando la antigua versión del plugin…" + +#: wp-admin/includes/class-wp-upgrader.php:375 +msgid "Could not remove the old plugin." +msgstr "No ha sido posible eliminar la versión anterior del plugin." + +#: wp-admin/includes/class-wp-upgrader.php:381 +#: wp-admin/includes/class-wp-upgrader.php:620 +msgid "Install package not available." +msgstr "El paquete de instalación no está disponible." + +#: wp-admin/includes/class-wp-upgrader.php:382 +#: wp-admin/includes/class-wp-upgrader.php:621 +msgid "Downloading install package from %s…" +msgstr "Descargando el archivo de instalación de %s…" + +#: wp-admin/includes/class-wp-upgrader.php:383 +#: wp-admin/includes/class-wp-upgrader.php:622 +msgid "Unpacking the package…" +msgstr "Descomprimiendo…" + +#: wp-admin/includes/class-wp-upgrader.php:384 +msgid "Installing the plugin…" +msgstr "Instalando el plugin…" + +#: wp-admin/includes/class-wp-upgrader.php:385 +msgid "Plugin install failed." +msgstr "Fallo en la instalación del plugin." + +#: wp-admin/includes/class-wp-upgrader.php:386 +msgid "Plugin installed successfully." +msgstr "Plugin instalado correctamente." + +#: wp-admin/includes/class-wp-upgrader.php:609 +msgid "The theme is at the latest version." +msgstr "Tienes la última versión del tema." + +#: wp-admin/includes/class-wp-upgrader.php:613 +msgid "Removing the old version of the theme…" +msgstr "Eliminando la antigua versión del tema…" + +#: wp-admin/includes/class-wp-upgrader.php:614 +msgid "Could not remove the old theme." +msgstr "No ha sido posible eliminar la versión anterior del tema." + +#: wp-admin/includes/class-wp-upgrader.php:623 +msgid "Installing the theme…" +msgstr "Instalando el tema…" + +#: wp-admin/includes/class-wp-upgrader.php:624 +msgid "Theme install failed." +msgstr "Fallo en la instalación del tema." + +#: wp-admin/includes/class-wp-upgrader.php:625 +msgid "Theme installed successfully." +msgstr "El tema se ha instalado correctamente." + +#: wp-admin/includes/class-wp-upgrader.php:862 +msgid "WordPress is at the latest version." +msgstr "Tienes la última versión de WordPress." + +#: wp-admin/includes/class-wp-upgrader.php:866 +msgid "Could not copy files." +msgstr "No ha sido posible copiar los archivos." + +#: wp-admin/includes/class-wp-upgrader.php:1040 +msgid "Reactivating the plugin…" +msgstr "Reactivando el plugin…" + +#: wp-admin/includes/class-wp-upgrader.php:1045 +#: wp-admin/includes/class-wp-upgrader.php:1280 +#: wp-admin/includes/class-wp-upgrader.php:1282 +#: wp-admin/includes/class-wp-plugins-list-table.php:379 +msgid "Activate this plugin" +msgstr "Activar este plugin" + +#: wp-admin/includes/class-wp-upgrader.php:1045 +#: wp-admin/includes/class-wp-upgrader.php:1282 +msgid "Activate Plugin" +msgstr "Activar plugin" + +#: wp-admin/includes/class-wp-upgrader.php:1046 +#: wp-admin/includes/class-wp-upgrader.php:1201 +#: wp-admin/includes/class-wp-upgrader.php:1294 +msgid "Return to Plugins page" +msgstr "Volver a la página de plugins" + +#: wp-admin/includes/class-wp-upgrader.php:1268 +msgid "Successfully installed the plugin %s %s." +msgstr "El plugin %s %s se ha instalado correctamente." + +#: wp-admin/includes/class-wp-upgrader.php:1292 +msgid "Return to Plugin Installer" +msgstr "Volver al instalador de plugins" + +#: wp-admin/includes/class-wp-upgrader.php:1333 +msgid "Successfully installed the theme %1$s %2$s." +msgstr "El tema %1$s %2$s se ha instalado correctamente." + +#: wp-admin/includes/class-wp-posts-list-table.php:556 +#: wp-admin/includes/class-wp-themes-list-table.php:169 +#: wp-admin/includes/class-wp-upgrader.php:1352 +#: wp-admin/includes/class-wp-upgrader.php:1405 +#: wp-admin/includes/theme-install.php:145 +#: wp-admin/includes/theme-install.php:153 +msgid "Preview “%s”" +msgstr "Vista previa “%s”" + +#: wp-includes/js/tinymce/langs/wp-langs.php:96 +#: wp-includes/js/tinymce/langs/wp-langs.php:362 wp-admin/custom-header.php:481 +#: wp-admin/custom-background.php:184 +#: wp-admin/includes/class-wp-posts-list-table.php:556 +#: wp-admin/includes/class-wp-themes-list-table.php:169 +#: wp-admin/includes/class-wp-upgrader.php:1352 +#: wp-admin/includes/class-wp-upgrader.php:1405 +#: wp-admin/includes/theme-install.php:145 wp-admin/includes/meta-boxes.php:48 +msgid "Preview" +msgstr "Vista previa" + +#: wp-admin/includes/class-wp-themes-list-table.php:166 +#: wp-admin/includes/class-wp-upgrader.php:1353 +#: wp-admin/includes/class-wp-upgrader.php:1406 +msgid "Activate “%s”" +msgstr "Activar “%s”" + +#: wp-admin/includes/class-wp-upgrader.php:1357 +msgid "Return to Theme Installer" +msgstr "Volver al instalador de temas" + +#: wp-admin/includes/class-wp-upgrader.php:1359 +msgid "Themes page" +msgstr "Página de temas" + +#: wp-admin/includes/class-wp-upgrader.php:1233 +#: wp-admin/includes/class-wp-upgrader.php:1359 +#: wp-admin/includes/class-wp-upgrader.php:1412 +msgid "Return to Themes page" +msgstr "Volver a la página de temas" + +#: wp-admin/includes/class-wp-upgrader.php:1438 +msgid "Please select a file" +msgstr "Por favor elige un archivo" + +#: wp-admin/includes/file.php:329 wp-admin/includes/file.php:451 +#: wp-admin/includes/class-wp-upgrader.php:1452 +msgid "The uploaded file could not be moved to %s." +msgstr "El archivo subido no se ha podido mover a %s." + +#: wp-admin/includes/dashboard.php:40 wp-admin/includes/dashboard.php:43 +msgid "Right Now" +msgstr "Ahora mismo" + +#: wp-includes/default-widgets.php:600 wp-includes/default-widgets.php:638 +#: wp-admin/includes/dashboard.php:53 +msgid "Recent Comments" +msgstr "Comentarios recientes" + +#: wp-admin/includes/dashboard.php:70 +msgid "Incoming Links" +msgstr "Enlaces entrantes" + +#: wp-includes/js/tinymce/langs/wp-langs.php:306 wp-admin/update-core.php:190 +#: wp-admin/update-core.php:202 wp-admin/includes/dashboard.php:75 +#: wp-admin/plugins.php:331 +msgid "Plugins" +msgstr "Plugins" + +#: wp-admin/includes/dashboard.php:79 +msgid "QuickPress" +msgstr "Publicación rápida" + +#: wp-admin/includes/dashboard.php:83 +msgid "Recent Drafts" +msgstr "Últimos borradores" + +#: wp-admin/includes/dashboard.php:104 +msgid "http://planet.wordpress.org/" +msgstr "http://planet.wordpress.org/" + +#: wp-admin/includes/dashboard.php:105 +msgid "http://planet.wordpress.org/feed/" +msgstr "http://planet.wordpress.org/feed/" + +#: wp-admin/includes/dashboard.php:106 +msgid "Other WordPress News" +msgstr "Otras noticias sobre WordPress" + +#: wp-admin/includes/dashboard.php:129 wp-admin/includes/dashboard.php:599 +msgid "View all" +msgstr "Ver todo" + +#: wp-includes/script-loader.php:338 wp-includes/script-loader.php:365 +#: wp-includes/js/tinymce/langs/wp-langs.php:19 +#: wp-admin/includes/dashboard.php:156 +#: wp-admin/includes/class-wp-posts-list-table.php:996 +#: wp-admin/includes/image-edit.php:74 wp-admin/includes/media.php:1320 +#: wp-admin/includes/media.php:1582 wp-admin/includes/internal-linking.php:115 +#: wp-admin/includes/template.php:370 wp-admin/includes/template.php:559 +#: wp-admin/includes/template.php:646 wp-admin/includes/theme-install.php:285 +#: wp-admin/includes/nav-menu.php:190 +#: wp-admin/includes/class-wp-terms-list-table.php:365 +#: wp-admin/includes/meta-boxes.php:104 wp-admin/includes/meta-boxes.php:150 +#: wp-admin/press-this.php:135 wp-admin/press-this.php:165 +#: wp-admin/press-this.php:193 wp-admin/press-this.php:315 +#: wp-admin/widgets.php:311 +msgid "Cancel" +msgstr "Cancelar" + +#: wp-admin/includes/dashboard.php:160 +msgid "Configure" +msgstr "Configurar" + +#: wp-admin/includes/dashboard.php:266 +msgid "Post" +msgid_plural "Posts" +msgstr[0] "Entrada" +msgstr[1] "Entradas" + +#: wp-admin/includes/dashboard.php:337 +msgid "Comment" +msgid_plural "Comments" +msgstr[0] "Comentario" +msgstr[1] "Comentarios" + +#: wp-admin/includes/dashboard.php:294 +msgid "Page" +msgid_plural "Pages" +msgstr[0] "Página" +msgstr[1] "Páginas" + +#: wp-admin/includes/dashboard.php:349 +msgctxt "Right Now" +msgid "Approved" +msgid_plural "Approved" +msgstr[0] "Aprobado" +msgstr[1] "Aprobados" + +#: wp-admin/includes/dashboard.php:306 +msgid "Category" +msgid_plural "Categories" +msgstr[0] "Categoría" +msgstr[1] "Categorías" + +#: wp-admin/includes/dashboard.php:361 +msgid "Pending" +msgid_plural "Pending" +msgstr[0] "Pendiente" +msgstr[1] "Pendientes" + +#: wp-admin/includes/dashboard.php:318 +msgid "Tag" +msgid_plural "Tags" +msgstr[0] "Etiqueta" +msgstr[1] "Etiquetas" + +#: wp-admin/includes/dashboard.php:407 +msgid "Theme %1$s with %2$s Widget" +msgid_plural "Theme %1$s with %2$s Widgets" +msgstr[0] "Tema %1$s con %2$s widget" +msgstr[1] "Tema %1$s con %2$s widgets" + +#: wp-admin/includes/dashboard.php:411 +msgid "Theme %1$s" +msgstr "Tema %1$s" + +#: wp-admin/includes/dashboard.php:413 +msgid "Theme %1$s" +msgstr "Tema %1$s" + +#: wp-admin/includes/dashboard.php:490 +msgid "Post submitted. Preview post | Edit post" +msgstr "Entrada enviada. Previsualizar entrada | Editar entrada" + +#: wp-admin/includes/dashboard.php:505 +msgid "You can also try %s, easy blogging from anywhere on the Web." +msgstr "También puedes probar %s para crear fácilmente entradas desde cualquier web." + +#: wp-admin/tools.php:32 wp-admin/tools.php:37 wp-admin/options-writing.php:88 +#: wp-admin/options-writing.php:92 wp-admin/includes/dashboard.php:505 +#: wp-admin/press-this.php:327 wp-admin/press-this.php:484 +msgid "Press This" +msgstr "Publicar esto" + +#: wp-includes/post.php:4688 wp-admin/includes/dashboard.php:261 +#: wp-admin/includes/dashboard.php:539 +msgid "Content" +msgstr "Contenido" + +#: wp-includes/default-widgets.php:1000 wp-admin/includes/dashboard.php:546 +#: wp-admin/includes/class-wp-posts-list-table.php:280 +msgid "Tags" +msgstr "Etiquetas" + +#: wp-includes/script-loader.php:349 wp-admin/includes/dashboard.php:556 +#: wp-admin/includes/meta-boxes.php:31 wp-admin/press-this.php:488 +msgid "Save Draft" +msgstr "Guardar borrador" + +#: wp-admin/includes/dashboard.php:557 +msgid "Reset" +msgstr "Reiniciar" + +#: wp-admin/includes/dashboard.php:559 wp-admin/includes/meta-boxes.php:219 +#: wp-admin/includes/meta-boxes.php:220 wp-admin/press-this.php:493 +msgid "Submit for Review" +msgstr "Enviar para revisión" + +#: wp-admin/includes/dashboard.php:602 +msgid "There are no drafts at the moment" +msgstr "En este momento no hay borradores" + +#: wp-includes/theme-compat/comments-popup.php:62 +#: wp-admin/includes/dashboard.php:661 wp-admin/includes/meta-boxes.php:480 +msgid "No comments yet." +msgstr "Aún no hay comentarios." + +#: wp-admin/includes/dashboard.php:695 +#: wp-admin/includes/class-wp-comments-list-table.php:393 +#: wp-admin/includes/class-wp-comments-list-table.php:395 +msgid "Approve this comment" +msgstr "Aprobar este comentario" + +#: wp-admin/includes/dashboard.php:696 +#: wp-admin/includes/class-wp-comments-list-table.php:391 +#: wp-admin/includes/class-wp-comments-list-table.php:396 +msgid "Unapprove this comment" +msgstr "Rechazar este comentario" + +#: wp-includes/link-template.php:1015 wp-admin/edit-comments.php:197 +#: wp-admin/edit-comments.php:203 wp-admin/includes/dashboard.php:697 +#: wp-admin/includes/class-wp-comments-list-table.php:414 +msgid "Edit comment" +msgstr "Editar comentario" + +#: wp-admin/includes/dashboard.php:698 +#: wp-admin/includes/class-wp-comments-list-table.php:417 +msgid "Reply to this comment" +msgstr "Responder a este comentario" + +#: wp-includes/script-loader.php:321 wp-includes/comment-template.php:1039 +#: wp-admin/includes/dashboard.php:698 +#: wp-admin/includes/class-wp-comments-list-table.php:417 +msgid "Reply" +msgstr "Responder" + +#: wp-admin/includes/dashboard.php:699 +#: wp-admin/includes/class-wp-comments-list-table.php:400 +msgid "Mark this comment as spam" +msgstr "Marcar este comentario como spam" + +#: wp-admin/includes/dashboard.php:699 +#: wp-admin/includes/class-wp-comments-list-table.php:400 +msgctxt "verb" +msgid "Spam" +msgstr "Spam" + +#: wp-admin/includes/dashboard.php:703 +#: wp-admin/includes/class-wp-comments-list-table.php:410 +msgid "Move this comment to the trash" +msgstr "Mover este comentario a la papelera" + +#: wp-admin/includes/dashboard.php:703 +#: wp-admin/includes/class-wp-comments-list-table.php:410 +msgctxt "verb" +msgid "Trash" +msgstr "Enviar a la Papelera" + +#: wp-admin/includes/dashboard.php:729 +msgid "From %1$s on %2$s%3$s" +msgstr "De %1$s en %2$s%3$s" + +#: wp-admin/includes/dashboard.php:730 +msgid "[Pending]" +msgstr "[Pendiente]" + +#: wp-includes/comment-template.php:680 wp-admin/includes/dashboard.php:737 +msgid "Pingback" +msgstr "Pingback" + +#: wp-includes/comment-template.php:679 wp-admin/includes/dashboard.php:740 +msgid "Trackback" +msgstr "Trackback" + +#: wp-admin/includes/dashboard.php:749 +msgctxt "dashboard" +msgid "%1$s on %2$s" +msgstr "%1$s en %2$s" + +#: wp-includes/default-widgets.php:682 wp-admin/includes/dashboard.php:780 +msgid "Number of comments to show:" +msgstr "Número de comentarios a mostrar:" + +#: wp-admin/includes/dashboard.php:1038 +msgid "Loading…" +msgstr "Cargando…" + +#: wp-admin/includes/dashboard.php:1038 +msgid "This widget requires JavaScript." +msgstr "Este widget requiere Javascript." + +#: wp-includes/default-widgets.php:788 wp-admin/includes/dashboard.php:801 +#: wp-admin/includes/dashboard.php:917 +msgid "RSS Error: %s" +msgstr "Error en el RSS: %s" + +#: wp-admin/includes/dashboard.php:808 +msgid "This dashboard widget queries Google Blog Search so that when another blog links to your site it will show up here. It has found no incoming links… yet. It’s okay — there is no rush." +msgstr "Este widget de escritorio consulta a la Búsqueda de blogs de Google de modo que cuando otro blog enlace a su sitio se mostrará aquí. No se ha encontrado ningún enlace entrante… aún. Está bien, no hay prisa." + +#: wp-admin/includes/dashboard.php:832 wp-admin/includes/dashboard.php:834 +#: wp-admin/includes/post.php:1304 +msgid "Somebody" +msgstr "Alguien" + +#: wp-admin/includes/dashboard.php:846 +msgid "%1$s linked here saying, \"%3$s\"" +msgstr "%1$s enlazó aquí diciendo, \"%3$s\"" + +#: wp-admin/includes/dashboard.php:849 +msgid "%1$s linked here saying, \"%3$s\"" +msgstr "%1$s enlazó aquí diciendo, \"%3$s\"" + +#: wp-admin/includes/dashboard.php:854 +msgid "on %4$s" +msgstr "en %4$s" + +#: wp-admin/includes/dashboard.php:956 +msgid "Most Popular" +msgstr "Más populares" + +#: wp-admin/includes/dashboard.php:956 +msgid "Newest Plugins" +msgstr "Plugins recientes" + +#: wp-admin/includes/dashboard.php:956 +msgid "Recently Updated" +msgstr "Actualizados recientemente" + +#: wp-admin/includes/dashboard.php:1014 wp-admin/includes/theme-install.php:143 +msgid "Install" +msgstr "Instalar" + +#: wp-includes/default-widgets.php:734 wp-admin/includes/dashboard.php:1118 +msgid "Unknown Feed" +msgstr "Feed desconocido" + +#: wp-admin/includes/file.php:11 +msgid "Main Index Template" +msgstr "Plantilla de la página principal" + +#: wp-admin/includes/file.php:12 wp-admin/includes/file.php:40 +msgid "Stylesheet" +msgstr "Hoja de estilos" + +#: wp-admin/includes/file.php:15 +msgid "RTL Stylesheet" +msgstr "Hoja de estilos RTL" + +#: wp-admin/includes/file.php:17 +msgid "Popup Comments" +msgstr "Comentarios emergentes" + +#: wp-admin/includes/file.php:18 +msgid "Footer" +msgstr "Pie de página" + +#: wp-includes/admin-bar.php:317 wp-admin/custom-header.php:86 +#: wp-admin/includes/file.php:19 +msgid "Header" +msgstr "Cabecera" + +#: wp-includes/widgets.php:490 wp-admin/includes/file.php:20 +#: wp-admin/widgets.php:278 +msgid "Sidebar" +msgstr "Barra lateral" + +#: wp-includes/theme-compat/sidebar.php:57 wp-includes/default-widgets.php:218 +#: wp-includes/default-widgets.php:225 wp-admin/includes/file.php:21 +msgid "Archives" +msgstr "Archivos" + +#: wp-admin/includes/file.php:24 +msgid "Category Template" +msgstr "Plantilla de categoría" + +#: wp-admin/includes/file.php:25 wp-admin/includes/meta-boxes.php:572 +msgid "Page Template" +msgstr "Plantilla de página" + +#: wp-admin/includes/class-wp-theme-install-list-table.php:31 +#: wp-admin/includes/file.php:26 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:31 +msgid "Search Results" +msgstr "Resultados de la búsqueda" + +#: wp-admin/includes/file.php:27 +msgid "Search Form" +msgstr "Formulario de búsqueda" + +#: wp-admin/includes/file.php:28 +msgid "Single Post" +msgstr "Entrada individual" + +#: wp-admin/includes/file.php:29 +msgid "404 Template" +msgstr "Error 404 (página no encontrada)" + +#: wp-admin/includes/file.php:30 +msgid "Links Template" +msgstr "Plantilla de enlaces" + +#: wp-admin/includes/file.php:31 +msgid "Theme Functions" +msgstr "Funciones del tema" + +#: wp-admin/includes/file.php:32 +msgid "Attachment Template" +msgstr "Plantilla de archivos adjuntos" + +#: wp-admin/includes/file.php:33 +msgid "Image Attachment Template" +msgstr "Plantilla de imagen adjunta" + +#: wp-admin/includes/file.php:34 +msgid "Video Attachment Template" +msgstr "Plantilla de vídeo adjunto" + +#: wp-admin/includes/file.php:35 +msgid "Audio Attachment Template" +msgstr "Plantilla de audio adjunto" + +#: wp-admin/includes/file.php:36 +msgid "Application Attachment Template" +msgstr "Plantilla de aplicación adjunta" + +#: wp-admin/includes/file.php:37 +msgid "my-hacks.php (legacy hacks support)" +msgstr "my-hacks.php (soporte para hacks)" + +#: wp-admin/includes/file.php:38 +msgid ".htaccess (for rewrite rules )" +msgstr ".htaccess (para reglas de reescritura)" + +#: wp-admin/includes/file.php:41 +msgid "Comments Template" +msgstr "Plantilla de comentarios" + +#: wp-admin/includes/file.php:42 +msgid "Popup Comments Template" +msgstr "Plantilla de comentarios emergentes" + +#: wp-admin/includes/file.php:202 +msgid "Sorry, can’t edit files with “..” in the name. If you are trying to edit a file in your WordPress home directory, you can just type the name of the file in." +msgstr "Disculpa, no puedes editar archivos con \"..\" en el nombre. Si estás intentando editar un archivo en tu directorio raíz de WordPress, simplemente escribe el nombre del archivo." + +#: wp-admin/includes/file.php:208 +msgid "Sorry, that file cannot be edited." +msgstr "Disculpa, ese archivo no puede editarse." + +#: wp-admin/includes/file.php:381 +msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." +msgstr "El archivo a subir sobrepasa la directiva upload_max_filesize (tamaño máximo de subida) en php.ini." + +#: wp-admin/includes/file.php:382 +msgid "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form." +msgstr "El archivo a subir sobrepasa la directiva MAX_FILE_SIZE (tamaño máximo de archivo) especificada en el formulario HTML." + +#: wp-admin/includes/file.php:257 wp-admin/includes/file.php:383 +msgid "The uploaded file was only partially uploaded." +msgstr "Sólo se ha podido subir una parte del archivo." + +#: wp-admin/includes/file.php:258 wp-admin/includes/file.php:384 +msgid "No file was uploaded." +msgstr "No se ha subido ningún archivo." + +#: wp-admin/includes/file.php:260 wp-admin/includes/file.php:386 +msgid "Missing a temporary folder." +msgstr "Falta un directorio temporal." + +#: wp-admin/includes/file.php:261 wp-admin/includes/file.php:387 +msgid "Failed to write file to disk." +msgstr "El archivo no se ha podido grabar en el disco." + +#: wp-admin/includes/file.php:262 wp-admin/includes/file.php:388 +msgid "File upload stopped by extension." +msgstr "Subida de archivo detenida a causa de la extensión." + +#: wp-admin/includes/file.php:279 wp-admin/includes/file.php:404 +msgid "Invalid form submission." +msgstr "Se envió un formulario erróneo." + +#: wp-admin/includes/file.php:290 wp-admin/includes/import.php:63 +msgid "File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini or by post_max_size being defined as smaller than upload_max_filesize in php.ini." +msgstr "El archivo está vacío. Por favor, sube algo con más sustancia. Este error puede que lo provoque que tu fichero php.ini tenga inhabilitadas las subidas o porque post_max_size esté definido más pequeño que el upload_max_filesize en php.ini." + +#: wp-admin/includes/file.php:296 +msgid "Specified file failed upload test." +msgstr "El archivo indicado no cumple los requisitos de subida." + +#: wp-admin/includes/file.php:412 +msgid "File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini." +msgstr "El archivo está vacío. Por favor, sube algo con más sustancia. Este error podría ser causado porque las subidas está desactivadas en tu php.ini." + +#: wp-admin/includes/file.php:416 +msgid "Specified file does not exist." +msgstr "El archivo especificado no existe." + +#: wp-admin/includes/file.php:480 +msgid "Invalid URL Provided." +msgstr "La URL especificada no es válido." + +#: wp-admin/includes/file.php:484 +msgid "Could not create Temporary file." +msgstr "No ha sido posible crear el archivo temporal." + +#: wp-admin/includes/file.php:582 wp-admin/includes/file.php:618 +msgid "Could not retrieve file from archive." +msgstr "No se puede recuperar el archivo." + +#: wp-admin/includes/file.php:628 +msgid "Could not extract file from archive." +msgstr "No podemos descomprimir el archivo." + +#: wp-admin/includes/file.php:631 wp-admin/includes/file.php:717 +#: wp-admin/includes/file.php:758 wp-admin/includes/update-core.php:421 +#: wp-admin/includes/update-core.php:508 +msgid "Could not copy file." +msgstr "No ha sido posible copiar el archivo." + +#: wp-admin/includes/file.php:675 +msgid "Empty archive." +msgstr "Archivo vacío." + +#: wp-admin/includes/file.php:948 +msgid "Error: There was an error connecting to the server, Please verify the settings are correct." +msgstr "Error: Se ha producido un error en la conexión con el servidor. Por favor, verifica que la configuración es correcta." + +#: wp-admin/includes/file.php:956 +msgid "FTP" +msgstr "FTP" + +#: wp-admin/includes/file.php:958 +msgid "FTPS (SSL)" +msgstr "FTPS (SSL)" + +#: wp-admin/includes/file.php:960 +msgid "SSH2" +msgstr "SSH2" + +#: wp-admin/includes/file.php:981 +msgid "Connection Information" +msgstr "Datos de conexión" + +#: wp-admin/includes/file.php:1003 +msgid "Hostname" +msgstr "Servidor" + +#: wp-includes/general-template.php:258 wp-login.php:516 wp-login.php:636 +#: wp-admin/user-new.php:287 wp-admin/install.php:101 wp-admin/install.php:225 +#: wp-admin/includes/file.php:983 +#: wp-admin/includes/class-wp-users-list-table.php:163 +#: wp-admin/user-edit.php:237 +msgid "Username" +msgstr "Nombre de usuario" + +#: wp-includes/general-template.php:259 wp-login.php:640 +#: wp-admin/user-new.php:309 wp-admin/install.php:229 +#: wp-admin/options-writing.php:115 +#: wp-admin/includes/class-wp-posts-list-table.php:796 +#: wp-admin/includes/file.php:984 +msgid "Password" +msgstr "Contraseña" + +#: wp-admin/includes/file.php:1019 +msgid "Authentication Keys" +msgstr "Claves de autentificación" + +#: wp-admin/includes/file.php:1021 +msgid "Public Key:" +msgstr "Clave pública:" + +#: wp-admin/includes/file.php:1022 +msgid "Private Key:" +msgstr "Clave privada:" + +#: wp-admin/includes/file.php:1025 +msgid "Enter the location on the server where the keys are located. If a passphrase is needed, enter that in the password field above." +msgstr "Introduce la dirección del servidor en el que se encuentran las claves. Si es necesaria una contraseña, introdúcela en el campo de contraseña." + +#: wp-admin/includes/file.php:1030 wp-admin/includes/file.php:1032 +msgid "Connection Type" +msgstr "Tipo de conexión" + +#: wp-admin/includes/file.php:1051 +msgid "Proceed" +msgstr "Ejecutar" + +#: wp-admin/includes/image-edit.php:19 wp-admin/includes/image-edit.php:545 +msgid "Image data does not exist. Please re-upload the image." +msgstr "No existen datos de la imagen. Por favor, vuelve a subir la imagen." + +#: wp-admin/includes/image-edit.php:40 +msgid "Crop" +msgstr "Recortar" + +#: wp-admin/includes/image-edit.php:44 +msgid "Rotate counter-clockwise" +msgstr "Rotar en sentido contrario a las agujas del reloj." + +#: wp-admin/includes/image-edit.php:45 +msgid "Rotate clockwise" +msgstr "Rotar en el sentido de las agujas del reloj." + +#: wp-admin/includes/image-edit.php:47 +msgid "Image rotation is not supported by your web host (function imagerotate() is missing)" +msgstr "Tu hosting no soporta la rotación de imágenes (no tiene la función imagerotate())" + +#: wp-admin/includes/image-edit.php:53 +msgid "Flip vertically" +msgstr "Voltear verticalmente" + +#: wp-admin/includes/image-edit.php:54 +msgid "Flip horizontally" +msgstr "Voltear horizontalmente" + +#: wp-includes/js/tinymce/langs/wp-langs.php:268 +#: wp-includes/js/tinymce/wp-mce-help.php:236 +#: wp-admin/includes/image-edit.php:57 +msgid "Redo" +msgstr "Rehacer" + +#: wp-admin/includes/image-edit.php:82 +msgid "Scale Image" +msgstr "Escalar imagen" + +#: wp-admin/includes/image-edit.php:84 +msgid "You can proportionally scale the original image. For best results the scaling should be done before performing any other operations on it like crop, rotate, etc. Note that if you make the image larger it may become fuzzy." +msgstr "Puedes escalar proporcionalmente la imagen original. Para obtener los mejores resultados es mejor escalar la imagen antes de realizar otras operaciones como recortar, rotar, etc. Date cuenta de que si haces más grande la imagen puede verse borrosa." + +#: wp-admin/includes/image-edit.php:85 +msgid "Original dimensions %s" +msgstr "Dimensiones originales %s" + +#: wp-includes/js/tinymce/langs/wp-langs.php:374 +#: wp-admin/includes/image-edit.php:89 +msgid "Scale" +msgstr "Escala" + +#: wp-admin/custom-background.php:222 wp-admin/custom-background.php:226 +#: wp-admin/includes/image-edit.php:97 +msgid "Restore Original Image" +msgstr "Restaurar imagen original" + +#: wp-admin/includes/image-edit.php:99 +msgid "Discard any changes and restore the original image." +msgstr "Descartar todos los cambios y restaurar la imagen original." + +#: wp-admin/includes/image-edit.php:102 +msgid "Previously edited copies of the image will not be deleted." +msgstr "Las copias de la imagen editadas previamente no se borrarán." + +#: wp-admin/includes/image-edit.php:106 +msgid "Restore image" +msgstr "Restaurar imagen" + +#: wp-admin/includes/image-edit.php:117 +msgid "Image Crop" +msgstr "Recortar imagen" + +#: wp-admin/includes/image-edit.php:118 wp-admin/includes/image-edit.php:164 +msgid "(help)" +msgstr "(ayuda)" + +#: wp-admin/includes/image-edit.php:120 +msgid "The image can be cropped by clicking on it and dragging to select the desired part. While dragging the dimensions of the selection are displayed below." +msgstr "Puedes recortar la imagen haciendo clic en ella y arrastrando la parte deseada. Mientras arrastras, abajo se muestran las dimensiones." + +#: wp-admin/includes/image-edit.php:121 wp-admin/user-edit.php:211 +msgid "Keyboard Shortcuts" +msgstr "Atajos de teclado" + +#: wp-admin/includes/image-edit.php:123 +msgid "Arrow: move by 10px" +msgstr "Flecha: mover 10px" + +#: wp-admin/includes/image-edit.php:124 +msgid "Shift + arrow: move by 1px" +msgstr "May + flecha: mover 1px" + +#: wp-admin/includes/image-edit.php:125 +msgid "Ctrl + arrow: resize by 10px" +msgstr "Control + flecha: redimensiona en 10px" + +#: wp-admin/includes/image-edit.php:126 +msgid "Ctrl + Shift + arrow: resize by 1px" +msgstr "Control + May + flecha: redimensiona en 1 px" + +#: wp-admin/includes/image-edit.php:127 +msgid "Shift + drag: lock aspect ratio" +msgstr "May + arrastrar: bloquea relación de aspecto" + +#: wp-admin/includes/image-edit.php:130 +msgid "Crop Aspect Ratio" +msgstr "Relación de aspecto de la zona a recortar" + +#: wp-admin/includes/image-edit.php:131 +msgid "You can specify the crop selection aspect ratio then hold down the Shift key while dragging to lock it. The values can be 1:1 (square), 4:3, 16:9, etc. If there is a selection, specifying aspect ratio will set it immediately." +msgstr "Puedes especificar la relación de aspecto de la zona seleccionada para recortar y luego mantener la tecla mayúsculas mientras arrastras para bloquearlo. Los valores pueden ser 1:1 (cuadrado), 4:3, 16:9, etc. Si hay una selección, al especificar la relación de aspecto se establece al instante." + +#: wp-admin/includes/image-edit.php:133 +msgid "Crop Selection" +msgstr "Selección de recorte" + +#: wp-admin/includes/image-edit.php:134 +msgid "Once started, the selection can be adjusted by entering new values (in pixels). Note that these values are scaled to approximately match the original image dimensions. The minimum selection size equals the thumbnail size as set in the Media settings." +msgstr "Una vez comiences, la selección puede ajustarse introduciendo nuevos valores (en pixels). Date cuenta que estos valores se escalan para que se ajusten, aproximadamente, a las dimensiones de la imagen original. El tamaño de selección mínimo se iguala al tamaño de miniatura establecido en las opciones de Multimedia." + +#: wp-admin/includes/image-edit.php:139 +msgid "Aspect ratio:" +msgstr "Relación de aspecto:" + +#: wp-admin/includes/image-edit.php:148 +msgid "Selection:" +msgstr "Selección:" + +#: wp-admin/includes/image-edit.php:163 +msgid "Thumbnail Settings" +msgstr "Opciones de miniatura" + +#: wp-admin/includes/image-edit.php:165 +msgid "The thumbnail image can be cropped differently. For example it can be square or contain only a portion of the original image to showcase it better. Here you can select whether to apply changes to all image sizes or make the thumbnail different." +msgstr "La imagen de miniatura puede recortarse de manera diferente. Por ejemplo, puede ser cuadrada, o contener sólo una parte de la imagen original para que se ajuste mejor. Aquí puedes elegir si aplicar los cambios a todos los tamaños de imagen o hacer una miniatura diferente." + +#: wp-admin/includes/image-edit.php:169 +msgid "Current thumbnail" +msgstr "Miniatura actual" + +#: wp-admin/includes/image-edit.php:173 +msgid "Apply changes to:" +msgstr "Aplicar cambios a:" + +#: wp-admin/includes/image-edit.php:177 +msgid "All image sizes" +msgstr "Todos los tamaños de imagen" + +#: wp-includes/js/tinymce/langs/wp-langs.php:486 +#: wp-admin/includes/image-edit.php:181 wp-admin/includes/media.php:876 +msgid "Thumbnail" +msgstr "Miniatura" + +#: wp-admin/includes/image-edit.php:185 +msgid "All sizes except thumbnail" +msgstr "Todos los tamaños excepto la miniatura" + +#: wp-admin/includes/image-edit.php:195 +msgid "There are unsaved changes that will be lost. 'OK' to continue, 'Cancel' to return to the Image Editor." +msgstr "Hay cambios sin guardar que se perderán. 'Aceptar' para continuar, 'Cancelar' para volver al Editor de imágenes." + +#: wp-admin/includes/image-edit.php:428 +msgid "Cannot load image metadata." +msgstr "No se pudieron cargar los metadatos de la imagen." + +#: wp-admin/includes/image-edit.php:483 +msgid "Cannot save image metadata." +msgstr "No se pudieron guardar los metadatos de la imagen." + +#: wp-admin/includes/image-edit.php:488 +msgid "Image metadata is inconsistent." +msgstr "Los metadatos de la imagen son inconsistentes." + +#: wp-admin/includes/image-edit.php:490 +msgid "Image restored successfully." +msgstr "Imagen restaurada con éxito." + +#: wp-admin/includes/image-edit.php:503 +msgid "Unable to create new image." +msgstr "No se pudo crear una imagen nueva." + +#: wp-admin/includes/image-edit.php:529 +msgid "Error while saving the scaled image. Please reload the page and try again." +msgstr "Error al tratar de guardar la imagen escalada. Vuelve a cargar la página e inténtalo de nuevo." + +#: wp-admin/includes/image-edit.php:537 +msgid "Nothing to save, the image has not changed." +msgstr "Nada que guardar, la imagen no ha cambiado." + +#: wp-admin/includes/image-edit.php:580 +msgid "Unable to save the image." +msgstr "No se pudo guardar la imagen." + +#: wp-admin/includes/image-edit.php:665 +msgid "Image saved" +msgstr "Imagen guardada" + +#: wp-includes/media.php:247 +msgid "File “%s” doesn’t exist?" +msgstr "¿El archivo “%s” no existe?" + +#: wp-includes/media.php:250 +msgid "The GD image library is not installed." +msgstr "La librería de imágenes GD no está instalada." + +#: wp-includes/media.php:257 +msgid "File “%s” is not an image." +msgstr "El archivo “%s” no es una imagen." + +#: wp-admin/includes/media.php:18 +msgid "From Computer" +msgstr "Desde el ordenador" + +#: wp-admin/includes/media.php:19 +msgid "From URL" +msgstr "Desde una URL" + +#: wp-admin/includes/media.php:20 +msgid "Gallery" +msgstr "Galería" + +#: wp-admin/upload.php:133 wp-admin/includes/media.php:21 +msgid "Media Library" +msgstr "Librería multimedia" + +#: wp-admin/includes/media.php:53 +msgid "Gallery (%s)" +msgstr "Galería (%s)" + +#: wp-admin/includes/media.php:316 +msgid "Uploads" +msgstr "Archivos subidos" + +#: wp-admin/includes/media.php:316 wp-admin/includes/template.php:1558 +msgid "WordPress" +msgstr "WordPress" + +#: wp-admin/includes/media.php:398 +msgid "Upload/Insert %s" +msgstr "Subir/Insertar %s" + +#: wp-includes/js/tinymce/langs/wp-langs.php:472 +#: wp-admin/includes/media.php:396 +msgid "Add Media" +msgstr "Añadir objeto" + +#: wp-includes/js/tinymce/langs/wp-langs.php:473 +#: wp-admin/includes/media.php:390 +msgid "Add an Image" +msgstr "Añadir una imagen" + +#: wp-includes/js/tinymce/langs/wp-langs.php:474 +#: wp-admin/includes/media.php:392 +msgid "Add Video" +msgstr "Añadir un vídeo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:475 +#: wp-admin/includes/media.php:394 +msgid "Add Audio" +msgstr "Añadir un archivo de audio" + +#: wp-admin/admin-ajax.php:1529 wp-admin/includes/media.php:562 +#: wp-admin/includes/media.php:667 wp-admin/includes/media.php:726 +#: wp-admin/includes/media.php:782 wp-admin/includes/post.php:1835 +msgid "Saved." +msgstr "Guardado." + +#: wp-includes/js/tinymce/langs/wp-langs.php:77 +#: wp-includes/js/tinymce/langs/wp-langs.php:340 +#: wp-includes/js/tinymce/langs/wp-langs.php:439 +#: wp-admin/custom-background.php:256 wp-admin/includes/media.php:850 +#: wp-admin/includes/media.php:2133 +msgid "Left" +msgstr "Izquierda" + +#: wp-includes/js/tinymce/langs/wp-langs.php:78 +#: wp-includes/js/tinymce/langs/wp-langs.php:419 +#: wp-includes/js/tinymce/langs/wp-langs.php:440 +#: wp-admin/custom-background.php:260 wp-admin/includes/media.php:850 +#: wp-admin/includes/media.php:2135 +msgid "Center" +msgstr "Centrar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:79 +#: wp-includes/js/tinymce/langs/wp-langs.php:341 +#: wp-includes/js/tinymce/langs/wp-langs.php:437 +#: wp-admin/custom-background.php:264 wp-admin/includes/media.php:850 +#: wp-admin/includes/media.php:2137 +msgid "Right" +msgstr "Derecha" + +#: wp-includes/js/tinymce/langs/wp-langs.php:487 +#: wp-admin/includes/media.php:876 +msgid "Medium" +msgstr "Medio" + +#: wp-admin/includes/media.php:876 +msgid "Large" +msgstr "Grande" + +#: wp-includes/js/tinymce/langs/wp-langs.php:488 +#: wp-admin/includes/media.php:876 +msgid "Full Size" +msgstr "Tamaño completo" + +#: wp-includes/js/tinymce/langs/wp-langs.php:485 +#: wp-admin/includes/media.php:913 +msgid "Size" +msgstr "Tamaño" + +#: wp-admin/includes/media.php:945 wp-admin/includes/media.php:1113 +msgid "File URL" +msgstr "URL del archivo" + +#: wp-admin/includes/media.php:946 +msgid "Post URL" +msgstr "URL de la entrada" + +#: wp-includes/js/tinymce/langs/wp-langs.php:513 +#: wp-admin/includes/media.php:969 wp-admin/includes/media.php:2121 +msgid "Alternate Text" +msgstr "Texto alternativo" + +#: wp-admin/includes/media.php:970 wp-admin/includes/media.php:2124 +msgid "Alt text for the image, e.g. “The Mona Lisa”" +msgstr "Texto alternativo (alt) de la imagen, por ejemplo “La Mona Lisa”" + +#: wp-includes/js/tinymce/langs/wp-langs.php:76 +#: wp-includes/js/tinymce/langs/wp-langs.php:333 +#: wp-admin/includes/media.php:974 wp-admin/includes/media.php:2128 +msgid "Alignment" +msgstr "Alineación" + +#: wp-admin/includes/media.php:1030 +msgid "Empty Title filled from filename." +msgstr "Título vacío rellenado desde el nombre de fichero." + +#: wp-includes/js/tinymce/langs/wp-langs.php:512 +#: wp-admin/includes/media.php:1094 +msgid "Caption" +msgstr "Leyenda" + +#: wp-includes/js/tinymce/langs/wp-langs.php:343 +#: wp-admin/includes/media.php:1103 +msgid "Link URL" +msgstr "URL del enlace" + +#: wp-includes/js/tinymce/langs/wp-langs.php:491 +#: wp-admin/includes/media.php:1106 wp-admin/includes/media.php:2149 +msgid "Enter a link URL or click above for presets." +msgstr "Introduce una URL para el enlace o clic sobre el actual." + +#: wp-admin/includes/class-wp-posts-list-table.php:861 +#: wp-admin/includes/media.php:1109 wp-admin/includes/media.php:1817 +#: wp-admin/includes/meta-boxes.php:578 wp-admin/includes/meta-boxes.php:579 +msgid "Order" +msgstr "Orden" + +#: wp-admin/includes/media.php:1117 +msgid "Location of the uploaded file." +msgstr "Ubicación del archivo subido." + +#: wp-admin/includes/media.php:1214 wp-admin/includes/media.php:1803 +msgid "Show" +msgstr "Mostrar" + +#: wp-admin/includes/media.php:1215 wp-admin/includes/media.php:1804 +msgid "Hide" +msgstr "Ocultar" + +#: wp-includes/js/tinymce/langs/wp-langs.php:481 +#: wp-admin/includes/media.php:1270 +msgid "Edit Image" +msgstr "Editar imagen" + +#: wp-admin/includes/media.php:1288 +msgid "File name:" +msgstr "Nombre de archivo:" + +#: wp-admin/includes/media.php:1289 +msgid "File type:" +msgstr "Tipo de archivo:" + +#: wp-admin/includes/media.php:1290 +msgid "Upload date:" +msgstr "Fecha de subida:" + +#: wp-admin/includes/media.php:1292 +msgid "Dimensions:" +msgstr "Dimensiones:" + +#: wp-admin/includes/media.php:1312 wp-admin/includes/media.php:2257 +#: wp-admin/includes/media.php:2266 +msgid "Insert into Post" +msgstr "Insertar en la entrada" + +#: wp-admin/includes/media.php:1318 +msgid "You are about to delete %s." +msgstr "Estás a punto de eliminar %s." + +#: wp-admin/includes/media.php:1525 +msgid "Select Files" +msgstr "Elegir archivos" + +#: wp-admin/includes/media.php:1566 +msgid "Choose files to upload" +msgstr "Elige los archivos a subir" + +#: wp-admin/includes/media.php:1568 +msgid "Cancel Upload" +msgstr "Cancelar la subida" + +#: wp-admin/includes/media.php:1572 +msgid "After a file has been uploaded, you can add titles and descriptions." +msgstr "Después de subir un archivo, puedes agregar el título y la descripcion." + +#: wp-admin/includes/media.php:1618 +msgid "Add media files from your computer" +msgstr "Añadir archivos desde tu ordenador" + +#: wp-admin/includes/media.php:1647 wp-admin/includes/media.php:1827 +#: wp-admin/includes/media.php:2068 wp-admin/media-upload.php:96 +msgid "Save all changes" +msgstr "Guardar todos los cambios" + +#: wp-admin/includes/media.php:1679 +msgid "Add media file from URL" +msgstr "Añadir archivo desde una URL" + +#: wp-admin/includes/media.php:1802 +msgid "All Tabs:" +msgstr "Todas las pestañas:" + +#: wp-admin/includes/media.php:1806 +msgid "Sort Order:" +msgstr "Ordenar:" + +#: wp-admin/includes/media.php:1807 wp-admin/includes/media.php:1875 +msgid "Ascending" +msgstr "Ascendente" + +#: wp-admin/includes/media.php:1808 wp-admin/includes/media.php:1878 +msgid "Descending" +msgstr "Descendente" + +#: wp-includes/post.php:53 wp-admin/includes/media.php:1816 +#: wp-admin/menu.php:88 wp-admin/menu.php:232 +msgid "Media" +msgstr "Multimedia" + +#: wp-includes/post-template.php:1419 wp-admin/includes/media.php:1818 +msgid "Actions" +msgstr "Acciones" + +#: wp-admin/includes/media.php:1834 +msgid "Gallery Settings" +msgstr "Opciones de la galería" + +#: wp-admin/includes/media.php:1839 +msgid "Link thumbnails to:" +msgstr "Enlazar miniaturas a:" + +#: wp-admin/includes/media.php:1844 +msgid "Image File" +msgstr "Archivo de imagen" + +#: wp-admin/includes/media.php:1847 +msgid "Attachment Page" +msgstr "Página de adjuntos" + +#: wp-admin/includes/media.php:1854 +msgid "Order images by:" +msgstr "Ordenar imágenes por:" + +#: wp-admin/includes/media.php:1859 +msgid "Menu order" +msgstr "Orden del menú" + +#: wp-admin/includes/media.php:1861 +msgid "Date/Time" +msgstr "Fecha/Hora" + +#: wp-admin/includes/media.php:1862 +msgid "Random" +msgstr "Aleatorio" + +#: wp-admin/includes/media.php:1870 +msgid "Order:" +msgstr "Orden:" + +#: wp-admin/includes/media.php:1885 +msgid "Gallery columns:" +msgstr "Columnas de la galería" + +#: wp-admin/includes/media.php:1905 +msgid "Insert gallery" +msgstr "Insertar galería" + +#: wp-admin/includes/media.php:1906 +msgid "Update gallery settings" +msgstr "Actualizar ajustes de la galería" + +#: wp-admin/upload.php:210 wp-admin/includes/media.php:1949 +#: wp-admin/includes/media.php:1951 +msgid "Search Media" +msgstr "Buscar medios" + +#: wp-admin/includes/media.php:1974 +msgid "All Types" +msgstr "Todos los tipos" + +#: wp-admin/includes/media.php:2038 +msgid "Filter »" +msgstr "Filtrar »" + +#: wp-admin/includes/media.php:2087 +msgid "Image Caption" +msgstr "Leyenda de la imagen" + +#: wp-admin/includes/media.php:2101 +msgid "Insert an image from another web site" +msgstr "Insertar una imagen desde otra web" + +#: wp-includes/js/tinymce/langs/wp-langs.php:326 +#: wp-admin/includes/media.php:2105 +msgid "Image URL" +msgstr "URL de la imagen" + +#: wp-admin/includes/media.php:2113 +msgid "Image Title" +msgstr "Título de la imagen" + +#: wp-admin/includes/media.php:2143 +msgid "Link Image To:" +msgstr "Enlazar la imagen a:" + +#: wp-admin/includes/media.php:2148 +msgid "Link to image" +msgstr "Enlace a la imagen" + +#: wp-admin/includes/media.php:2169 +msgid "Audio File URL" +msgstr "URL del archivo de audio" + +#: wp-admin/includes/media.php:2181 +msgid "Link text, e.g. “Still Alive by Jonathan Coulton”" +msgstr "Texto del enlace, por ejemplo “Still Alive por Jonathan Coulton”" + +#: wp-admin/includes/media.php:2199 +msgid "Video URL" +msgstr "URL del vídeo" + +#: wp-admin/includes/media.php:2241 +msgid "Link text, e.g. “Ransom Demands (PDF)”" +msgstr "Texto del enlace, por ejemplo \"Peticiones de rescate (PDF)\"" + +#: wp-admin/includes/media.php:2297 +msgid "You are using the Flash uploader. Problems? Try the Browser uploader instead." +msgstr "Estás usando la subida de archivos mediante Flash. ¿Tienes problemas?, prueba el cargador del navegador." + +#: wp-admin/includes/media.php:2308 +msgid "You are using the Browser uploader." +msgstr "Estás usando el cargador del navegador." + +#: wp-admin/includes/media.php:2312 +msgid "Try the Flash uploader instead." +msgstr "Prueba el cargador Flash en su lugar." + +#: wp-includes/script-loader.php:348 wp-admin/includes/meta-boxes.php:33 +msgid "Save as Pending" +msgstr "Guardar como pendiente" + +#: wp-admin/includes/meta-boxes.php:42 +msgid "Preview Changes" +msgstr "Vista previa de los cambios" + +#: wp-admin/export.php:156 wp-admin/export.php:188 +#: wp-admin/includes/meta-boxes.php:60 +msgid "Status:" +msgstr "Estado:" + +#: wp-includes/script-loader.php:354 wp-admin/includes/meta-boxes.php:65 +#: wp-admin/includes/meta-boxes.php:92 +msgid "Privately Published" +msgstr "Publicada como privada" + +#: wp-includes/script-loader.php:337 wp-admin/includes/template.php:645 +#: wp-admin/includes/meta-boxes.php:103 wp-admin/includes/meta-boxes.php:149 +msgid "OK" +msgstr "Aceptar" + +#: wp-admin/includes/meta-boxes.php:111 +msgid "Visibility:" +msgstr "Visibilidad:" + +#: wp-includes/script-loader.php:350 wp-includes/post.php:598 +#: wp-includes/post.php:618 wp-admin/includes/class-wp-posts-list-table.php:808 +#: wp-admin/includes/class-wp-posts-list-table.php:950 +#: wp-admin/includes/template.php:1635 wp-admin/includes/meta-boxes.php:116 +#: wp-admin/includes/meta-boxes.php:146 +msgid "Private" +msgstr "Privada" + +#: wp-admin/includes/template.php:1633 wp-admin/includes/meta-boxes.php:119 +#: wp-admin/includes/meta-boxes.php:144 +msgid "Password protected" +msgstr "Protegida con contraseña" + +#: wp-includes/script-loader.php:352 wp-admin/includes/meta-boxes.php:122 +msgid "Public, Sticky" +msgstr "Pública, Fija" + +#: wp-includes/script-loader.php:351 wp-admin/includes/meta-boxes.php:125 +#: wp-admin/includes/meta-boxes.php:140 +msgid "Public" +msgstr "Público" + +#: wp-admin/includes/meta-boxes.php:142 +msgid "Stick this post to the front page" +msgstr "Fijar esta entrada en la página principal" + +#: wp-admin/includes/meta-boxes.php:162 +msgid "Scheduled for: %1$s" +msgstr "Programada para:%1$s" + +#: wp-admin/includes/meta-boxes.php:164 +msgid "Published on: %1$s" +msgstr "Publicada el: %1$s" + +#: wp-admin/includes/meta-boxes.php:166 wp-admin/includes/meta-boxes.php:174 +msgid "Publish immediately" +msgstr "Publicar inmediatamente" + +#: wp-admin/includes/meta-boxes.php:168 +msgid "Schedule for: %1$s" +msgstr "Programar para:%1$s" + +#: wp-admin/includes/meta-boxes.php:170 +msgid "Publish on: %1$s" +msgstr "Publicar el: %1$s" + +#: wp-includes/script-loader.php:346 wp-admin/includes/meta-boxes.php:212 +#: wp-admin/includes/meta-boxes.php:213 +msgid "Schedule" +msgstr "Programar" + +#: wp-includes/script-loader.php:279 wp-includes/script-loader.php:347 +#: wp-includes/js/tinymce/langs/wp-langs.php:18 +#: wp-admin/includes/class-wp-posts-list-table.php:999 +#: wp-admin/includes/class-wp-posts-list-table.php:1001 +#: wp-admin/includes/class-wp-posts-list-table.php:1004 +#: wp-admin/includes/internal-linking.php:118 +#: wp-admin/includes/template.php:507 +#: wp-admin/includes/class-wp-plugins-list-table.php:266 +#: wp-admin/includes/post.php:1779 wp-admin/includes/meta-boxes.php:224 +#: wp-admin/includes/meta-boxes.php:225 wp-admin/edit-tag-form.php:90 +msgid "Update" +msgstr "Actualizar" + +#: wp-includes/taxonomy.php:412 +msgid "Add or remove tags" +msgstr "Añadir o quitar etiquetas" + +#: wp-includes/script-loader.php:296 wp-includes/script-loader.php:334 +#: wp-admin/includes/widgets.php:182 wp-admin/includes/meta-boxes.php:293 +#: wp-admin/includes/meta-boxes.php:682 wp-admin/press-this.php:578 +msgid "Add" +msgstr "Añadir" + +#: wp-includes/taxonomy.php:403 wp-admin/includes/meta-boxes.php:656 +msgid "All Categories" +msgstr "Todas las categorías" + +#: wp-admin/includes/nav-menu.php:878 wp-admin/includes/meta-boxes.php:327 +#: wp-admin/includes/meta-boxes.php:657 wp-admin/press-this.php:524 +msgid "Most Used" +msgstr "Más utilizadas" + +#: wp-admin/includes/meta-boxes.php:678 wp-admin/includes/meta-boxes.php:680 +msgid "+ Add New Category" +msgstr "+ Añadir categoría nueva " + +#: wp-admin/includes/meta-boxes.php:681 +msgid "New category name" +msgstr "Nombre nueva categoría" + +#: wp-admin/includes/meta-boxes.php:383 +msgid "Excerpts are optional hand-crafted summaries of your content that can be used in your theme. Learn more about manual excerpts." +msgstr "Los extractos son resúmenes opcionales de tu contenido hechos \"ex-profeso\" que puedes usar en tu tema. Aprende algo acerca de los extractos manuales." + +#: wp-admin/includes/meta-boxes.php:398 +msgid "Already pinged:" +msgstr "Pingbacks enviados:" + +#: wp-admin/includes/meta-boxes.php:407 +msgid "Send trackbacks to:" +msgstr "Enviar trackbacks a:" + +#: wp-admin/includes/meta-boxes.php:407 +msgid "Separate multiple URLs with spaces" +msgstr "Separar varias URLs con espacios" + +#: wp-admin/includes/meta-boxes.php:431 +msgid "Custom fields can be used to add extra metadata to a post that you can use in your theme." +msgstr "Los campos personalizados se pueden usar para añadir metadatos adicionales a una entrada y luego mostrarlos en tu tema. ." + +#: wp-admin/includes/meta-boxes.php:448 +msgid "Allow trackbacks and pingbacks on this page." +msgstr "Permitir trackbacks y pingbacks en esta página." + +#: wp-admin/includes/meta-boxes.php:448 +msgid "http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" +msgstr "http://codex.wordpress.org/Introduction_to_Blogging#Managing_Comments" + +#: wp-admin/includes/meta-boxes.php:489 +msgid "Show comments" +msgstr "Mostrar comentarios" + +#: wp-admin/includes/class-wp-posts-list-table.php:847 +#: wp-admin/includes/meta-boxes.php:562 wp-admin/includes/meta-boxes.php:563 +msgid "Parent" +msgstr "Superior" + +#: wp-admin/includes/class-wp-posts-list-table.php:849 +msgid "Main Page (no parent)" +msgstr "Página principal (sin superior)" + +#: wp-admin/includes/class-wp-posts-list-table.php:868 +#: wp-admin/includes/meta-boxes.php:571 +msgid "Template" +msgstr "Plantilla" + +#: wp-admin/includes/class-wp-posts-list-table.php:873 +#: wp-admin/includes/meta-boxes.php:573 +msgid "Default Template" +msgstr "Plantilla predeterminada" + +#: wp-admin/includes/meta-boxes.php:608 +msgid "Visit Link" +msgstr "Visitar enlace" + +#: wp-admin/includes/meta-boxes.php:616 +msgid "Keep this link private" +msgstr "Mantener este enlace como privado" + +#: wp-admin/includes/class-wp-links-list-table.php:140 +#: wp-admin/includes/meta-boxes.php:627 +msgid "" +"You are about to delete this link '%s'\n" +" 'Cancel' to stop, 'OK' to delete." +msgstr "" +"Estás a punto de borrar este enlace '%s'\n" +" 'Cancelar' para borrar, 'Aceptar' para borrarlo." + +#: wp-admin/includes/meta-boxes.php:702 +msgid "_blank — new window or tab." +msgstr "_blank — nueva ventana o pestaña." + +#: wp-admin/includes/meta-boxes.php:705 +msgid "_top — current window or tab, with no frames." +msgstr "_top — ventana o pestaña actual, sin marcos." + +#: wp-admin/includes/meta-boxes.php:708 +msgid "_none — same window or tab." +msgstr "_none — misma ventana o pestaña." + +#: wp-admin/includes/meta-boxes.php:710 +msgid "Choose the target frame for your link." +msgstr "Ellige el marco de destino para tu enlace." + +#: wp-admin/includes/meta-boxes.php:757 +msgid "rel:" +msgstr "rel:" + +#: wp-admin/includes/meta-boxes.php:764 wp-admin/includes/meta-boxes.php:765 +msgid "identity" +msgstr "identidad" + +#: wp-admin/includes/meta-boxes.php:768 +msgid "another web address of mine" +msgstr "otra dirección web mía" + +#: wp-admin/includes/meta-boxes.php:772 wp-admin/includes/meta-boxes.php:773 +msgid "friendship" +msgstr "amistad" + +#: wp-admin/includes/meta-boxes.php:775 +msgid "contact" +msgstr "contacto" + +#: wp-admin/includes/meta-boxes.php:777 +msgid "acquaintance" +msgstr "conocido" + +#: wp-admin/includes/meta-boxes.php:779 +msgid "friend" +msgstr "amigo" + +#: wp-admin/includes/meta-boxes.php:781 wp-admin/includes/meta-boxes.php:814 +#: wp-admin/includes/meta-boxes.php:837 +msgid "none" +msgstr "ninguno" + +#: wp-admin/includes/meta-boxes.php:785 wp-admin/includes/meta-boxes.php:786 +msgid "physical" +msgstr "físico" + +#: wp-admin/includes/meta-boxes.php:789 +msgid "met" +msgstr "conocido en persona" + +#: wp-admin/includes/meta-boxes.php:793 wp-admin/includes/meta-boxes.php:794 +msgid "professional" +msgstr "profesional" + +#: wp-admin/includes/meta-boxes.php:797 +msgid "co-worker" +msgstr "compañero de trabajo" + +#: wp-admin/includes/meta-boxes.php:800 +msgid "colleague" +msgstr "colega" + +#: wp-admin/includes/meta-boxes.php:804 wp-admin/includes/meta-boxes.php:805 +msgid "geographical" +msgstr "geográfico" + +#: wp-admin/includes/meta-boxes.php:808 +msgid "co-resident" +msgstr "co-residente" + +#: wp-admin/includes/meta-boxes.php:811 +msgid "neighbor" +msgstr "vecino" + +#: wp-admin/includes/meta-boxes.php:818 wp-admin/includes/meta-boxes.php:819 +msgid "family" +msgstr "familia" + +#: wp-admin/includes/meta-boxes.php:822 +msgid "child" +msgstr "hija/o" + +#: wp-admin/includes/meta-boxes.php:825 +msgid "kin" +msgstr "pariente" + +#: wp-admin/includes/meta-boxes.php:828 +msgid "parent" +msgstr "padre/madre" + +#: wp-admin/includes/meta-boxes.php:831 +msgid "sibling" +msgstr "hermano/a" + +#: wp-admin/includes/meta-boxes.php:834 +msgid "spouse" +msgstr "cónyuge" + +#: wp-admin/includes/meta-boxes.php:841 wp-admin/includes/meta-boxes.php:842 +msgid "romantic" +msgstr "romántica" + +#: wp-admin/includes/meta-boxes.php:845 +msgid "muse" +msgstr "inspiración" + +#: wp-admin/includes/meta-boxes.php:848 +msgid "crush" +msgstr "flechazo" + +#: wp-admin/includes/meta-boxes.php:851 +msgid "date" +msgstr "fecha" + +#: wp-admin/includes/meta-boxes.php:854 +msgid "sweetheart" +msgstr "pareja" + +#: wp-admin/includes/meta-boxes.php:861 +msgid "If the link is to a person, you can specify your relationship with them using the above form. If you would like to learn more about the idea check out XFN." +msgstr "Si el enlace es a una persona, puedes especificar tu relación con ella utilizando el formulario de arriba. Si deseas aprender más acerca de cómo funciona esto revisa el XFN." + +#: wp-admin/includes/meta-boxes.php:877 +msgid "Image Address" +msgstr "Dirección de la imagen" + +#: wp-admin/includes/meta-boxes.php:881 +msgid "RSS Address" +msgstr "Dirección RSS" + +#: wp-admin/includes/meta-boxes.php:885 +msgid "Notes" +msgstr "Notas" + +#: wp-admin/includes/class-wp-links-list-table.php:85 +#: wp-admin/includes/meta-boxes.php:889 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:143 +msgid "Rating" +msgstr "Valoración" + +#: wp-admin/includes/meta-boxes.php:898 +msgid "(Leave at 0 for no rating.)" +msgstr "(Dejalo en 0 para no valorar.)" + +#: wp-admin/includes/dashboard.php:1150 +msgid "Storage Space" +msgstr "Espacio de almacenamiento" + +#: wp-admin/includes/dashboard.php:1155 +msgid "Space Allowed" +msgstr "Espacio permitido" + +#: wp-admin/includes/dashboard.php:1163 +msgid "Space Used" +msgstr "Espacio utilizado" + +#: wp-admin/includes/menu.php:225 +msgid "You do not have sufficient permissions to access this page." +msgstr "No tienes suficientes permisos para acceder a esta página" + +#: wp-includes/script-loader.php:242 wp-admin/async-upload.php:55 +#: wp-admin/includes/dashboard.php:1193 +msgid "Dismiss" +msgstr "Omitir" + +#: wp-admin/includes/plugin-install.php:84 +msgid "Plugins extend and expand the functionality of WordPress. You may automatically install plugins from the WordPress Plugin Directory or upload a plugin in .zip format via this page." +msgstr "Los plugins amplían las funciones de WordPress. Puedes instalarlos automáticamente desde el directorio de plugins de WordPress o subir un plugin en formato .zip desde esta página." + +#: wp-includes/class-wp-admin-bar.php:104 wp-includes/default-widgets.php:175 +#: wp-includes/general-template.php:163 wp-admin/includes/plugin-install.php:86 +#: wp-admin/includes/class-wp-theme-install-list-table.php:29 +#: wp-admin/includes/internal-linking.php:93 +#: wp-admin/includes/template.php:1358 wp-admin/includes/template.php:1360 +#: wp-admin/includes/theme-install.php:66 wp-admin/includes/nav-menu.php:666 +#: wp-admin/includes/nav-menu.php:695 wp-admin/includes/nav-menu.php:697 +#: wp-admin/includes/nav-menu.php:880 wp-admin/includes/nav-menu.php:929 +#: wp-admin/includes/nav-menu.php:931 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:29 +#: wp-content/plugins/akismet/legacy.php:176 +msgid "Search" +msgstr "Buscar" + +#: wp-admin/includes/plugin-install.php:87 +msgid "Search for plugins by keyword, author, or tag." +msgstr "Búsqueda de plugins por palabra clave, autor o etiqueta." + +#: wp-admin/includes/plugin-install.php:90 +msgid "Popular tags" +msgstr "Etiquetas populares" + +#: wp-admin/includes/plugin-install.php:91 +msgid "You may also browse based on the most popular tags in the Plugin Directory:" +msgstr "También puedes ver las etiquetas más populares del directorio de plugins:" + +#: wp-admin/includes/plugin-install.php:108 +msgid "%d plugin" +msgstr "%d plugin" + +#: wp-admin/includes/plugin-install.php:108 +msgid "%d plugins" +msgstr "%d plugins" + +#: wp-admin/includes/plugin-install.php:126 +#: wp-admin/includes/theme-install.php:61 +msgid "Term" +msgstr "Término" + +#: wp-admin/includes/plugin-install.php:131 +#: wp-admin/includes/plugin-install.php:132 +msgid "Search Plugins" +msgstr "Buscar plugins" + +#: wp-admin/includes/plugin-install.php:144 +msgid "Install a plugin in .zip format" +msgstr "Instalar un plugin en formato .zip" + +#: wp-admin/includes/plugin-install.php:145 +msgid "If you have a plugin in a .zip format, you may install it by uploading it here." +msgstr "Si tienes un plugin en un archivo .zip, puedes subirlo e instalarlo desde aquí." + +#: wp-admin/includes/plugin-install.php:148 +msgid "Plugin zip file" +msgstr "Archivo .zip del plugin" + +#: wp-admin/includes/plugin-install.php:150 +#: wp-admin/includes/plugin-install.php:289 +#: wp-admin/includes/theme-install.php:122 +#: wp-admin/includes/theme-install.php:291 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:200 +msgid "Install Now" +msgstr "Instalar ahora" + +#: wp-includes/js/tinymce/langs/wp-langs.php:309 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:142 +msgid "Version" +msgstr "Versión" + +#: wp-admin/includes/class-wp-plugin-install-list-table.php:97 +msgid "No plugins match your request." +msgstr "No hay plugins que mostrar." + +#: wp-admin/includes/class-wp-plugins-list-table.php:434 +#: wp-admin/includes/plugin.php:145 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:185 +msgid "By %s" +msgstr "Por %s" + +#: wp-admin/includes/plugin-install.php:328 +#: wp-admin/includes/plugin-install.php:336 +#: wp-admin/includes/theme-install.php:173 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:221 +msgid "(based on %s rating)" +msgid_plural "(based on %s ratings)" +msgstr[0] "(basado en %s voto)" +msgstr[1] "(basado en %s votos)" + +#: wp-admin/includes/plugin-install.php:330 +#: wp-admin/includes/theme-install.php:175 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:230 +msgid "5 stars" +msgstr "5 estrellas" + +#: wp-admin/includes/plugin-install.php:331 +#: wp-admin/includes/theme-install.php:176 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:231 +msgid "4 stars" +msgstr "4 estrellas" + +#: wp-admin/includes/plugin-install.php:332 +#: wp-admin/includes/theme-install.php:177 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:232 +msgid "3 stars" +msgstr "3 estrellas" + +#: wp-admin/includes/plugin-install.php:333 +#: wp-admin/includes/theme-install.php:178 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:233 +msgid "2 stars" +msgstr "2 estrellas" + +#: wp-admin/includes/plugin-install.php:334 +#: wp-admin/includes/theme-install.php:179 +#: wp-admin/includes/class-wp-plugin-install-list-table.php:234 +msgid "1 star" +msgstr "1 estrella" + +#: wp-admin/includes/plugin-install.php:264 wp-admin/update.php:103 +msgid "Plugin Install" +msgstr "Instalar plugin" + +#: wp-admin/includes/plugin-install.php:293 +#: wp-admin/includes/theme-install.php:296 +msgid "Install Update Now" +msgstr "Instalar actualización ahora" + +#: wp-admin/includes/plugin-install.php:296 +msgid "Newer Version (%s) Installed" +msgstr "Instalada la última versión (%s)" + +#: wp-admin/includes/plugin-install.php:299 +msgid "Latest Version Installed" +msgstr "Instalada la última versión" + +#: wp-admin/includes/plugin-install.php:305 +msgid "FYI" +msgstr "FYI" + +#: wp-includes/js/tinymce/wp-mce-help.php:270 +#: wp-admin/includes/plugin-install.php:308 +#: wp-admin/includes/theme-install.php:162 +msgid "Version:" +msgstr "Versión:" + +#: wp-admin/includes/plugin-install.php:310 +#: wp-admin/includes/theme-install.php:163 +msgid "Author:" +msgstr "Autor:" + +#: wp-admin/includes/plugin-install.php:312 +#: wp-admin/includes/theme-install.php:165 +msgid "Last Updated:" +msgstr "Última actualización:" + +#: wp-admin/includes/plugin-install.php:315 +#: wp-admin/includes/theme-install.php:167 +msgid "Requires WordPress Version:" +msgstr "Requiere la versión de WordPress:" + +#: wp-admin/includes/plugin-install.php:315 +#: wp-admin/includes/theme-install.php:167 +msgid "%s or higher" +msgstr "%s o superior" + +#: wp-admin/includes/plugin-install.php:317 +#: wp-admin/includes/theme-install.php:169 +msgid "Compatible up to:" +msgstr "Compatible con:" + +#: wp-admin/includes/plugin-install.php:319 +#: wp-admin/includes/theme-install.php:171 +msgid "Downloaded:" +msgstr "Descargado:" + +#: wp-admin/includes/plugin-install.php:319 +#: wp-admin/includes/theme-install.php:171 +msgid "%s time" +msgid_plural "%s times" +msgstr[0] "%s vez" +msgstr[1] "%s veces" + +#: wp-admin/includes/plugin-install.php:321 +msgid "WordPress.org Plugin Page »" +msgstr "Página de plugins de WordPress.org »" + +#: wp-admin/includes/plugin-install.php:323 +msgid "Plugin Homepage »" +msgstr "Página del plugin »" + +#: wp-admin/includes/plugin-install.php:327 +msgid "Average Rating" +msgstr "Puntuación promedio" + +#: wp-admin/includes/plugin-install.php:342 +msgid "Warning: This plugin has not been tested with your current version of WordPress." +msgstr "Atención: Este plugin no ha sido probado en esta versión de WordPress." + +#: wp-admin/includes/plugin-install.php:345 +msgid "Warning: This plugin has not been marked as compatible with your version of WordPress." +msgstr "Atención: Este plugin no es compatible con esta versión de WordPress." + +#: wp-admin/includes/plugin.php:92 +msgid "The %1$s plugin header is deprecated. Use %2$s instead." +msgstr "La cabecera del plugin %1$s es obsoleta. Usa %2$s en su lugar." + +#: wp-admin/includes/plugin.php:136 +msgid "Visit plugin homepage" +msgstr "Visitar la web del plugin" + +#: wp-includes/theme.php:242 +#: wp-admin/includes/class-wp-plugins-list-table.php:433 +#: wp-admin/includes/plugin.php:141 +msgid "Visit author homepage" +msgstr "Visitar la web del autor" + +#: wp-admin/includes/plugin.php:541 +msgid "The plugin generated unexpected output." +msgstr "El plugin ha generado una respuesta insesperada." + +#: wp-admin/includes/plugin.php:629 +msgid "One of the plugins is invalid." +msgstr "Uno de los plugins no es válido." + +#: wp-admin/includes/plugin.php:715 +msgid "Could not fully remove the plugin(s) %s." +msgstr "No se pudo/ieron eliminar completamente el/los plugin/s %s." + +#: wp-admin/includes/plugin.php:776 +msgid "Invalid plugin path." +msgstr "La ruta del plugin no es válida." + +#: wp-admin/includes/plugin.php:778 +msgid "Plugin file does not exist." +msgstr "El archivo del plugin no existe." + +#: wp-admin/includes/plugin.php:782 +msgid "The plugin does not have a valid header." +msgstr "El plugin no tiene una cabecera válida." + +#: wp-admin/includes/post.php:59 +msgid "You are not allowed to edit pages as this user." +msgstr "No tienes autorización para editar páginas con este nombre de usuario." + +#: wp-admin/includes/post.php:60 +msgid "You are not allowed to create pages as this user." +msgstr "No tienes autorización para crear páginas con ese nombre de usuario." + +#: wp-admin/includes/post.php:64 +msgid "You are not allowed to edit posts as this user." +msgstr "No tienes autorización para editar entradas con este nombre de usuario." + +#: wp-admin/includes/post.php:65 +msgid "You are not allowed to post as this user." +msgstr "No tienes autorización para publicar con este nombre de usuario." + +#: wp-admin/includes/post.php:282 +msgid "You are not allowed to edit pages." +msgstr "No tienes autorización para editar páginas." + +#: wp-admin/includes/post.php:284 +msgid "You are not allowed to edit posts." +msgstr "No tienes autorización para editar entradas." + +#: wp-admin/includes/post.php:423 +msgid "Auto Draft" +msgstr "Borrador automático" + +#: wp-admin/includes/post.php:987 +msgid "Images" +msgstr "Imágenes" + +#: wp-admin/includes/post.php:987 +msgid "Manage Images" +msgstr "Administrar imágenes" + +#: wp-admin/includes/post.php:987 +msgid "Image (%s)" +msgid_plural "Images (%s)" +msgstr[0] "Imagen (%s)" +msgstr[1] "Imágenes (%s)" + +#: wp-admin/includes/post.php:988 +msgid "Audio" +msgstr "Audio" + +#: wp-admin/includes/post.php:988 +msgid "Manage Audio" +msgstr "Administrar audio" + +#: wp-admin/includes/post.php:988 +msgid "Audio (%s)" +msgid_plural "Audio (%s)" +msgstr[0] "Audio (%s)" +msgstr[1] "Audio (%s)" + +#: wp-admin/includes/post.php:989 +msgid "Video" +msgstr "Vídeo" + +#: wp-admin/includes/post.php:989 +msgid "Manage Video" +msgstr "Administrar vídeo" + +#: wp-admin/includes/post.php:989 +msgid "Video (%s)" +msgid_plural "Video (%s)" +msgstr[0] "Vídeo (%s)" +msgstr[1] "Vídeos (%s)" + +#: wp-includes/post.php:1183 +msgid "View Page" +msgstr "Ver página" + +#: wp-admin/includes/post.php:1168 +msgid "Click to edit this part of the permalink" +msgstr "Haz clic para editar esta parte del enlace permanente" + +#: wp-admin/includes/post.php:1170 +msgid "Temporary permalink. Click to edit this part." +msgstr "Enlace permanente temporal. Haz clic para editar esta parte." + +#: wp-admin/includes/post.php:1174 wp-admin/includes/post.php:1202 +msgid "Permalink:" +msgstr "Enlace permanente:" + +#: wp-admin/includes/post.php:1176 +msgid "Change Permalinks" +msgstr "Enlaces permanentes" + +#: wp-admin/includes/post.php:1308 +msgid "Warning: %s is currently editing this post" +msgstr "Atención: %s está editando actualmente esta entrada" + +#: wp-admin/includes/post.php:1311 +msgid "Warning: %s is currently editing this page" +msgstr "Atención: %s está editando actualmente esta página" + +#: wp-admin/includes/post.php:1314 +msgid "Warning: %s is currently editing this." +msgstr "Atención: %s está editando actualmente esto." + +#: wp-admin/includes/post.php:1372 +msgid "Preview not available. Please save as a draft first." +msgstr "Vista previa no disponible. Por favor, guarda antes el borrador." + +#: wp-admin/includes/schema.php:202 +msgid "Just another WordPress site" +msgstr "Otro sitio realizado con WordPress" + +#: wp-admin/options-general.php:225 wp-admin/includes/schema.php:223 +msgid "F j, Y" +msgstr "j F, Y" + +#: wp-admin/options-general.php:258 wp-admin/includes/schema.php:225 +msgid "g:i a" +msgstr "G:i" + +#: wp-admin/includes/schema.php:227 +msgid "F j, Y g:i a" +msgstr "j F, Y G:i" + +#: wp-admin/includes/schema.php:329 +msgid "Just another %s site" +msgstr "Otro sitio más de %s" + +#: wp-admin/includes/schema.php:397 +msgctxt "User role" +msgid "Administrator" +msgstr "Administrador" + +#: wp-admin/includes/schema.php:399 +msgctxt "User role" +msgid "Editor" +msgstr "Editor" + +#: wp-admin/includes/schema.php:401 +msgctxt "User role" +msgid "Author" +msgstr "Autor" + +#: wp-admin/includes/schema.php:403 +msgctxt "User role" +msgid "Contributor" +msgstr "Colaborador" + +#: wp-admin/includes/schema.php:405 +msgctxt "User role" +msgid "Subscriber" +msgstr "Suscriptor" + +#: wp-admin/includes/upgrade.php:199 wp-admin/includes/schema.php:712 +msgid "Welcome to SITE_NAME. This is your first post. Edit or delete it, then start blogging!" +msgstr "Te damos la bienvenida a SITE_NAME. Este es tu primer artículo. Edítalo o bórralo... ¡y comienza a publicar!" + +#: wp-admin/includes/schema.php:769 +msgid "Warning! Wildcard DNS may not be configured correctly!" +msgstr "¡Atención! ¡Puede que las DNS no estén configuradas correctamente." + +#: wp-admin/includes/class-wp-posts-list-table.php:732 +#: wp-admin/includes/class-wp-comments-list-table.php:415 +#: wp-admin/includes/class-wp-terms-list-table.php:336 +msgid "Quick Edit" +msgstr "Edición rápida" + +#: wp-admin/includes/class-wp-posts-list-table.php:543 +#: wp-admin/includes/class-wp-comments-list-table.php:415 +#: wp-admin/includes/class-wp-terms-list-table.php:260 +msgid "Quick Edit" +msgstr "Edición rápida" + +#: wp-admin/includes/class-wp-posts-list-table.php:271 +msgctxt "column name" +msgid "Title" +msgstr "Título" + +#: wp-admin/includes/class-wp-media-list-table.php:134 +msgctxt "column name" +msgid "File" +msgstr "Archivo" + +#: wp-admin/includes/class-wp-media-list-table.php:139 +msgctxt "column name" +msgid "Attached to" +msgstr "Adjunto a" + +#: wp-admin/includes/class-wp-media-list-table.php:143 +msgctxt "column name" +msgid "Date" +msgstr "Fecha" + +#: wp-admin/includes/class-wp-comments-list-table.php:255 +#: wp-admin/includes/class-wp-comments-list-table.php:526 +msgctxt "column name" +msgid "Comment" +msgstr "Comentario" + +#: wp-admin/includes/class-wp-links-list-table.php:83 +msgid "Relationship" +msgstr "Relación con el enlace (XFN)" + +#: wp-admin/includes/class-wp-links-list-table.php:84 +msgid "Visible" +msgstr "Visible" + +#: wp-includes/default-widgets.php:94 wp-admin/link-manager.php:40 +#: wp-admin/includes/class-wp-terms-list-table.php:106 wp-admin/menu.php:93 +msgid "Links" +msgstr "Enlaces" + +#: wp-admin/user-new.php:245 wp-admin/user-new.php:325 +#: wp-admin/includes/class-wp-users-list-table.php:166 +msgid "Role" +msgstr "Perfil" + +#: wp-admin/includes/class-wp-posts-list-table.php:732 +msgid "Bulk Edit" +msgstr "Edición masiva" + +#: wp-admin/includes/class-wp-posts-list-table.php:777 +#: wp-admin/includes/class-wp-posts-list-table.php:851 +#: wp-admin/includes/class-wp-posts-list-table.php:871 +#: wp-admin/includes/class-wp-posts-list-table.php:903 +#: wp-admin/includes/class-wp-posts-list-table.php:912 +#: wp-admin/includes/class-wp-posts-list-table.php:944 +#: wp-admin/includes/class-wp-posts-list-table.php:965 +msgid "— No Change —" +msgstr "— Sin cambios —" + +#: wp-admin/includes/class-wp-posts-list-table.php:803 +msgid "–OR–" +msgstr "–O–" + +#: wp-admin/includes/class-wp-posts-list-table.php:823 +msgid "[more]" +msgstr "[más]" + +#: wp-admin/includes/class-wp-posts-list-table.php:824 +msgid "[less]" +msgstr "[menos]" + +#: wp-admin/includes/class-wp-posts-list-table.php:904 +#: wp-admin/includes/class-wp-posts-list-table.php:913 +msgid "Allow" +msgstr "Permitir" + +#: wp-admin/includes/class-wp-posts-list-table.php:905 +#: wp-admin/includes/class-wp-posts-list-table.php:914 +msgid "Do not allow" +msgstr "No permitir" + +#: wp-admin/includes/class-wp-posts-list-table.php:926 +msgid "Allow Comments" +msgstr "Permitir comentarios" + +#: wp-admin/includes/class-wp-posts-list-table.php:931 +msgid "Allow Pings" +msgstr "Permitir pings" + +#: wp-admin/includes/class-wp-posts-list-table.php:963 +#: wp-admin/includes/class-wp-posts-list-table.php:966 +#: wp-admin/includes/template.php:1642 +msgid "Sticky" +msgstr "Fija" + +#: wp-admin/includes/class-wp-posts-list-table.php:967 +msgid "Not Sticky" +msgstr "No es fija" + +#: wp-admin/includes/class-wp-posts-list-table.php:975 +msgid "Make this post sticky" +msgstr "Marcar esta entrada como fija" + +#: wp-admin/includes/class-wp-posts-list-table.php:596 +msgid "Missed schedule" +msgstr "Programación perdida" + +#: wp-admin/includes/class-wp-posts-list-table.php:600 +msgid "Last Modified" +msgstr "Última modificación" + +#: wp-includes/category-template.php:161 +#: wp-admin/includes/class-wp-posts-list-table.php:619 +#: wp-admin/includes/upgrade.php:109 +msgid "Uncategorized" +msgstr "Sin categoría" + +#: wp-includes/pluggable.php:1262 +#: wp-admin/includes/class-wp-users-list-table.php:291 +msgid "E-mail: %s" +msgstr "Correo electrónico: %s" + +#: wp-admin/includes/class-wp-users-list-table.php:300 +msgid "View posts by this author" +msgstr "Ver las entradas de este autor" + +#: wp-admin/includes/class-wp-comments-list-table.php:335 +msgid "Y/m/d \\a\\t g:i A" +msgstr "d/m/Y \\a\\t G:i" + +#: wp-admin/includes/class-wp-comments-list-table.php:362 +msgid "In reply to %2$s." +msgstr "En respuesta a %2$s." + +#: wp-admin/includes/class-wp-comments-list-table.php:475 +msgid "Y/m/d \\a\\t g:ia" +msgstr "d/m/Y \\a\\t G:i" + +#: wp-admin/includes/template.php:347 +msgid "Reply to Comment" +msgstr "Responder al comentarío" + +#: wp-admin/includes/template.php:373 +msgid "Submit Reply" +msgstr "Enviar respuesta" + +#: wp-admin/includes/template.php:406 +msgid "Comment by %s moved to the trash." +msgstr "Comentario de %s movido a la papelera." + +#: wp-admin/includes/template.php:409 +msgid "Comment by %s marked as spam." +msgstr "El comentario de %s se ha marcado como spam." + +#: wp-admin/includes/template.php:429 wp-admin/includes/template.php:444 +#: wp-admin/includes/template.php:512 wp-admin/includes/template.php:539 +msgid "Value" +msgstr "Valor" + +#: wp-admin/includes/template.php:502 +msgid "Key" +msgstr "Clave" + +#: wp-admin/includes/template.php:534 +msgid "Add New Custom Field:" +msgstr "Añadir nuevo campo personalizado:" + +#: wp-admin/includes/template.php:558 +msgid "Enter new" +msgstr "Nuevo" + +#: wp-admin/includes/template.php:568 +msgid "Add Custom Field" +msgstr "Añadir un campo personalizado" + +#: wp-admin/includes/template.php:630 +msgid "%1$s%2$s, %3$s @ %4$s : %5$s" +msgstr "%1$s%2$s, %3$s @ %4$s : %5$s" + +#: wp-admin/includes/template.php:735 +msgid "Thumbnail linked to file" +msgstr "Miniatura enlazada al archivo" + +#: wp-admin/includes/template.php:735 +msgid "Image linked to file" +msgstr "Imagen enlazada al archivo" + +#: wp-admin/includes/template.php:739 +msgid "Thumbnail linked to page" +msgstr "Miniatura enlazada a la página" + +#: wp-admin/includes/template.php:739 +msgid "Image linked to page" +msgstr "Imagen enlazada a la página" + +#: wp-admin/includes/template.php:744 +msgid "Link to file" +msgstr "Enlace al archivo" + +#: wp-admin/includes/template.php:748 +msgid "Link to page" +msgstr "Enlace a la página" + +#: wp-admin/includes/template.php:843 +msgid "Before you can upload your import file, you will need to fix the following error:" +msgstr "Antes de poder subir el fichero de importación, debes resolver el siguiente error:" + +#: wp-admin/includes/template.php:849 +msgid "Choose a file from your computer:" +msgstr "Elige un archivo de tu ordenador:" + +#: wp-admin/includes/template.php:849 +msgid "Maximum size: %s" +msgstr "Tamaño máximo: %s" + +#: wp-admin/includes/template.php:854 +msgid "Upload file and import" +msgstr "Subir archivo e importar" + +#: wp-admin/includes/template.php:967 wp-admin/press-this.php:483 +#: wp-admin/press-this.php:517 wp-admin/press-this.php:567 +msgid "Click to toggle" +msgstr "Haz clic para cambiar" + +#: wp-admin/includes/template.php:1349 +msgid "Find Posts or Pages" +msgstr "Buscar entradas o páginas" + +#: wp-includes/theme-compat/sidebar.php:55 wp-includes/post-template.php:810 +#: wp-includes/default-widgets.php:18 wp-includes/default-widgets.php:24 +#: wp-admin/export.php:167 wp-admin/menu.php:99 +msgid "Pages" +msgstr "Páginas" + +#: wp-includes/script-loader.php:200 +#: wp-includes/js/tinymce/langs/wp-langs.php:20 +#: wp-includes/js/tinymce/wp-mce-help.php:284 wp-login.php:582 +#: wp-admin/includes/template.php:1376 wp-admin/includes/widgets.php:207 +msgid "Close" +msgstr "Cerrar" + +#: wp-admin/plugin-editor.php:195 wp-admin/theme-editor.php:164 +#: wp-admin/includes/template.php:1377 +#: wp-admin/includes/class-wp-plugins-list-table.php:396 +#: wp-admin/nav-menus.php:497 +msgid "Select" +msgstr "Elegir" + +#: wp-includes/post.php:1182 wp-admin/includes/template.php:1466 +msgid "New Page" +msgstr "Nueva página" + +#: wp-admin/includes/template.php:1425 +msgid "New Media" +msgstr "Añadir medio" + +#: wp-admin/media.php:45 wp-admin/includes/template.php:1428 +msgid "Edit Media" +msgstr "Editar multimedia" + +#: wp-admin/includes/template.php:1433 +msgid "New Link" +msgstr "Añadir enlace" + +#: wp-admin/includes/template.php:1435 +msgid "Edit Links" +msgstr "Editar enlaces" + +#: wp-admin/includes/template.php:1438 +msgid "New User" +msgstr "Añadir usuario" + +#: wp-admin/includes/template.php:1441 +msgid "Edit Users" +msgstr "Editar usuarios" + +#: wp-admin/plugin-install.php:27 wp-admin/includes/template.php:1444 +msgid "Install Plugins" +msgstr "Instalar plugins" + +#: wp-admin/includes/template.php:1447 +msgid "Manage Plugins" +msgstr "Administrar plugins" + +#: wp-admin/theme-install.php:27 wp-admin/includes/template.php:1450 +#: wp-admin/update.php:206 +msgid "Install Themes" +msgstr "Instalar temas" + +#: wp-admin/themes.php:35 wp-admin/includes/template.php:1453 +msgid "Manage Themes" +msgstr "Administrar temas" + +#: wp-includes/post.php:1182 wp-includes/admin-bar.php:141 +#: wp-admin/includes/template.php:1456 wp-admin/includes/template.php:1464 +msgid "New Post" +msgstr "Nueva entrada" + +#: wp-admin/includes/template.php:1465 +msgid "Drafts" +msgstr "Borradores" + +#: wp-includes/script-loader.php:281 wp-includes/script-loader.php:393 +#: wp-admin/includes/template.php:1522 +msgid "(no title)" +msgstr "(sin título)" + +#: wp-admin/includes/template.php:1640 +msgctxt "post state" +msgid "Pending" +msgstr "Pendiente" + +#: wp-admin/includes/template.php:1743 +msgid "Enable accessibility mode" +msgstr "Activar modo de accesibilidad" + +#: wp-admin/includes/template.php:1743 +msgid "Disable accessibility mode" +msgstr "Desactivar modo de accesibilidad" + +#: wp-admin/includes/class-wp-themes-list-table.php:168 +#: wp-admin/includes/class-wp-upgrader.php:1353 +#: wp-admin/includes/class-wp-upgrader.php:1406 +#: wp-admin/includes/class-wp-plugins-list-table.php:258 +#: wp-admin/includes/class-wp-plugins-list-table.php:379 +msgid "Activate" +msgstr "Activar" + +#: wp-includes/post-template.php:1216 wp-admin/includes/meta-boxes.php:145 +msgid "Password:" +msgstr "Contraseña:" + +#: wp-admin/admin-ajax.php:36 +msgid "ALERT: You are logged out! Could not save draft. Please log in again." +msgstr "ATENCIÓN: ¡No has iniciado la sesión! No se pudo guardar el borrador. Vuelve a iniciar la sesión." + +#: wp-admin/includes/media.php:1997 wp-admin/includes/nav-menu.php:627 +#: wp-admin/includes/nav-menu.php:844 +msgid "«" +msgstr "«" + +#: wp-admin/includes/media.php:1998 wp-admin/includes/nav-menu.php:628 +#: wp-admin/includes/nav-menu.php:845 +msgid "»" +msgstr "»" + +#: wp-admin/admin-ajax.php:455 +msgid "Comment %d does not exist" +msgstr "El comentario %d no existe" + +#: wp-admin/includes/taxonomy.php:100 +msgid "You did not enter a category name." +msgstr "No has introducido un nombre de categoría." + +#: wp-admin/admin-ajax.php:577 +msgid "No tags found!" +msgstr "¡No se han encontrado etiquetas!" + +#: wp-admin/admin-ajax.php:641 +msgid "Error: you are replying to a comment on a draft post." +msgstr "Error: estás respondiendo a un comentario de una entrada en borrador." + +#: wp-admin/admin-ajax.php:656 +msgid "Sorry, you must be logged in to reply to a comment." +msgstr "Lo siento, tienes que iniciar sesión para responder a un comentario." + +#: wp-admin/admin-ajax.php:660 wp-admin/admin-ajax.php:722 +#: wp-comments-post.php:84 +msgid "Error: please type a comment." +msgstr "Error: por favor, escribe un comentario." + +#: wp-admin/admin-ajax.php:843 wp-admin/admin-ajax.php:848 +#: wp-admin/admin-ajax.php:868 +msgid "Please provide a custom field value." +msgstr "Por favor, pon algún valor en el campo personalizado." + +#: wp-admin/admin-ajax.php:918 +msgid "User %s added" +msgstr "Usuario %s añadido" + +#: wp-admin/admin-ajax.php:938 +msgid "g:i:s a" +msgstr "G:i:s" + +#: wp-admin/admin-ajax.php:940 +msgid "Draft saved at %s." +msgstr "Borrador guardado a las %s." + +#: wp-admin/admin-ajax.php:958 wp-admin/admin-ajax.php:1191 +msgid "Someone" +msgstr "Alguien" + +#: wp-admin/admin-ajax.php:967 wp-admin/admin-ajax.php:1181 +#: wp-admin/includes/post.php:156 wp-admin/includes/post.php:1388 +msgid "You are not allowed to edit this page." +msgstr "No tienes autorización para editar esta página." + +#: wp-admin/upload.php:62 wp-admin/admin-ajax.php:970 +#: wp-admin/admin-ajax.php:1184 wp-admin/includes/post.php:158 +#: wp-admin/includes/post.php:1391 +msgid "You are not allowed to edit this post." +msgstr "No tienes autorización para editar esta entrada." + +#: wp-admin/admin-ajax.php:1192 +msgid "Saving is disabled: %s is currently editing this page." +msgstr "Guardar está desactivado: %s está ahora mismo editando esta página." + +#: wp-admin/admin-ajax.php:1192 +msgid "Saving is disabled: %s is currently editing this post." +msgstr "Guardar está desactivado: %s está ahora mismo editando esta entrada." + +#: wp-admin/user-new.php:14 wp-admin/user-new.php:16 wp-admin/user-new.php:59 +#: wp-admin/user-new.php:86 wp-admin/themes.php:13 wp-admin/themes.php:26 +#: wp-admin/edit-comments.php:12 wp-admin/edit.php:24 wp-admin/post-new.php:34 +#: wp-admin/users.php:13 wp-admin/users.php:78 +#: wp-admin/includes/bookmark.php:30 wp-admin/press-this.php:17 +#: wp-admin/widgets.php:16 wp-admin/plugins.php:16 wp-admin/edit-tags.php:13 +#: wp-admin/edit-tags.php:40 wp-admin/edit-tags.php:78 +#: wp-admin/edit-tags.php:92 wp-admin/edit-tags.php:129 +#: wp-admin/nav-menus.php:23 wp-admin/options.php:35 wp-admin/options.php:59 +#: wp-content/plugins/akismet/admin.php:58 +msgid "Cheatin’ uh?" +msgstr "¡Haciendo trampas! ¿eh?" + +#: wp-admin/admin-ajax.php:1258 wp-admin/admin-ajax.php:1265 +#: wp-admin/edit-tags.php:233 +msgid "Item not updated." +msgstr "No actualizado." + +#: wp-includes/post.php:1185 +msgid "No posts found." +msgstr "No se encontraron entradas." + +#: wp-includes/post.php:4687 wp-includes/js/tinymce/langs/wp-langs.php:347 +#: wp-includes/js/tinymce/langs/wp-langs.php:511 wp-admin/admin-ajax.php:1302 +#: wp-admin/includes/dashboard.php:528 +#: wp-admin/includes/class-wp-posts-list-table.php:744 +#: wp-admin/includes/media.php:1089 wp-admin/includes/media.php:1860 +#: wp-admin/includes/media.php:2176 wp-admin/includes/media.php:2206 +#: wp-admin/includes/media.php:2236 wp-admin/includes/internal-linking.php:82 +msgid "Title" +msgstr "Título" + +#: wp-admin/admin-ajax.php:1302 +#: wp-admin/includes/class-wp-posts-list-table.php:286 +#: wp-admin/includes/class-wp-posts-list-table.php:757 +msgid "Date" +msgstr "Fecha" + +#: wp-admin/admin-ajax.php:1302 +#: wp-admin/includes/class-wp-posts-list-table.php:941 +#: wp-admin/edit-form-comment.php:35 +msgid "Status" +msgstr "Estado" + +#: wp-includes/script-loader.php:355 wp-includes/post.php:599 +#: wp-includes/post.php:619 wp-admin/admin-ajax.php:1308 +#: wp-admin/includes/class-wp-posts-list-table.php:593 +#: wp-admin/includes/class-wp-posts-list-table.php:947 +#: wp-admin/includes/meta-boxes.php:68 wp-admin/includes/meta-boxes.php:90 +msgid "Published" +msgstr "Publicada" + +#: wp-admin/admin-ajax.php:1311 +#: wp-admin/includes/class-wp-posts-list-table.php:598 +#: wp-admin/includes/class-wp-posts-list-table.php:948 +#: wp-admin/includes/meta-boxes.php:71 wp-admin/includes/meta-boxes.php:94 +msgid "Scheduled" +msgstr "Programada" + +#: wp-includes/post.php:597 wp-admin/admin-ajax.php:1314 +#: wp-admin/includes/class-wp-posts-list-table.php:953 +#: wp-admin/includes/meta-boxes.php:74 wp-admin/includes/meta-boxes.php:96 +msgid "Pending Review" +msgstr "Pendiente de revisión" + +#: wp-includes/post.php:596 wp-includes/post.php:617 +#: wp-admin/admin-ajax.php:1317 +#: wp-admin/includes/class-wp-posts-list-table.php:954 +#: wp-admin/includes/template.php:1637 wp-admin/includes/meta-boxes.php:78 +#: wp-admin/includes/meta-boxes.php:98 wp-admin/includes/meta-boxes.php:100 +msgid "Draft" +msgstr "Borrador" + +#: wp-admin/admin-ajax.php:1325 +#: wp-admin/includes/class-wp-posts-list-table.php:583 +#: wp-admin/includes/class-wp-comments-list-table.php:355 +#: wp-admin/includes/internal-linking.php:51 +#: wp-admin/includes/class-wp-media-list-table.php:276 +#: wp-admin/includes/class-wp-media-list-table.php:292 +msgid "Y/m/d" +msgstr "d/m/Y" + +#: wp-admin/admin-footer.php:23 +msgid "Thank you for creating with WordPress." +msgstr "Gracias por crear con WordPress." + +#: wp-admin/admin-footer.php:24 +msgid "Documentation" +msgstr "Documentación" + +#: wp-admin/admin-footer.php:26 +msgid "Feedback" +msgstr "Feedback" + +#: wp-includes/admin-bar.php:106 wp-includes/admin-bar.php:145 +#: wp-admin/admin-header.php:122 wp-admin/admin-header.php:142 +msgid "Visit Site" +msgstr "Visitar sitio" + +#: wp-includes/admin-bar.php:92 wp-admin/admin-header.php:165 +msgid "Log Out" +msgstr "Cerrar sesión" + +#: wp-admin/admin.php:154 +msgid "Invalid plugin page" +msgstr "Página de plugin no válida" + +#: wp-admin/admin.php:158 +msgid "Cannot load %s." +msgstr "No se pudo cargar %s." + +#: wp-admin/admin.php:179 +msgid "You are not allowed to import." +msgstr "No tienes autorización para importar." + +#: wp-admin/import.php:17 wp-admin/menu.php:220 wp-admin/admin.php:197 +msgid "Import" +msgstr "Importar" + +#: wp-admin/async-upload.php:29 wp-admin/upload.php:13 +#: wp-admin/media-upload.php:19 wp-app.php:599 wp-app.php:787 +msgid "You do not have permission to upload files." +msgstr "No tienes autorización para subir archivos." + +#: wp-admin/comment.php:46 wp-admin/edit-form-comment.php:16 +#: wp-admin/edit-form-comment.php:27 +msgid "Edit Comment" +msgstr "Editar comentario" + +#: wp-admin/comment.php:61 wp-admin/comment.php:215 +#: wp-admin/edit-comments.php:152 +msgid "Oops, no comment with this ID." +msgstr "Vaya, no hay comentarios con ese ID." + +#: wp-admin/comment.php:61 wp-admin/comment.php:215 +msgid "Go back" +msgstr "Volver atrás" + +#: wp-admin/comment.php:217 wp-admin/edit-comments.php:155 +#: wp-admin/includes/comment.php:37 +msgid "You are not allowed to edit comments on this post." +msgstr "No tienes autorización para editar comentarios en esta entrada." + +#: wp-admin/comment.php:67 +msgid "This comment is in the Trash. Please move it out of the Trash if you want to edit it." +msgstr "Este comentario está en la papelera. Por favor, sácalo de la papelera si quieres editarlo." + +#: wp-admin/comment.php:117 +msgid "You are about to mark the following comment as spam:" +msgstr "Estás a punto de marcar el siguiente comentario como spam:" + +#: wp-admin/comment.php:118 +msgid "Spam Comment" +msgstr "Comentario spam" + +#: wp-admin/comment.php:121 +msgid "You are about to move the following comment to the Trash:" +msgstr "Estás a punto de mover el siguiente comentario a la basura:" + +#: wp-admin/comment.php:122 +msgid "Trash Comment" +msgstr "Enviar comentario a la papelera" + +#: wp-admin/comment.php:125 +msgid "You are about to delete the following comment:" +msgstr "Estás a punto de borrar el siguiente comentario:" \ No newline at end of file diff --git a/src/wp-content/languages/ms-es_ES.mo b/src/wp-content/languages/ms-es_ES.mo new file mode 100644 index 0000000000000000000000000000000000000000..f57136c114adbc2a795b1045aa3aae0426132e1e GIT binary patch literal 82624 zcmd?Sdz{^8Rqy`|r`!gRTY+-_CT-fJBr{E0Zj&};l1$q`GKrZ9@@q!?70IA@maLN&@2o(exJfNa*R1ifxM^HqRqkwP(JotNm)>_Z={q8-J zHm#oX&yQEhn(ytotY_WVdY=844?61&1^@f%rlNQhaPj`SDvA$2rh-@S=ZCm{81Vl9 zM}ZG{Y*D-tcm%iv{8Qi}aJ(#v7Vy`A*8?B5xhPhFZvd_U@3Y0PUkdDU{cYe2fUR?j z;#t7Y1Ai3wg!8=Jj{+yT9@$zHCxEX2Hh|v+-VA)s`TqXU1x4|DT)zRh8~FTfMe$_d zTY%>t!6o-JzJAHn?4HODK3%oDz%fR~qzX|*e;HKfC zxEJs@1AYYf5Uzh0xD5Osz;6JLj1 zE-s3D10NP}GqBC|-{u=NBzz1AX6b!xC4E#ah1dyp0ZwE59;uAoP^PhnX zz4$-C2Lc~=X;GX7yd0?h_X0J~Yk(gD&Hn{PH2)yzMtOf8TK;h{< zz-Iz~8>n%d!%Lfi*8(-p*8)XXZv|@nw*vP8&v{Z&i~*km{50@wz#XhhheZP=#ake< zDc~Oh-wr&NMZG8RV?c&jd=mIj;HJwQ|K|XO$6??HfTKW2srYB$`Luh^^e-rpCT%YrlqWEjBKMI@${?cBjm!bVWpT>AmJev2qz#jnqB=8ZypAUE| zPfcF6YJa8-Umw=FJ@kyZQ?pr|7%YVA6C>{(v zA9xSoDDaWMF`)W;F7Pn013Vk}Vchk_cLV-7Q0@ODP~&|+P~UwXC_4E&;5&ie0iFQ9 z?Wxcd@F7nt3jQm;!#@nI7(ZAP^S~bmJ{J6c3plO!CW_+Sz*XQJa5Izr6!4Y62Jq=e z7(4L&K;d;8{~QC}0Q?H@)4-<#KX4Qo0(`(^Q82aQXMlWCd;$18;4nmY9q`A2qU-Mf z_1+|niErKld;su9;KP8w1{59sUflmHAX6*80XzqIIh{Tb_;jH7YytQ<;3`n-cOy`E z`w&og{2SnTz^?$c&iA{<@qTu|?Lgsm5Af~4gTRLZzXmLUXFbEmxfQ7E3xS(~PYbvd z@F##z;{JQ%`m4aZbA4YXJqvsgQ1o^Jcz@uJ27EJ6bpI}(=JNrd@bTY(8rPo!F9rS$ zPlhM_<1)_>;Iv+fA?oIN3I_Wd;;)!z<&Y00jPC&-E*A& zUJn$$-Uj?2@DxzveJR35eD;$-jqe>m-T!qUs;c-HQ0ws5K+XFBEdJ%dhXNnC3E2Z| za(x`)dpz)yzzczQd%myRPT&r%4*)OY{S!d(&n*pKuRjGI;`$$ekWeu?gA51$1n`G| z7lLGs`(40ufS&>iA724J40yM>qIePT5kTSRXMw`^O~88r-v@jj@Wa4|08cR3lfc&k zHNUftdwb^v+yndw_n!gO`aB#a(|Sw*9}S!VY8)>GGUVdtfLiD80q+4ETJZiK2o%3O zCayccA+BEpybthIK(+IFpz!@);{FGLXLJ1tpxXTcQ1ki+py=lNK&{t(TmIf-ffsOn zDNyr!4)8o+7byJvEKuwEUx8}pBfxtB{|Kn|KM&M*Uj=GBQpS=?4+n~#E(1OV*aL0@ z{yOkN;1__~f%ifPl)#ID!p|g7{l5Ts1@MhPjqkHSNVfPs@O`r^j8uLtGyNJ_`5_;LCs?0cxCkyUdmTeh9dO>sR-XfxzDYehm26 zz&{7xv{DrR2K?bwr{^C&;rRJ8pyv7AfagGjG+jIacscM_fG+`l8Tezs=Jm*A;MalA zrr*Ui=krf+Q~1B<3ms1v17VfoYTzS*?+*BJpz!}Cpx!_CMZPW*K=E-8crI`axEc6X z;Jtw#27U$jyTCEvuf5py?LPzeaQz4dc^UATz@G%Z5vciI@Ix+FE_f+zbN$!A-vmD6 zWvl`40WWuY`6lp3xPJ62u%&?S016M^1HKQq^uw-?&f}#IaD4-iTg9cXbbIv!z$bJ4 zEuh9b@~WcvpTH*r_1+_1jSK<)JW%xg=fHac{|+en`a1A|z)i1#7J&~2iq0PNqrOgC zf%oJ3%79bA^SPb@o(Fsl@F~Fe#QlE+Y8($`(XIxTK=s=KijJ=bivC^)d@$?y%fNeZ z{adf~?`{KXJw6H4`2Gm^0N@vak^|oas{ecaxXalQ;Jvth1CXUH-Ud7u_=wlJUf2UX z!1XJE46XPyQ13tcCzu!g&jFiUcUipq0Y3-S{J#v;I(-MY1Nav|VVH@V!N0_y$O07b74{W))cGTi|w)XP|>>wxoIf9>t=4;;JE`TG{& zIo$sga1Qtt;DdpOegV0+3AqP6o9i#W!{ylj20oPQv)}3T_&DG_xE=#;2VNcbyTJQ$ z{c522;|)O3$1el#5Bv?F==^tpqNh&*weFt-P5{3T)cg+pqJQ^uK;8dkpw{!-K(+gr zU-IV{0oCpv;KP6uzy|@31OFDd27Dy2@yjlsUJM-L`sab7>%Rgn0T+M8<;|Z1SGbr!NAR?>S`!1KG9|^eo-EJ?u4|sy-m;4vU@4J9M!u7pwcD%n1ILY<5fx7?H_jo^_ z2J&gK|GyRmOJDpG@ZW&1{Z+SvU;AFyBVPtCvmTfJ8tV-F#akE~@CSYa-s1h|zR%kq z{Z02PUI)}V-3-+FeJrm34ESlT{|Wd5z>mJ)<-@0eCD(ri{3+nwKET*%|7UWD=lX*{t;?5yYX4inHQ-qvLZ$#;0z@kt z&n^N!i|b|JR^aagF9LoYC_3KqVQ>rF349c=0lX*hCBR|eD}j=azX4>Z#qR^J)%}mS z9{)PMwY_ z?5)5b=KY1gq;KHYfG+|5F^m2R;L-o-`sA~~BV0f7ub>OsSpwg9A13r_^?gxA;Q22f~@Ug%T0fo0O0M7y5_scGKwgS)N zx(5{g-UNIY@ZG>C0#5;V0>1}*0&x4^Iv$@79OHTpsP*|Jpy>QPz{dc852*hC4tNUq zJ>U-DhrfdD5Bvw<-GPt&JBM2XJ`N~)*cEUTxR>jF!0o_S#{FLfcDeol@FL)juR5PU z7pU>S0C+a=H9(EyZNU2je-)^Cegt?q@Q;Dd1wQcaot`>C(aj0q!+}2q)V$su@Z-S4 zTz?6ud0z4lZpR%3UcvQ$20n&${5)`o>+gQe`@8%9a(tcxWJ!x7K=pIUKYIHUK*@(| z1HKBVb$KW7GT`q5?*Y8WKe@enKj4$;=W5^#_h0^X$HU(M#YYeQhQlj>TE7M09Phso zxRvYgebe>F=6`lM`Xt~r+^MfUx&RwT^|Fg{}%88z@G^CcA&=j zUZCjazXA3B=i>SwfLfRD10N1N_y4#axE#2d>mLCMFTV`b^FIcvy|2adyM5p3;yj?* z9RWTPxG&%|@B*%12z&zY9l)c&KL_ps?)*1jk42!K-v}&$p978nzXRL?++J+5c-=wZ z6nr zdu}p&y$cloKL}$*am!=COSxXX_a>7g?*jfa*IxkgU-3snn~HORe{r8p#;0;(#1BV+ z=L6RQz8(0}Tz?!Wd_3z1HWlvyz7hCV;Q0MF6>k8333wCjtvz6q>A`a!w8`lIML^Nn zyMdbjM}dz5?!svk-X?&Df!6{L0dEEF2j1)KO(ypa0X42k;AY^9fcFNz4fsg<`xW3Q z*B^Tb^8x-F@EO2!AL{T$z&CUK86ZO}mLImsfJ!m%a?%n0e%xGdjB_|@bus5cK`0*B? z-v1a-c={Yra%apu8$gy2gJP4}0S|rLCgamL041N_4@5Kn8$*x90(c*H;0b1$;kH<9+amf4>KKIoFFoz4tDl z=;ZUj4*>6Z(I(61d=&VjTyNX8sdyLg7U1s!pLg-5;wid+iPJ?3_$0311N=qc-vXZu z{P9bjZ$A!H|Njcq{4RL>reX{@4}1#nCZOK`D)5QG^Pb?(p92)#y$$$y;Fo~!1U~$U zzV5#byo~EdLsYZCX93mjZv$Tql(M`A@EV}#_^*JHV_Qd^?|%X)I^DAyK46`m3S8j& zo|kVj`)U~|{Qm(^^!iW0Hv#WW@>BT#1>i66-R}Y=?-!rq^LZKYv0UE<)OTM5ir&5l zEP-c@Z8ASyKJ$mV~5&kH)_R3bTT!9>09c!ph3> z=*WnA-?ArNSkH|;eZ6Y^jM>gy^ZH>uTkbY{z2Q!Geq>*_*;r{#k4;ZBS9o&W zmU5-hoo}vOzGZr5vC+P6%bxw6+0~_Hd!@0`>a>|*X`iU4Mj0PzglE*-{zh+Mrqk%o zO&?mDo@CCw>B-q{v)Mj_ZV#=M_Qe@@7K57}n_Fs~Ne3$n%`~CXzPW2XO;17?pyy6Z zEk;_VFYju{HH7xg0HZ=@d8pBD%r~{bcd^&01-`xullAZJVyDNJ=OEiV(W`%u*7vUV zifp(OeWqnSrq9l}%c)Lhv6tBK%-N$(z0Ok`_Snz;z18LAPIqPGc&EF%G_th1xYCj& z8d*;~lm2FTrQVFmEbQ7dwutB2cv1BtaEO+u-&3v_045`CuEP1`%p={D1FG=`c_jg<#_U;|^L+nQfk zxgsyk{sFRYK-NpGo-}`L08{#K0Qn4;;&0evadEBeEp&t|v6^fpLv)@eoKsPS#_wY|PC`5NO0nPGE`2h>2A{qi@?6tgy0O_+_Q~@<97|CwE%z zv|fV>WVFDYw-KDd+R&RN+vBnIOP67qkDc<2ygQgo!b__(c)jH9f+fnwG8%s!$ zSQRzD)L2>VHg|~1yUnEza`t$)vs5mx&cJQuq8o)+rd@R@!mJQenH!0-gdFC)j76Yj zJxSNrgcyyrE`v|F-RpH`TS&(_*bV#{s)U^3auU)pe7g9YD`(bfbf+PAV0szOprQ88 z^5W{e<}c}sjomsy>ma8C=NVgwB;m&9;+%gv-xd1G4gy<^_8QoS&2Fo)*t&t+;u@z? z7Er6T)R}7?U(+J8lp%oTR%yFq3wx5!d6s4eJ#zpmw1%}bK$5{PjwrZM^mBR| zlynl~HWqswIc;s|nYp*RWw)~kvmk1kOx*4yf63%tu#oWNe8gXY)T81qEsAbw1pO~m z7_ZtGcrC4OF_t~etgI3vw2oW*jTv!rb5JyjfY#CDm@|vKv!^xJ%A?H}tg;YuMgRTL zVr*^>S##37sC;4A&Q~i&TH?T9i~2WdrA+nEHj5ibTW)CXBRph*i+QF)M%qxphcFvlfsx^R*I;-s!HLkUdWpb$^qs#ag-Pq#=rtPa@VozkCV1d1x2+0T5 z2%R~z*qQGQ&$YVA^5Rd_Q>VLDuD0i(B3G>=Zn>?PA6A)ds6`voT(j4jZ=1YTKm&Px z97Q*0jNfPTmD{fMumx<%)hlhueX3M7AWH$^CUpNxu*=}R^K@2afxJ*f7-PUcQ zrDhY==NLma+%YY%Be(mMg}mb(EvS9aaZ}(lP0KnIEe}{0;?2~h>4}=|u)ds*Z?CJ9 z&6#00@6t5>FZQ*Oy?vVQvj1VsUFi+YMT;tXYEGC7intIGZmeWc45uJeYpb}qyc!Q{ ztrUf!Ip>GVyr_mG*;7s_;sQi{+ZQBcFwBCzQI5O)1*7ZzbW?(-7(?URr}ozzjJH{T zi8-A$#b)8;(Nc(mW}Cs#-D2yyW_eYoGcSQV)tp^ucVunvFnZ(lK?|kPg$YINsIf{? zT6c=eb~=A@I#lIY(s=Gt!K&lgwCyaw}6~bK@6N=89tM1e9U^O@v?y&4GW~Z6-Qy3TwZ) zSiN*p8i9-EtXa`Qf@~oVT{@{Rc4ixk3!NSzC=-2Hvmiw4RZ;Ew`7BA$A%PkB%+4fL zTX?nQJ~T^9vUS5whOImI0Fs12?P_3Y>bX^)$#8x2T^PxN9kLOj;|9tpB>KN|+^6kD zY9E5WE6rCEFohtznyl%QF&CH~K4a;U;xpniV^=NOXt7tCF6`Wsm|qG9x%}8|z`fD@ zB*YN7Mb5`!%aE5&m1!%L?A{RGyK}!BE8g$62vaR&=G?owf=S!7`Dqc&G$D#D;t-Q? zuRpY3MS}FYkx{miThL&bp7eAkEsIRgxW#>qb_jGFRSz#AW|~XOD=txo3*Im{0o)1` z`NrVe@o=Fj3BsygyNYO%=Z=RcEiCfKNU+Jf#WK6t!n$w=ZKZ|LVz+w`y|BKlR^Ura zIHC(O1nJsZwp|N zdFQ$cIf4w^9gGEWD5sNwzMCoa<6dP2)&lN(fmC2{!@=6U(4zlo& z)Bq{~5l#Y2%;swr0?m+P44tE*igD~P(YS9`unk$$bF&Pi+&?jC!{EYTVOmHW6ocl#(M(VPxSPki$!*8s0Wn*Y^y&|V8v;Go4n&+yaNy0%a>R6XT z4$^c1%gFKA!Lmp}mhsWa zNpbAhN{1*Tf25Y$tivk8HQGbQEjEvn99M>TxP~SYHb^CKp~frhX}N4JLY3a{PvpoP zOcCv3e>3Ug9c9?4E~+M_*j&b|8}(w65BXu4X^$ge{ec*aLbW2z5NPW*S#^<=ri@ml zn{IiG727d1lsRPbz|{Ek#Mq&6U$X@a<{6UHn!6%x$5$=f9r1&e(V@Ku4_`HX?C3#j z!g|64GQHy%u!wGQO_EK6+_ZpcT{g7{QO7(+hcqe$6-LWrljBDcE7ErDJ=lrp?-`u{;QJbcxGiGv3wo;EaeCkD!5N*Q74pf*jtNschP z3-(*o+*tVn_vGLUlOo2!QirH&8LhJFhqNND$`M@_a2mpP;C%^A5yDAQR-(f2lX6Qt zLaVA%vxH`v7y=%Qw%in4Gz2F%dYB+JGA$Nggo+7=x2N?qbIxsawXRQh zK(sSUWK5b}%_x&1e>*j*S!da5mAgbd5o3-_w^3-W#(W5Zfmmv%J(Slgi&SCE%pXu5 zS)?7w*YVY$9m7Koa@opA5_ycdg-~FqWBU)0xMVqO9iGXmnXTA3t`#GWCygd@%N{lz zx{V%-910{TY)IC)kIbbS9A^sCzp2C&L@#=x*Kty(-a9ENnTk7x#?SyzG7p7Si4~15 zE`6-!oyD;a041#0k(kAhnj}P0RsX-oD`<5^e~?VXDq)>`BN>|Fl(V*C0l3}ak}4{m zc-hR^xO9`bZ2~Smno>HY?*ik+zcPY`XshS0Lm|0FNl=?OyU4}~t2E!jXnaH68ja2s z`#qPKpc7~G;*ZD~vM|;5M${*7@z3-tz7- zr})vrGIh-WgCa*6Gg`JpUmZh!=Z@!nr{0qQmu#AF*M)99bUEHemfDkyG>IO=8c10G z6g!w@%b|XK#d{XeM93;J*;`O&DIqE=tW8i+0Z4ldtmy4gH=2t-sP@9O0yFF0KNPxJr{zp;%l+?WNT!`dXPgk?d9T9L?Ma-Hz_EkcRLkWDz!JSK9=5T$b2tz?K(Vz7#SU#;RXrb*%%Qil6&%Fgzo zrWe<)C@n2%+CRN#uI_Ps>YPJqwXy&dHu4rB{Et0_n@5mTg~+&4T>;<+@4iRmlZT5VaH#P&#+$pvcbgV0NKqEX8vQ6n*t^aNqh?Xk8W?US(T-h3E2KirYfhC=LPJ(2 zQT;72H{4hT)lDnFp6kr^M)+9&Ps1P&yR^7v&zQYMG@(|2t%Q)~GT83PlP8DgE!jry zb7{nLaaX+Ha_{MJwZ^yXX)gAfM4P&nT{4nbXf7_xoAaog^5ce|MhO;svYuD1-d1yl zfp9DFj9E4y)K20jTpm%9*&7~~r9!HTb~lb6_tjqG4U(0@f1g0;!+E$Uaxgt=G;vry z?$Po62ab;Ko675Sdl5L}fl~S>^E%SQf{PZ`P3b~xZdPi|?^)2Kz0=ema>PWgja7?j z1P}&?$21gH4VNj$OzqpG7?PHRjOo|thA3kKl853X z_k)uxTBJHd5?D;LMT%;lrIL(#A)w@B$LMShM$wWXYFEguB#oj!s+RQ0x}C7rBu5C1 zu%KF0c+qz31hKGL!)GNFbWmkE&SMD|6KPJ>rfp|uiLTlV6pxN5kP<~IA%YC;YX}je zOv8i>a>o`@AwAVynO!BjDdjKGt4Ua)vCR!5HB&}fycrwX65I_7sle0dtu8>ZR}a&B zRJKCT!dpeOsiDQz660L|waIo5CPf>!-(ZLUkSRql-!a*5L2$4;FZ*8VJO-wb z54GAPWd(X^p}XZwms&_LCK+B466Ol2CFL1iu}L;#=F2iIDbvR*CGM_JU={HTYOPu} zL}%52gjLmV6;;ykuz^l1y`Td^!~A0zJ!pE$WGpu*VQr~;)Cy&#qOWU;YT~|AeFSEz z+cug5`?;Zcbx68dj!E5zvEkabW-cUE%Ps61Whu1Ykug*{{;4X%AR!ylD$Q-UNWqTE z-8fh)g)R;nA+B_=3854mJ^03bs+>!OJ@9G{?e%w={rD0(q&!;lBYFja@Od7&J|qF7 zM5Xfu3!1buTODZT(B5*}L8C*~IaSIE4K$n0w|X zMY-9fva4iDxq;Xl$y!{P_CjYUnCO7>vMX2-nV6%^VzM!Z(VGc?_#h-~YTx3*{g1R5 zwyNn}Q#3e&(zxI+E2${21`ob>U@&fyZZm*Z5K**i!9Bi1Qxu2N79np~*1&vQwF6|t z&w>?h{{`j!ZvPGDeg~b1&T4HKN|dFRrGRrC$!_gxN-|!m6SQLpGKoC?*!q+R+E)s4 zX4hwHR{!3my`LqFg(B6e$h5Plu*&x34qMWngn85QNSlj@)I<``NIT!#?@9XVI^u2V z8xIZT#}k+d`682IdU>j~vRFNinF=Se)}#)Nh^%HJsoZ44MH9|dF)L4l;bpLM!ivvL zD$jy3)KXQ(n$x)|$zpK068w9zw5_<4=tbggY>uh!9b;u{_w-61t6Q8-E!dOVEd36T zclCx?Wwp^8Qn@w_95}+|CB31c{fl*JjS=VAMWOfuJ}_BH}K z^%I2OPTLBmZ0f{77FWp*pKLC&hN;M0f@iQPZi(Bfuu?AzR;!)CSU%|$s=F@MW`Sjx zFZ#5-d6rj3ADEt|F9pO?=FFuAzy%mM4Xn;MA?at~vAs*ri_KNE_cFYs#Ca#LMY|eRSaA$E?yFS!P5RgP=kXBU^ zgrVmqNca|6&Dht5^m>(`d00q5@H{|7^GXY3!4tMvN@>6(a1p@)gWd=4-GC!6e#I8I(ky%_qW9HgO7aNH+%d0yl z30-fK01)MEFX!+U=VaUmt+O*0Ch=gLIiDH^rPWoe6S`{*J3fUGs2!)2K0z+BNMU1l z6=kn@G@98aIjs?<$TN#$(=rq!mlCC_p;-1z@8xX%sw(WvUa?^JVG&NV3^^*vXRQF5*%=3OrX#MOf14Ix3P!*3~GN+fvzg-{Myb)NY(;&3jm1 zW|;zPn#Gt^$nR}*w}(rb`~dGMlTr$IDO91=1cs_NVMZVPDb=yyL<4ddR|~>kz7gD4b#l9gdWa30F->A~7g>n=l&9~0MnK_+) zjGH|HA}5$d29+lhI%^Rj30ui&Fa8DV1n;!ztA_lF20S2@QG+6tUZ!i?>)LP2r$MHd zOnGYgHhi#R#$l{u`b3(g{zXNZ8r_+@irGyhh%VpXV%~CN>cQ@xEa) zPnLY33%AY1kw`g6V(a2WV|Hz{IBMl!3=A?HIK8C*9G1JF#?kRCjNA#MU)eHVL7gkKzZ^piL@|cd>w$H5=%bORR0jZn?LKMT*KaN(Q;8=pxg_)*`!KL)*zoMzhglq1H|SGiWo*rc z9BAL7o;U4?wyEv&O)DVDg^7zk<`%L~llB@X(mK*h9)OI%qOn!w>tWHTQWeo0Rv4_E zD$aT3v&7%-9+KxKB{;7)sJ%9k}0>KQ6Ds)=Mb}0{w9J?y}6=qZ@GQ~kq9&ST} zJ@Ixj>D7bEVbOHH{cFe8 z8Z)ym{T;;ymWILe^cP~cQ(RUmDzy+x8_!i#5Lt%w!V+8ZCA1(G$SvLz9r*?lgc|Iv z#Ag3FQQp1hHYsYhG+JuXS10n}8?c;>+)07bL<{;>U9Yy&sQ@vS2v#w=*{1c18`-lz zwCzjwX7np(e*Ih|4y1q9^%Ohu&00jGVGB3#Fs$;gbDV|pl&^GLeLilkhzG;Qba4*> zi9i{$f7TPBIX6mfI?r0j*2q4ak*VNdTJ{JhUv1u~0mW?0Y)nS)N~e=wv;dmP&@3Vu zOsY(gLb`)jYjf#;)8>#Ga;n?l1v*1Sh}#A_O1d_WWuS@lyo$j@Q2PuqRQvvR5mXu7 zQqE%Aa1^zG9x2JGd#5K8GZC|e+k*g=QSzI4mDO}wUWUWK;g!7f{jX_^(Y!~42X=Nv zFDZA$$Cmj#*5F;|M63t|8`!x1g5j>25qVc32{T$<66K&xOSQ&|AF3&6(=Y>|bjCxPiF3|U2 z;fb2@Yza0zL?JTJ>A@|1}j&N^H}#CdjTu zQWPk~B}%K3Q=TW0ImmHPQL07$BMC}N=I~R0ZZA0I&GUyRH59X>C6J(wknPd2do7kq zg_4v;MeLWtBHY}3v8Go$7_MmYw3t1jzS`=zZ(`;sQB z>a`?)?T|0YBk|UT!_`=$8S#zf1#N6T0PjFg(zp{MYlevpqW;cZ83-IaFqYI~Kc*mm z-&|FlPGvG!F}t}Y$30rzY{s0cdU<5x```$pHRdFHFzTWFcn9Me#CCMiccK;UZUehw z3I8k2@No@6K?L$gd)SQ1&VWZoA_?I)dyg9&KR&|wM=0#t3XCl!tYg%qI;uv$Q6;RlHbbW46;}})egyxp5~oECppU!@qkdsYDR2~L{Z|Zl6=S6eQsGt zH@Wg$c+tE|<;dM58chN>9T8|!wx!S?6U<%=bZe43CY^~cq;>k(k&$WDiIDZn)-gMi zBA#Moo5GWtfY^o8)0A$kScJgo>a3qVw@juLvj>w3or;fW`?a&>X+k=>-=Ka%1Ov;c zE+(a1jKwb6eU0|-mPbH+;yDk$9a7nKKCUFRmxM-gHN!`+x((lWA3Fo!=jP&K8ViAb zC{U}!u)OrO+J}kr)0|a~SmWb_1T4}yog-j!MoG;s#Xsz_R@tCQ8rkVOPzMrdNIFHt zg&uI#la=9J`)+|swIp>w5D-aa=(oMaGL@>X7uR;$VFk7W2Be~m=tgQ^Lqx_17%B8K zwB&9+*(p3Tj{QwIG-(?f0@R?jaOKnyS&xcVTI|8V!FmiygpcAv#YRR_jMLphs>wv_^l7$jg%WCYs8Rr%I zpV1lPr%wuaPXElzM^VIbY$?w2Le2r>rAu3qKHclM>8}{DB2M0}Y%7)D#t={css`vU zk&u|ObX65f2AkkRvDxaLzmxSu^-8{FZ}b%HiofJ!V%x_HF1Kx6ki-rfJ#b_N1v%3d z>>EpBF7KpPII_;$eA}FPO=a{$R%ZKdi*l|QJ*6z;I)6DD9mD5Tn<%H_jx7go=|m?s@wu&1l`uq7h%rgHErE)(Eh?u{`dXk6*NU982Gy5Z zC%pxpoI7P$bCNDc3zt_yDVS3V)qrOH*0O=~R7YU;&<#eBck1&w6(RJ0%=a3N=`Blw znP^p>)$nMD<()tw20MNMyI4}P-@+gw_vZENlwOv&YI5o&D_<2jw`3}T@sxb?Oui0~ zav_7X(sBecf*efMcxaSmO0q_(GOs4ZCm8-1B-u)03yo`K4Sv^f^ZJGg0kmNwtT8(; zMXy&W%JfO?#QKL(JcK3$*cZ@T#wrl^5Bb5tGnfW0usP$$c+`qkk=IZ3BU2-c1{)eMlBu$j*QA zt(Bdx0{Gw{o^^q5B6fqNI_&5FOZ&3Qf{X)NTXJlx3_SQd3OZHnSit zLxj{L-#ABp{(pa;+;wbu<_859CtzwM!bFX3I9q2yi6P0Ea00dDlIwc2&xq^$l*LHR zq~;|}mN~eB!A8Om9i5e=nw4?2OZ8jv$-ua&^w7X-hKR`q5k~Mw-m772T5+Q*Jlp3I zRAdH%sVJ}uMofBDyU2#itKm6fTuf3joHuR4?&kY(nN>*zO?dP#ynSK9G^r_4M`}Lu zBz)?KJEtiMsX45d@+mfgRm?w*=d{oUGcxq+P4_$q2_$MHRNm~bFbl5FE@ZqZNno~> z+Nud_uK>?+EUDp@&ZtD`mOc76g|xKzrWRy6up*$}bSWblJVDsFQs_`uM#-5;$lgf3 zaBT2AWpaTBUR53|B4Ud0nJW~BHCY?Mu8A9v1u9*#4?QuVSlStW$xK$;EzWGP8bEmt zo?cK1yW1{ARpLMxCtAasi_SjVHaW4yLxkj2*71FPJ1GNfmo21;oia2Z=jM}NTE{GRKhlaMQepCm6nUR`^ zu~uFZyI{%-8<4DmVP?=>h-Scax31`keUPVbMjYr2mdVyOvRLoM)Zoa4oBzin*C5P2 zu>ppy6lGk>LJ?S_`ofVCB>*ms=H^C=Dbfx-Y=2iL%8y#TstakCIFWj?6&Cv%zYQ11 zQtFkz6zs2@`%8u|;s9GeZQlzT75sKC4Arc|3)EKi5wTDWT}3RYOjL=y%IY~vkafUl zR!G%4U^(TKs}#%`$1DvPxXCZ~5W+v;L3X2dvjCYSo%jNQs#FdkmbE>zuBmH87CLIQ zIJO*lg=)BcL$RV3Bkp{zW23Yp`<*5-C!(Hl!4GVr$5J`t6$1ih)Ftjeld)hG*5%TehazjPrhAx9*f zpe*X8$ z`!PR!XbEaUZhLw#5gD*LN3 z{G|=5G5moJnA0-428RF#ELD^6_Nxds9#?vnL59n42Qc7u!dy0R&6FQLj&H0b=NF11A5l^j&%)^ux_PkxHvXE%UXElGzk7v=Jngc#! z=qJ>P_S)KMEU=^PrzGagxg*t&n2DRfVfVo4{qL-QL1=f&iSH!?vX4T* zBdX*%nf0{oq}a2&L#r{6!G==3eP2tJQX#_EU0cQlv+rm1vrsA$q;lH~D3b&hLS?Ld z#uf+zb1C~WV0}jMu+bwl!HXc?(oAl8 z+N*E}zr%P2Wfw7diI9xnH;Ns}`l_J71)LfVZOnp=`$=0p!7nPgy_ zgkaz{r*H&n2|Bod@jFY6*i!h^c!)U)!%EpV70TGvz0iD zx4$^1c&4~{zZK><<(Oz6xLvud#WU&KjG-A@=9)7jy0xX;+S}l**ltvNX?Xoxwdhps z#f{!Gx1;vX28~79Jr649+}F1kWgTj-l3`q_xOUxyPyaF-RdhRkM&I#%HTl^)m3j8(Vom@gAF^ zICI@QPMf6}@)irbP;wIo5*X&&R;G(IU5@S5EjL9i2Y0zuX-3nKvRtc%&BvyL zoYFNVsvc{{FW2h#Xg?naAxf}(h>6|4VMv^qJeRc9dwm6g7AwpMt_Bn5ePi30g)=Z0 zX`^sw`%ep3XMTkGT}Tdud0N})SB)p~&ysP8>M`o#D9og%(}pmUZJxzGK;4|}Th|Qu zIw2w2lbKGwLMCJihxZ>kL9kRN2WXQ>W>QM>z(@Xl9-r7Dcpx1iL@*H3kdI|U<(QpX z%8}*1&qG(#3^zvQx~hsML2N16?D0mzpr}d|f|AomMgsk6 zo(anF;ee_V8$uF%Fx+ZGVlwD#>Xxk(!A@Oa%(Aboxm*aRp(Xw89YLWgJqxxoLG-avi3W)dH}q@dDD2QMgLC1vC1GsyEbYA|%2{{1Y(a{PL*{od+v zY85PDuM!RK%1l?8D85*9Z1fjI>1$l?^!6JO(}&k6D<;+0ocT!dEDUq*!zGEi4gseh zOK#>ad~2Z+LxNCpXD|?+ZpF}=#9e40=;kiZUI|QJ#)@!^!mNgu#df7u%`sK3UJ^t>D6gTBOhLFcQUPutQDgVwwZSE&X|1WJ=NMZY>4iQIPorJ~C-z1r&Y)~n zso>Owkzt1_8p;L;DkUC8o}Rl>6Yd-8^NoKv#BW6)Z;T)n&hz_d0IOT6*d%s9o+c~O*vuq&T7)$508uV9VO)FNi zylL#;IG$=(<+Vo@-Ef(Bah)@rf8}Q@KTK><4Z}~a6*3143#xZw}_?Ww+;wwsQT(GGcCqmha_oHn$(!#r_Mxw&PvK_}6%2}=x^YEp(_ zk0&u-X5rSTr$Z7GIMs{dGkTD>Vnn;X9g>HJ?+nR9Hg|&L|D$L=we#;K`p4fc(LY;` z?Q_d9S^GMaKu9m1y_H)Nm=nGYVO+eLcm3vvr@3via-YZJ3qN6@2o-(Sl!et@(-R;j z?2DF($hhxAjWf_>j&-_cjiG%RMX+J=VOewOCYD^wyC^;Ya*_L{8TS+yTu67KqHuB^TyoR{?M;!xz) zoNp!Es4Y!#*RWblieEC-+tRa(>(2^9TgHeZ@vJdC%{$sqcqZ?}nw%azQ?_V@Y^1aL z7Q*i2g|MsILg+f%hb9zcAI%lGhcmlNUt{Hi~j-%z1W?CylM;6(%zPR&B!n_;>)`m2> z>|K8GZk;K>pO?4G&6k(Eb`L#cr>l2JcC_Ru^_3$incm1n!@Gu#bUW9wi)ZJ7xoV90 zthu2=>us8N*RI_I85VJeatx~+w9`DHAC6k0gdUe2q^&l(txi#F<18u2mdQfN6bn-H zaO&oE3wSA-&(GOW_>&)nA++3NKO%*RW&6~v6a;j7#KDU!a??p;j0b(iS=6H=BUu2~ zhru$nI#>$%OIZXQNsZ$==jzD@V)B)9;E|mnY8f^Zji-rLRw|1i)~WY4B-t_HhSv{8 ziG;zUwOp)BkLA;}29NdFvp=1QJ=;2U3%hSR!kIq9J!v_1Cl!oa;Ytxew z3Dc7%D7Ktgw};#hZFQ_v>&*I`aPN8AB<~saWA9qjZw}J{0$IG16YcACdNPV1?%ZU@ z^z+gX%D=z+8lrn=h=Hp(W5d=P)gnRC>YVv1_fOtM+nt;G6te6;VB*K@42U~PV<>Le zr*#ALeWz%QEG@}?l6XdWj zB=uz@%aU2kdz4ih4-zj`C`pH>Zp2w!?Gfmo>r}rtt1Ztd3r%9tq9sII5&TsBBC5&Q zODdum8l1M+pbMJr>!)Ir7LG{n$ENz&&H03@YiE7{wSW(-cH)97lBo zT^a?m5GCjN(NXH3)TNdfz1>50?u3oo0 z6P%`1og^gDTU}~(Pu=LGz>m_ZeIW_%PzU<;*M@6CZhFZ-^$;u&mh-W_`wt%)EJVV)PD8L8n!~uZXvqJP-Q_JiUY| zk(w-T`|!9(z|Jx2Tv4qZ)7F*}D0!|0G2S8PBy^2)3=?>2DcL^94!*7-&5!&S$%>II zZiLP0tW78v5%!(V@x)~9wTH} ztJJ5WHRd>eGIPaX%LmV-VMATUMXfcRPtGRtK{k_A!7DT>q&@^oWtG#Ly6}J@h3XG0 zTht17x{`1ZV)xX|wwvh$$IbY%87*ROED@1pmmkqSts39)q50H}%r=b?pG-EP=yy%7Tbhu~UGp;;i1h+q zZ6%E-<;p>UJT%0^5T|Yh-&w%Jz&F{J=uX>Cl`wj#uhE1uh$0Nl)!K4}uf!iKso}sQ zjz?{SG?Z8`kiwYCh>?-mh9)&5g7g-Rz`aS`gl?p?WPnkF4yo{W-7u@%L!84YLx$0_ zKJajB7CXt39Ka~ftgp8bQ24wM%b9YEj)90S+d-PY^ErN z!YYc0MYF{AhhiW5$Js8& z`pbYYpKk&G#ynD6dQK`qK`h~$Zszyr(bX!tu~YGf%S;pCalZ?I#PE{9!O)D8wM1Ry zmlV(wfyyTsFmENb`@&%G$!T8ev*ikQiX{Wc`z?ywZqz+?w2?vDTogx4?u5Ir)bio6 z$qI-6hFMeA{GLRz3TIB;+5-tp-K@Z??1%TD{3#ma*PY3SnK&?&W;U1^P;T0p@{#5@ ztqOtXo=t5SODM|M>7_@ecloSuO3sru8RzgM`&Hs@fn#wr0w!LesGxD;)J?|8QsQAP zZaJ1-J|D5#-CZV8YJ=Ir@DA`pvic6gy^CSm?i6f$L)IKMH5MlU>f$D z3Gt2%g(k0FoxwGs5j%Fk)7;h4FQt4n=L_z0Hw}nzc|z#EdnaEPE=MM6+WiYp{c%8yr>(##p#Q0@UX2I-3xU zTN6xz6_X*=!>Juh;k%^sIPb=dI~I8i@9jn)C*sOoa_PJQRbw@{a+IB16ce5(7`VId z)Gg!%=w0EW2*o=$>k!XHl~5!RwGk8cV?d58s|2ZHRZCmtL>a^6NPHEUQ!0m^l4Cp2 z&9HUonZeX0CQ*dR?29T=L2|nAp(E$zx>f!+9kY~uee-K#pvf6o19Jh=H})M|Y4Ew9 zbfN+SPhA=B@@@3x_KDeMuI~G~VVQF`Y@a%HBW=5LE#q@0d|fp@med$j7lQS4^0Z%% zZbsbp3(?IrDQYH9L=!`$n+PoK$T2HHUH}nPO4mI47bx3J2qTFF1qJQ3 zcvF&?Ihc(H)|GGy|1Z$3lQUer@LG}$Gn~`}MusGiGq(#4ht|PomyXdH4gw^YlwO zrU9WyV;Xv7e5$T@TJ-aoOa^bHDLFGP_TkBp7n*RPaf20{i&vr9&>dz)q_8963gq=6 z<_`L(1-|b@4{|+-uCT?2KkOJo3n{U+i0FkpUP+c2G<~=xur|iACTHn{B`jWP7y<|; z^&yvVv!xPka#qryjq}QPDluTfSW9RTB$-jjGrEwS!+~C>ZbGdZ;lZa^?u5Z^w0-wF zbEZ6OQI?gKq9qI>N5pHRF;Cbc&6KCXni5B@PJ2|i7UPR8Y9DGMN>nr;$;V~rTl&}< z14HIjGdujY6kt~DVnA9B6Xrzeq>~>3wr>Ux>`oFmAI4F!(U}wu3h?^w@|qJzKJ`iBUZtdB5 zpLJK8&9aJ=)*69B!U~9$jo>0bzRF@}Ze`gdIk+X>lrum#%5XWluvs|J_LJ5QpF&a_)?I;Dm;<3=O~qQWI6bVLB5|fg2rpQ)kuG}VjI^gk z=}_i@H7h#r?#~>ZoJ10g@%w}1XZUR~IJRoQ z_&B2e!n1o4Ka&lMT-@L2VJ@xGjZY75WG_ zXaL!uJ_Xs66+zNX0VQQEZYL{@XOI#BU@kln&VBJScT<08ZWhi{=HWs(JBEe^*j2Ub(-UKd#$__$Oo;(`-@;g) zkmL$kRi3)(dW!r&{OFK=!hMtAs-f~3r%6nnjvavD13 zlsQ@+n;bu?0a?LU)E$kMN5&>6uQ_~l|B#n1m24qBb@OPMhJw^2V8J;!%L~gxL*vB8 z$xuNBB6E(MI8NFM(q(jRt{OWGW2axGglnU>d1z?oPO%ln(sHMKN}17uAE0Bmm10?s z#2iUPY~>Ue!{$jTP15k4(V=tCJr^3E-ameDd}^GFA&oyqYoruN zP{2I=Il2x{+Vz;ks*lXb)sw?RE@ukpx~4fpID<2%G{sEl{Jo*PxEkufq(re9 zuEh%#>99s-V@k@3xra=ry87YHM*a-9E4h&0Omj0LVWsR#(p$B~O8O}|%He+an!BO9 z*sx_A+kc2U2^KG{8q1K#O*TK7BUG1*E;b?JI-Bzsqvh;li~XQFB+~g1*IQGDr;(?5 zRtQT=tXjGN=|H%g{>G`%h<+RVJ}Y_Rp@aO8y1o~V0^^cz8eClZP|FSRzn)iXtI>!5 zGr~QHb^$${P~GU^DQ1@V55@8zk`rphbs3L!_toTM!nzF10i5@}>k6wve;@W$Gqe)L z9z&I6zk?+p6oPrTgv`QjN24m3tQ0eoYrYK@6Fi39Ne+c6iSN5wlUSsFNAk^2es%-D3>vi45m{hHhaCx zxA5B_?UgNiwr%ZgC%D6dJ@t2cMFd21s1wYDIU>Jrg9zyy8wt^uhIXrR870+do)nA> z+uV|V%k89%qGvc|;?^#?@PT7;7C z;6*Ku0L|CpjcO&dOxu_z3D}{tHo+#vM6hYCa#!b-!hC{yrHvN zkdl_%I#};;X)@X4B1Ep&tiW#2A2e&Ds@oeBpNbYR)+7AjCH66vlBAOD1{hn#gECy` z#IAvd2~8V3@}{y?RTNhl5->buG^yfL0Tinbb%n1vBfR)mnGQ&Yq{BWLDtaGv0KQeY z8D@L`n+*N78}}ndvkys%E!B?CFS4B!S9c&HP*d+-;2x{Jxg4`7HH&WUuMF}O8!~Q6 zn-J0#geYiZ3UK!sD_O!7X{X zmfUl7iuznP(qnS6`c`N>%C^L#>-kWy)%(CZjQ*vwN*EB@Jfm zU~i(e7GC_JJ5wc-=UCiab$hfck0Qu?n;X_?vfeC{5GHii~>C?3(H za&9_){3*rud=hYw602;qreUmL+*4otN|%XijmD(-6rWO1;TEbMd0%wRpp23-uf+x= zfw^HQlf9-^$3NGZ?Ts)J{XdO{T9Tzjeq6eL;}3%vv+u;8bTZiV$&)9C=Pf%=ea6y= z|K8ITFSy)0dt9ykEqf4jl7NZSti|LQYDq}2H`Z368uy!Qe^agW+OddsV3LqDir05+ zhz!uHr*55HY?@o5=v0a^gIgVYW4Qo6Z75h~B}5EHr4`;N-zSL`BsI7i6@oknAg1|@d7veGt zeWY8i?8#HvNL)&__Y+d$IVVzQR4^1996%53-)AxqyNc34hH2^<*25t220}9CLG*V9 z8M#?hDGGfm`_?AzEI_BLJ<-0{2)3qPD-tepFD!to#g1^OB#V$Hcd*%>w-ORQCqPOx zp!QCcgz^lAIyG5hy`%J)HOKXs;5NryU)NhU2f)ew-2nZeWtK0)Al>Sh*UL$r_Atp~E zNaJP#Q62?$z_Wd&zAQDzkz`l3}(SL+BK@#sF6x5WlQ%i zG?=)`M6pL+6MkhHM2sPVMye9G#G?=Zqe$#Wq^uU<+ULs`duk$wl`^vHJWt_nP<`YK zJ2>)6M&$)gW8NtC&wEw{1WHfcWXVp8v4{z@lJ;;%4nHA2#5OT0bJAEMRT!UOEwok& zD7yLMLURL2p|}nu2rNFWwaj6Vi)-mx(NSOyv)eZIprYwR?P9UaOC?%0Hwl5!JmN`e^OR@oYo4~ik%K(rS`)$+-Z(h$UTiV?vzQWuJDSG#LuE}9eJw3X<9 zT(`1SsfvWvsfm1+%2?M4KtI~AZ3 zH=#}xCJpGCtr4=IOgV8+>9lsQaV`6C`o#$7?Nkr7~w~ zy_95W>ll1i1k^2 z>fr0Ywxc{c6SJHOL22w8L}>ljcr4edn`6rTqCz~|EIExW z94{XncrAsLGL^gtL@2XiB=iXvHA1SiWG+HFpu3bVJC@ssYM*4v85ge9XtqH`)EsCHr~CZdfXwh>bjdxCw8 zEZ&5j_u&M?7*sSz3|a^C#3MU3Bq*%^iGP$#R`yvFsH?c!Q0l_R?bzI+-Q?w6y&-5$ zZT5x^9HEGd+V%#Qm+-4HwY3pibU>D;q20>jtxI!zbpxXsXntJXqQiPWbbAKL7UTii_2T8ygUd*shKE8=M%NdBo&D}uwsUI0O?m2qj zERa*5)c|RK@a*F1+J>QjQQ8aw>xA}xN~ouH(|QfIjm5EUUy=Jc6p6#y-nWNzWlLI6 z8(rg3H#32_DF+MQ&Cy|qGw$LvxsYLGgc9?82z@eHMEVoSRkx9pcS-)X1m3AzQ#p`0 zMsgEdXDKWgnLVz{Y1O5Q#r2}dESZVU*=E6|5+`?vJ)^&Y85Fh%(`DIf>2ic^ZA(Bb zzlz-k50gPguG)^2>Be-9%%@W+IMIe0Tecv{)2v1F^NUp!D8#Hx`aH#K*TeiqC-OTd z0#}Bd%DXqooiHP*BNLGHgu(;JsSVo<2J(k;R!^+rXq}+`LQ0VTv}suMW=$C4Y8KYGJ)c=F8F4tR1B=hjfow8cG0>=2556fgIeJmOy)T=)a(%jJ|r4l8EG>+ zBGNbg(n9*w3Zs!6w$5pz*&3fwo27j-=8ab-ceXd=9#&e^IIR-PY{16<_3~KAsU~`$ z>DbKX71>}qZBoQC&|y^KAtJf`dxwNK1tQkg-*%oSJvK zMT3<{7Mgqk7&}xH%5DA% z3+<^Vxkv~O7v-!-TBBCT`EJuy>7nSY2WTucGID^fggR_iJ zOj z{d0_8#}~6+ph{ceYof@6wnwGKZDCY`)q1rxL+EceS-W_TDJ)|~u(snnow|q@(t{gm zJyRD6y=of}WTC67!kkL%*bjjU@Bp&t-pcH;Ts;J6#g{n>*Ei`93W)qH5kv%u`CX2b zN3?^%olkLySU>6?Lf)Hj&@L3HSN?a@=!rD?Do{<-n90)@PU%NjN`qPyXrqOU;6dL+ z`aY@%!ccqq7gxfCw| z`e2^34!2Azq;TDqC|J4c22m}U+f)rkS20tIO1GC6$PP(AF481kJm z(ubl(LM0OD5;(+9Z{jm?q%4cg{Ij?_>suMIiS&SZ^QJPkQV zI0H1M^a(zL{otLKRyga0%nyOtM&$YSYGq!Whh@0B2tFDmtlAewj$<%xO#^YfOdj_$3PT;fXK-;7lHhh%4=|i`SCmbNY@nk%DU3xVPE*+}7}iua_SR`X)_adax6>D&NTr zQo9$L&+gO%?2dSED4B_oh1U>b2cM`P1uw3!v1E0VP_C?E#N|ZO98F8Q!t7B$xz%jN zdZ3PW4p#@Fq-H=t*tIqPFnBq_6Lm=>WNPSUyxSb|G$jvXypARzCGBa~B%HVHHCvCw zru~aTP=%O`wE(5K^#DsJRNHS^Li~_X9YgEhuZ?D0jz7Kthu(Vpj&F0?C536Aru{8B zD$As)WdKDGC&|jw3*p;tJgBf;twLwrT1hxbZ!u)4U&UK6OT!~c$LCMS>9zzwtC8^D zU~7b`Qx$^IKyK6Hupp}Txnd?8sUQ)x6%Ju&s$$@bK4KdFQI@ppJ~QI59d?Oj1_qO7 zlO>1Bmsla4-(|JHc@@lMNP@M_g##G(CQW0fxBp`ho}~JjW1JsM!eAleu8@n4{=kS2 zIYhjm@-Iy8BkMi0o02E4Jy1Rnh(uPLwB(w;Mq+7p^puVVFkA(0`wZB=l@-0@<0Epf z*^3$I^R^G~v+|Quw=ySYfhLp#F4A2epuYm1?ej*IRYU=kyf>i)ozZ;dt!(_*#lANc zX=7Dz!eHb?s3~9Jrw8t^9(e;DbXUG<_RPMrFiY0SEUcsn)R-259Y}l@Mv)Bnl^yi?4guUQ>+IhUfwFkUH9)!xZ3A4{q$A6V=RRJCC|s7PRv z^7OZE2a<|mU{jY|I1IjVCMh17^j=-Pw94;xqL375>9xueIyOeu3}3K=+u~p=t*V2* z;iIae5Q&~P;2s}%Q~NoZo=9-E3%LmN;CDxM*?L?X#@ zj{*By=&@^&Iwb@i`yw>*oEm%5bfa}f;q7=IS;Y|MuXYCW>~Q`M-=0X`?W3Q z&|W%Bvp!SClG-@UXwC?s(QP%s)aZto#FOYdzRZuz@FUxx;m!<^&n6q->(~`}aZr~k z2ynO)gPAvuB_yYusdSq=^Tu#pi+j>$a#KE5a^}vhpZp)4N(YpL^39_fCqqq1lH%PK zPs%b2$#|5gr_IS311F9F^IndGm4}Y8I0q$iC=~T7A3NSQHfOK*qxhPJJ?JFn5aVh- zNm_?B>XEH5{sO%^DAh;_Nr5G&09ZPiu#(6ALQR6}48q*H20v+rGkDF-W<$=2VlGFC zLz4`|g&BWUA@6dS-+<0|8_SZ_1ft_dHMYqh@OU}$Cui-PXKl7VLs2|*lQVp$`@}iR zKJeb^s@k9ax zrjCp!Nx8~Nl#-DhihFSf*Vy+R*)Ty$Dh8C~Oec@%{m2=& zlT%^mON^x7&0ukIudJ*`{UQgJN9XglPyzyiz57~34)ya=65ARKuDP$DRIw^pFu}Nx zq;lq+?d{a@R1BWN(t(E%JdGTMrZSK`4A`$)nc-Z2Dj^ypi>GdxR{@+iyY8g%)CDu^ zJDkL6KJ6y(%BQ|Swir?dX;_&)gjR3b?=@QOX^&GaZrko{nF?o9k#?KMSZkH}1I@)u zLmMcW+lQn5ho>hFPfZ^?a@EnX{o~VD9Xz~u?BMj&*xrNVlSZZHEc&sTIyZr!P!)0a zh!$LW#=Pk-Lawog#<_kS3#ZqDjY6Rhz9!=*mpBqMZp_%xHKK53Ox=$&xr&&C+VC!2 zn(@n5ez^9aD0jy6xGtab1!<_@^sMTFS=cXWx+KR+4YM_VWo`;_cia3j8%vC8lE`=4 zY2Z_rbw0n$4QbYOUquboL+c8=Sb4rUF1uhBg&_g6iq`Z@-9}8xb`T53&RLkjc-*3m zH=~;{5}Cdv7uCv~+o8WIk3dAk4HA1+iR|>N>JR>^e7Ssl2#A2A(vtH|Y+;+QgiWk* z2nO7fzQo@DSKGPmSaDooc&_~vJ5h+RMJB;cZio~K*;uj!WFik(kri2(85|PuSTn{l zd4oJg9)M?v6kaUf|F1(;?{1jEQEu#^cXf5us&zh93x1;S&oD+MI!7bNZ9;Acmn^*<}NV3$b7am>EJ(t5yv)`urSn<(1+9i7cNK$RboO! z3;SS}-09`6`_}Hm-tz$K$t^FNflI!{T|YfON}zMTH56$6)p2l12T2QRp5^HxSi>vu zkLn+W>MP|%@5y*$wd#Bck>(6zRa{JE9;BgQyX*`78C(c))+i@#7~1Cxu8n1K1eZqP z_QV%L(y|IT4MSNsef0)8mORupLq!cAhd`R0hx%+n9Fg#*&hwzh*bkBY$dZq9(6IGJi%0I@_Id2)L!l#nggdbZ0 zazN4WhW!N%I$c8+tTH; znl(2o3-OAA6phMRWmRARMtxz^Q5f@WXh5RgDFe-O0msKW+h3qSO2oSZcV88CzxtoT^iq`bmzsu;W=QHhvBQh}Vo*(8yB#~`_r>7UcsN=ydQH@II5S50w%7y+&Rp7q_ZzpaBGnzc4+d^<9HQ}7 zPu8A?=sth+jRc=sI@#Z7{u{P1DqrdRL?s)hqM`w;AGJVgvGNVp90Vd9xYLyGELg0{2_Fqu>1k`2~V zrIH-iIVkIafgy%jrBXOl@oqx8UU(R zjqVS)#Jgmy0qXMkhT5et6$;A>l=5%YwkAN8LL1Z}8ykhD-zncFo-AQ12M&`|jwOVa z4hl}yw7|b{u{qotIBzu${j*|V0`90zYj3XFz>7yF%Lc<+ z-bP36k~+HoWfQ(obwR4{&d9s8hUTn&8Pd)NOl3K3;Dt$%ELltATs*tw1+Kiyr)Tl+ zFuye4XutzzsKm-0k1{YJfl##uFEdUCWJI+(5uLj4tI`1+$ruUr@SSCaqEo4(SVS3b zK^C{(d+%D5c6>*MSL`veFX8vfDv8D>yANCrx}mv#5OfViJ3&?FDsLb`a2JfMXBE~) zQhL#z9NwYvxznRowBAhuX~KC4sq7wjgU^?VJQkU9Cpydb4AwL<$6Q0s1uu9rN6KAiP$R6lXjhqaG?D zaCgVnnH`ymmintAV%F|@oy^_l3%aQ62^YeXlq|be>`zhPA_Lb9!|&1|!Dj=8(oI45 zi>!}e5y6z&eP+>lb^%;T8;};L+_cOpXE}>yD=WpC+M}(0`cqAVn6iK&u9t^wA0hy? zjraU)f(2{6?sACSi*LiJuut8$0Ir|DIDb~Y*18Te#ZPe__5X@gB8MM1+5R_wj{;D1 zKfG2D%<*2w@zmCkL;QFbW-)0Z@siocIVBO6F{SVuQvh9#5j~fU5N0o^ST6cZ#t>v{ zcsq*%<%YZ^Febqa(~2BwN!hp-Q&OzD4*Too29QB}x5VnADC-m>O1OflQpO=Tfr~_u zx8w4zfn+uTf=j-|&&Cb&&V;m9qPkYCC3kh9(|eHDF{)ti=Eb#Z+A1}8HxR zV5ZH&;M72juyWow7wkcD`E=)~S|aODmz=m950c0>Ne_F;*v|GYJvjo=7o18XAeab1s&D zNBpW@SdZSD4kQM^3ul^^6x0$h8jzV*(i2xGNPR;8m$`>#!$GL~y|4$eIXnCNQx>T; zO&p1XR{G1HmdE&3^YB^a9e%oHFH4H{jE#I6(^^WB#D+FXpQ(&P(v935DhG6L(tx<+rY!i6D+6pF$cBPPY-cIZgJsysg>YfNk zGuI7(&FQw^WDn`U;m! zA8kyV+Drk(P__!;$^fw$7ve@CwbWjw+=2V@P@w3&e&w5KwRfcZxE<8*M)*pf0Mj{} z(`0zcS)im{;@DIow9LX~aZ!_s1q-TyFaouoLQWF?!X;=jpEeCFCeO#h#A? z@yqiI0%>Qz2Z!(tV;tF&8i_^djjvzjrPES0nZUwq?oGFcvX6_+E3cEexY0w z+WW2ER4+F3lZ;u7^a-i0;qpcY94-R`LK_$OJW7O{YyL9_7~##~29VwAUMy9X-&Gwp z3whbp3UWeE9J3EmX<)kAU2(n12ufuQ8b!`fFJ zchL?0$7r_rT7Z*C?cQsXKg3N7<4tEbRcO^kbrUyJ| z(IK}c;M#Mr%Y!RX+uAm2AOg~)jb@y=+MH`HrEZ|&8xiDM?FmbFZW7E9Ki;_0O4kkr z5`{9SW(gJc!fo^;XrVj9SF=lb8SyWw;GcetXG~kp*1lt@lg>H3!^!`_@ZgTKQN^hz z+zxl2Ms|{&PH|=u|K^?e*ul`aT1a%(-wBT`Po|D-bnAg+=#=2}hf2!s$Zhk1(4BfJ zg_whwQV^Ek49_gw1$`#SGWe<8)6KKmpjk{%&L68Wik`5}1crnS(3o@^{g&GKViLR5 zs$+v@V0G#$HS0p9p{-vuQf=BG^6sUUBL-yS&c%TU=YT$f)H#pRWUculg`S-upxYqP zFS@=^ia1upIbJ*v1$E;HQzrYku>NQa$aFt&@za@#IgeC+=ndOWg270GumA%lqg6w( zndi=!l~Ox+opWS4=|BM!Qga%eRAbis5`-xqz&?X4Mm7%}jaByfYH3D!mZ>5Jmm2H4 z{Qcw$64qYt)n`c541g7oyqpDy-n@h%ooC^2mBq`QCc*cv?+rVRPy_T7c2NXDS767T zjWAgr)_Q_BZ@k}JKtL#uNwkL?l87!jDMv~iN1?=w%VEPTnfh|5cfBfRBdk^j&f2OOCh9!zRN?xfvqE=ACyS(H37F%~ zKfoT7YM)kB5hO5&`l1Xb)rT>!W9ccIO!?Af9E(U6fF7}C0ir!;M~c&OQkgz1H(O^7 zPvoANVC;WgFUITJp2%w-{USx-+1ED8h29WGah_d7ut=${K1v;{mCg_SIw%SrLx5Xq zMy^WaHm*Rnm8AEb;NVV_m(RpWiH00|TS54@%2qf(E&AEpgp*YJAS*bI$v+(lK^R{S+pjw@bUi-olPHaI{S7ewMb(icJW4{eJiQ`?ro%&ME0c; zhyJ1_Y)&5({vI5Bd5uT+UHowAF`Hoxg)fYTo# z3{*1kdOEQIQ{1L}vvdtq!qtx-=8wylO$0X&BS$OhJ1a53KYcj=wA#xhm$V%mJMHe$ iQBvd&4&DS9A>a})YcVHHcXgPO%hWBg>hww;9Q+rH@X@{i literal 0 HcmV?d00001 diff --git a/src/wp-content/languages/ms-es_ES.po b/src/wp-content/languages/ms-es_ES.po new file mode 100644 index 0000000..fc919a2 --- /dev/null +++ b/src/wp-content/languages/ms-es_ES.po @@ -0,0 +1,2262 @@ +# Translation of Multisite in Spanish (Spain) +# This file is distributed under the same license as the Multisite package. +msgid "" +msgstr "" +"PO-Revision-Date: 2011-07-05 06:00:26+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: GlotPress/0.1\n" +"Project-Id-Version: Multisite\n" + +#: wp-admin/includes/ms.php:514 +msgid "If you reached this screen by accident and meant to visit one of your own sites, here are some shortcuts to help you find your way." +msgstr "Si has llegado a esta pantalla por accedente y querías visitar uno de tus sitios, aquí hay algunos enlaces que te pueden ayudar a encontrar tu camino." + +#: wp-includes/ms-functions.php:1307 +msgid "" +"Dear User,\n" +"\n" +"Your new SITE_NAME site has been successfully set up at:\n" +"BLOG_URL\n" +"\n" +"You can log in to the administrator account with the following information:\n" +"Username: USERNAME\n" +"Password: PASSWORD\n" +"Log in here: BLOG_URLwp-login.php\n" +"\n" +"We hope you enjoy your new site. Thanks!\n" +"\n" +"--The Team @ SITE_NAME" +msgstr "" +"Estimado usuario,\n" +"\n" +"Tu nuevo sitio SITE_NAME se ha creado y configurado con éxito en:\n" +"BLOG_URL\n" +"\n" +"Puedes acceder a tu cuenta de administrador con la siguiente información:\n" +"Usuario: USERNAME\n" +"Contraseña: PASSWORD\n" +"Accede aquí: BLOG_URLwp-login.php\n" +"\n" +"Esperamos que disfrutes tu nuevo sitio. ¡Gracias!\n" +"\n" +"--El equipo @ SITE_NAME" + +#: wp-admin/network/user-new.php:46 +msgid "Cannot add user." +msgstr "No se pudo añadir el usuario." + +#: wp-admin/network/site-users.php:161 wp-admin/network/site-settings.php:72 +#: wp-admin/network/site-info.php:82 wp-admin/network/site-themes.php:128 +msgid "Edit Site: %2$s" +msgstr "Editar sitio: %2$s" + +#: wp-admin/network/sites.php:37 +msgid "Clicking on bold headings can re-sort this table." +msgstr "Haciendo clic en las cabeceras en negrita puedes reordenar esta tabla." + +#: wp-admin/network/index.php:29 +msgid "The Right Now box provides the network administrator with links to the screens to either create a new site or user, or to search existing users and sites. Screen for Sites and Users are also accessible through the left-hand navigation in the Network Admin section." +msgstr "La caja Ahora mismo ofrece al administrador de la red enlaces a las pantallas para crear nuevos usuarios o sitios, o para buscar usuarios y sitios existentes. La pantalla de Sitios y usuarios también está disponible en la navegación de la izquierda en la sección de Administrar red." + +#: wp-admin/network/user-new.php:21 +msgid "Add User will set up a new user account on the network and send that person an email with username and password." +msgstr "Añadir usuario configurará una nueva cuenta de usuario en la red y enviará a esa persona un correo electrónico con su usuario y contraseña." + +#: wp-admin/network/themes.php:181 +msgid "Themes can be enabled on a site by site basis by the network admin on the Edit Site screen (which has a Themes tab); get there via the Edit action link on the All Sites screen. Only network admins are able to install or edit themes." +msgstr "Los temas puede activarlos el administrador de la red sitio a sitio en la pantalla de Editar sitiio (que tiene una pestaña Temas); puedes llegar ahí desde el enlace de acción Editar de la pantalla Todos los sitios. Solo los administradores de red pueden instalar o editar temas. " + +#: wp-admin/network/upgrade.php:22 +msgid "Only use this screen once you have updated to a new version of WordPress through Updates/Available Updates (via the Network Administration navigation menu or the Admin Bar). Clicking the Update Network button will step through each site in the network, five at a time, and make sure any database updates are applied." +msgstr "Usa solamente esta pantalla una vez hayas actualizado a una versión de WordPress desde Actualizaciones disponibles (desde el menú de navegación de Administrar red o la barra de administración). Si haces clic en el botón Actualizar red empezará la actualización en cada sitio, de cinco en cinco, y asegúrate de que se actualizan las bases de datos." + +#: wp-admin/network.php:109 +msgid "The next screen for Network Setup will give you individually-generated lines of code to add to your wp-config.php and .htaccess files. Make sure the settings of your FTP client make files starting with a dot visible, so that you can find .htaccess; you may have to create this file if it really is not there. Make backup copies of those two files." +msgstr "La siguiente pantalla para configurar la red te ofrecerá líneas de código autogeneradas para ti para que las añadas a tus archivos wp-config.php y .htaccess. Asegúrate de que los ajustes de tu cliente FTP permiten que los ficheros con un punto delante se muestren, para que puedas ver el fichero .htaccess; puede que tengas que crear este archivo si no estuviera ya creado. Haz copias de seguridad de esos dos archivos." + +#: wp-admin/network/menu.php:77 +msgid "Available Updates" +msgstr "Actualizaciones disponibles" + +#: wp-admin/network/menu.php:17 +msgid "All Sites" +msgstr "Todos los sitios" + +#: wp-admin/network/menu.php:33 +msgid "Installed Themes" +msgstr "Temas instalados" + +#: wp-admin/network/menu.php:52 +msgid "Network Settings" +msgstr "Ajustes de red" + +#: wp-activate.php:92 +msgid "Your account is now activated. Log in or go back to the homepage." +msgstr "Tu cuenta se ha activado. Accede o vuelve a la página de inicio." + +#: wp-admin/network/settings.php:31 +msgid "Super admins can no longer be added on the Options screen. You must now go to the list of existing users on Network Admin > Users and click on Username or the Edit action link below that name. This goes to an Edit User page where you can check a box to grant super admin privileges." +msgstr "Los super administadores ya no pueden añadirse en la pantalla de Ajustes. Ahora debes ir a la lista de usuarios existentes en Administrar red > Usuarios y hacer clic en el enlace de acción de Usuario o Editar debajo del nombre. Esto te lleva a una página de Editar usuario en la que puedes marcar una casilla que le dará privilegios de administrador." + +#: wp-admin/network.php:111 +msgid "Once you add this code and refresh your browser, multisite should be enabled. This screen will keep an archive of the added code. You can toggle between Network Admin and Site Admin by clicking on the Howdy (Username) dropdown in the upper right of the administration area." +msgstr "Una vez añadas este código y refresques tu navegador se activará multisitio. Esta pantalla mantendrá un registro del código añadido. Puedes alternar entre Administrador de red y Administrador de sitio haciendo clic en el desplegable Hola (Usuario) de la parte superior derecha del área de administración." + +#: wp-activate.php:90 +msgid "Your account is now activated. View your site or Log in" +msgstr "Tu cuenta se ha activado. Visualiza tu sitio o Accede" + +#: wp-admin/includes/ms.php:511 wp-admin/includes/ms.php:513 +msgid "You attempted to access the \"%1$s\" dashboard, but you do not currently have privileges on this site. If you believe you should be able to access the \"%1$s\" dashboard, please contact your network administrator." +msgstr "Has tratado de acceder al escritorio de \"%1$s\" pero no tienes permisos en este sitio. Si crees qeu deberías poder acceder al escritorio de \"%1$s\" contacta con tu administrador de red." + +#: wp-admin/includes/ms.php:525 +msgid "Visit Dashboard" +msgstr "Visitar escritorio" + +#: wp-admin/includes/ms.php:516 +msgid "Your Sites" +msgstr "Tus sitios" + +#: wp-admin/includes/ms.php:525 +msgid "View Site" +msgstr "Ver sitio" + +#: wp-admin/my-sites.php:45 +msgid "Documentation on My Sites" +msgstr "Documentación sobre Mis sitios" + +#: wp-admin/network.php:115 +msgid "Documentation on the Network Screen" +msgstr "Documentación sobre la pantalla de red" + +#: wp-admin/network/themes.php:210 +msgctxt "network" +msgid "Theme deleted." +msgid_plural "%s themes deleted." +msgstr[0] "Tema borrado." +msgstr[1] "%s temas borrados." + +#: wp-admin/network/user-new.php:25 wp-admin/network/index.php:32 +#: wp-admin/network/site-users.php:32 wp-admin/network/site-settings.php:27 +#: wp-admin/network/site-new.php:24 wp-admin/network/users.php:42 +#: wp-admin/network/sites.php:40 wp-admin/network/site-info.php:27 +#: wp-admin/network/site-themes.php:32 +msgid "Support Forums" +msgstr "Foros de soporte" + +#: wp-admin/network/themes.php:142 +msgid "Yes, Delete this theme" +msgid_plural "Yes, Delete these themes" +msgstr[0] "Sí, borrar este tema" +msgstr[1] "Sí, borrar estos temas" + +#: wp-admin/network/themes.php:128 +msgid "You are about to remove the following theme:" +msgid_plural "You are about to remove the following themes:" +msgstr[0] "Estás a punto de borrar el siguiente tema:" +msgstr[1] "Estás a punto de borrar los siguientes temas:" + +#: wp-admin/network/themes.php:145 +msgid "No, Return me to the theme list" +msgstr "No, devuélveme a la lista de temas" + +#: wp-admin/network/themes.php:214 +msgid "You cannot delete a theme while it is active on the main site." +msgstr "No puedes borrar un tema si está activo en el sitio principal." + +#: wp-admin/network/themes.php:125 +msgid "Delete Theme" +msgid_plural "Delete Themes" +msgstr[0] "Borrar tema" +msgstr[1] "Borrar temas" + +#: wp-admin/network/themes.php:81 +msgid "You do not have sufficient permissions to delete themes for this site." +msgstr "No tienes suficientes permisos para borrar temas en este sitio." + +#: wp-admin/network/themes.php:127 +msgid "This theme may be active on other sites in the network." +msgid_plural "These themes may be active on other sites in the network." +msgstr[0] "Este tema podría estar activo en otros sitios de la red." +msgstr[1] "Estos temas podrían estar activos en otros sitios de la red." + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:291 +msgid "Delete this theme" +msgstr "Borrar este tema" + +#: wp-admin/network/themes.php:133 +msgid "Are you sure you wish to delete these themes?" +msgstr "¿Estás seguro de que quieres borrar estos temas?" + +#: wp-admin/network/site-users.php:26 wp-admin/network/site-settings.php:21 +#: wp-admin/network/site-info.php:21 wp-admin/network/site-themes.php:26 +msgid "Info - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable." +msgstr "Información: El dominio y la ruta raramente se editan porque podría provocar que el sistema no funcionase correctamente. Se muestran las fechas de registro y de la última actualización. Los administradores de red puede marcar un sitio como guardado, spam, borrado y de contenido pata adultos, para borrarlo de las listas públicas o desactivado." + +#: wp-admin/network/site-users.php:28 wp-admin/network/site-settings.php:23 +#: wp-admin/network/site-info.php:23 wp-admin/network/site-themes.php:28 +msgid "Themes - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site’s Appearance menu. To enable a theme for the entire network, see the Network Themes screen." +msgstr "Temas - Esta área muestra temas que yo no están activos en la red. Activando un tema en este menú hará que esté disponible para este sitio. No activa el tema pero permite que se muestre en el menú de Aspecto del sitio. Para activar un tema para toda la red ve a la pantalla de Temas de la red." + +#: wp-admin/network/menu.php:74 +msgid "Updates" +msgstr "Actualizar" + +#: wp-admin/network/themes.php:183 +msgid "Documentation on Network Themes" +msgstr "Documentación sobre Temas de la red" + +#: wp-admin/network/upgrade.php:26 +msgid "Documentation on Update Network" +msgstr "Documentación sobre Actualizar red" + +#: wp-admin/network.php:114 +msgid "Documentation on Creating a Network" +msgstr "Documentación sobre Crear una red" + +#: wp-admin/network/site-users.php:27 wp-admin/network/site-settings.php:22 +#: wp-admin/network/site-info.php:22 wp-admin/network/site-themes.php:27 +msgid "Users - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network." +msgstr "Usuarios - Esto muestra los usuarios asociados a este sitio. También puedes cambiar su perfil, reiniciar su contraseña o borrarlos del sitio. Borrar un usuario del sitio no borra al usuario de la red." + +#: wp-admin/network/index.php:31 +msgid "Documentation on the Network Admin" +msgstr "Documentación sobre Administrador de la red" + +#: wp-admin/network/settings.php:33 +msgid "Documentation on Network Settings" +msgstr "Documentación sobre Ajustes de la red" + +#: wp-admin/network/user-new.php:24 wp-admin/network/users.php:41 +msgid "Documentation on Network Users" +msgstr "Documentación sobre Usuarios de la red" + +#: wp-admin/network/menu.php:29 +msgid "Themes %s" +msgstr "Temas %s" + +#: wp-admin/network/site-users.php:31 wp-admin/network/site-settings.php:26 +#: wp-admin/network/site-new.php:23 wp-admin/network/sites.php:39 +#: wp-admin/network/site-info.php:26 wp-admin/network/site-themes.php:31 +msgid "Documentation on Site Management" +msgstr "Documentación sobre Gestión del sitio" + +#: wp-admin/network/site-new.php:20 +msgid "This screen is for Super Admins to add new sites to the network. This is not affected by the registration settings." +msgstr "Esta pantalla es para que los Super administradores añadan nuevos sitios a la red. No le afectan los ajustes de registro." + +#: wp-admin/network/site-users.php:25 wp-admin/network/site-settings.php:20 +#: wp-admin/network/site-info.php:20 wp-admin/network/site-themes.php:25 +msgid "The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable." +msgstr "El meno es para editar información específica de sitios individuadles, especialmente si el área de administrador de un sitio no está disponible." + +#: wp-admin/network/site-users.php:29 wp-admin/network/site-settings.php:24 +#: wp-admin/network/site-info.php:24 wp-admin/network/site-themes.php:29 +msgid "Settings - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database." +msgstr "Ajustes - Esta página muestra una lista de todos los ajustes asociados a este sitio. Algunos han sido creados por WordPerss y otros los crean los plugins que activas. Observa que algunos campos están oscurecidos y muestran Serialized data. No puedes modificar estos valores por el modo en que el ajuste está almacenado en la base de datos." + +#: wp-includes/ms-functions.php:930 +msgid "The user is already active." +msgstr "El usuario ya esta activo." + +#: wp-admin/network/site-users.php:242 +msgid "You may add from existing network users, or set up a new user to add to this site." +msgstr "Puedes añadir usuarios que ya sean de la red, o añadir uno nuevo para incorporarlo a este sitio." + +#: wp-admin/network/site-users.php:240 +msgid "Add User to This Site" +msgstr "Añadir un usuario a este sitio" + +#: wp-admin/network/site-users.php:244 +msgid "You may add from existing network users to this site." +msgstr "Puedes añadir usuarios que ya sean de la red a este sitio." + +#: wp-admin/network.php:343 wp-admin/network.php:345 +msgid "Caution: We recommend you back up your existing wp-config.php and %s files." +msgstr "Cuidado: Te recomendamos que hagas copia de seguridad de tus archivos wp-config.php y %s." + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:236 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:283 +msgid "Network Enable" +msgstr "Activar para la red" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:238 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:285 +msgid "Network Disable" +msgstr "Desactivar para la red" + +#: wp-signup.php:87 +msgid "Your address will be %s." +msgstr "Tu dirección será %s." + +#: wp-signup.php:86 +msgid "domain" +msgstr "dominio" + +#: wp-admin/network/settings.php:105 +msgid "Allow site administrators to add new users to their site via the \"Users → Add New\" page." +msgstr "Permite a los administradores de sitio añadir nuevos usuarios a su sitio a través de la página \"Usuarios → Añadir nuevo\"." + +#: wp-admin/network/sites.php:99 wp-admin/network/menu.php:18 +msgctxt "site" +msgid "Add New" +msgstr "Añadir nuevo" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:201 +msgctxt "themes" +msgid "All (%s)" +msgid_plural "All (%s)" +msgstr[0] "(%s)" +msgstr[1] "Todos (%s)" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:204 +msgid "Enabled (%s)" +msgid_plural "Enabled (%s)" +msgstr[0] "(%s) activo" +msgstr[1] "(%s) activos" + +#: wp-admin/includes/class-wp-ms-users-list-table.php:97 +msgid "Super Admin (%s)" +msgid_plural "Super Admins (%s)" +msgstr[0] "(%s) Super administrador" +msgstr[1] "(%s) Super administradores" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:238 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:285 +msgid "Disable" +msgstr "Desactivar" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:337 +msgid "Visit Theme Site" +msgstr "Visitar el sitio del tema" + +#: wp-admin/network/site-themes.php:22 +msgid "You do not have sufficient permissions to manage themes for this site." +msgstr "No tienes suficentes permisos para administrar temas en este sitio." + +#: wp-admin/network/themes.php:22 +msgid "You do not have sufficient permissions to manage network themes." +msgstr "No tienes suficientes permisos para administrar temas de la red." + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:170 +msgid "No themes found." +msgstr "No se han encontrado temas." + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:172 +msgid "You do not appear to have any themes available at this time." +msgstr "Parece ser que no hay temas disponibles en este momento." + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:288 +msgid "Open this theme in the Theme Editor" +msgstr "Abre este tema en el editor de temas" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:285 +msgid "Disable this theme" +msgstr "Desactiva este tema" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:283 +msgid "Enable this theme" +msgstr "Activa este tema" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:337 +msgid "Visit theme homepage" +msgstr "Visita el sitio del tema" + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:207 +msgid "Disabled (%s)" +msgid_plural "Disabled (%s)" +msgstr[0] "(%s) desactivado" +msgstr[1] "(%s) desactivados" + +#: wp-admin/network/themes.php:212 wp-admin/network/site-themes.php:161 +msgid "No theme selected." +msgstr "Ningún tema seleccionado." + +#: wp-admin/network/themes.php:207 wp-admin/network/site-themes.php:159 +msgid "Theme disabled." +msgid_plural "%s themes disabled." +msgstr[0] "Tema desactivado." +msgstr[1] "%s temas desactivados." + +#: wp-admin/network/themes.php:204 wp-admin/network/site-themes.php:156 +msgid "Theme enabled." +msgid_plural "%s themes enabled." +msgstr[0] "Tema activado" +msgstr[1] "%s temas activados." + +#: wp-admin/network/site-users.php:214 +msgid "Enter the username and email." +msgstr "Introduce el nombre de usuario y email." + +#: wp-admin/network/site-users.php:211 +msgid "User created." +msgstr "Usuario creado." + +#: wp-admin/network/site-users.php:202 +msgid "Select a user to change role." +msgstr "Elige un usuario para cambiar su perfil." + +#: wp-admin/network/site-users.php:208 +msgid "Select a user to remove." +msgstr "Elige un usuario para borrarlo." + +#: wp-admin/network/site-users.php:193 +msgid "User is already a member of this site." +msgstr "El usuario ya es miembro de este sitio." + +#: wp-admin/network/site-users.php:196 +msgid "Enter the username of an existing user." +msgstr "Introduce el nombre de usuario de un usuario existente." + +#: wp-admin/network/sites.php:61 +msgid "You do not have permission to delete that site." +msgstr "No tienes permisos para borrar ese sitio." + +#: wp-admin/network/edit.php:204 +msgid "You are not allowed to delete the site." +msgstr "No tienes permisos para borrar este sitio." + +#: wp-admin/network/edit.php:42 +msgid "Warning! User %s cannot be deleted." +msgstr "¡Aviso! El usuario %s no puede borrarse." + +#: wp-admin/network/settings.php:240 +msgid "Language Settings" +msgstr "Ajustes de idioma" + +#: wp-admin/network/site-themes.php:164 +msgid "Network enabled themes are not shown on this screen." +msgstr "Los temas activos de la red no se muestran en esta pantalla." + +#: wp-admin/network/user-new.php:17 +msgid "You do not have sufficient permissions to add users to this network." +msgstr "No tienes suficientes permisos para añadir usuarios a esta red." + +#: wp-admin/network/themes.php:176 wp-admin/network/site-themes.php:125 +msgctxt "themes per page (screen options)" +msgid "Themes" +msgstr "Temas" + +#: wp-admin/network.php:145 +msgid "The constant DO_NOT_UPGRADE_GLOBAL_TABLES cannot be defined when creating a network." +msgstr "La constante DO_NOT_UPGRADE_GLOBAL_TABLES no puede definirse al crear una red." + +#: wp-admin/network/user-new.php:98 wp-admin/network/site-users.php:270 +msgid "Add User" +msgstr "Añadir usuario" + +#: wp-admin/network/sites.php:32 +msgid "Dashboard leads to the Dashboard for that site." +msgstr "Escritorio te lleva al escritorio de ese sitio." + +#: wp-admin/network/sites.php:34 +msgid "Delete which is a permanent action after the confirmation screens." +msgstr "Borrar es una acción permanente tras las pantallas de confirmación." + +#: wp-admin/network/site-users.php:175 wp-admin/network/site-settings.php:88 +#: wp-admin/network/site-info.php:98 wp-admin/network/site-themes.php:142 +msgid "Info" +msgstr "Información" + +#: wp-admin/network/site-info.php:78 +msgid "Site info updated." +msgstr "Información del sitio actualizada." + +#: wp-admin/network/site-users.php:38 wp-admin/network/site-settings.php:33 +#: wp-admin/network/site-info.php:33 wp-admin/network/site-themes.php:49 +msgid "Invalid site ID." +msgstr "ID de sitio no válido." + +#: wp-admin/network/site-users.php:17 wp-admin/network/site-settings.php:17 +#: wp-admin/network/site-info.php:17 +msgid "You do not have sufficient permissions to edit this site." +msgstr "No tienes suficientes permisos para editar este sitio." + +#: wp-admin/network/site-settings.php:68 +msgid "Site options updated." +msgstr "Opciones del sitio actualizadas." + +#: wp-admin/network/site-users.php:162 wp-admin/network/site-settings.php:73 +#: wp-admin/network/site-info.php:83 wp-admin/network/site-themes.php:129 +msgid "Edit Site: %s" +msgstr "Editar sitio: %s" + +#: wp-admin/network/themes.php:196 wp-admin/network/menu.php:34 +msgctxt "theme" +msgid "Add New" +msgstr "Añadir nuevo" + +#: wp-admin/network/sites.php:28 +msgid "Add New takes you to the Add New Site screen. You can search for a site by Name, ID number, or IP address. Screen Options allows you to choose how many sites to display on one page." +msgstr "Añadir nuevo te lleva a la pantalla de Añadir nuevo sitiio. Puedes buscar un sitio por nombre, número de ID o dirección IP. Las Opciones de pantalla te permiten elegir cuantos sitios mostrar por página." + +#: wp-admin/network/site-new.php:98 wp-admin/network/site-new.php:107 +msgid "Add New Site" +msgstr "Añadir nuevo sitio" + +#: wp-admin/network/site-new.php:17 +msgid "You do not have sufficient permissions to add sites to this network." +msgstr "No tienes suficientes permisos para añadir sitios a esta red." + +#: wp-admin/network/menu.php:46 +msgctxt "plugin editor" +msgid "Add New" +msgstr "Añadir nuevo" + +#: wp-admin/network/sites.php:25 +msgctxt "sites per page (screen options)" +msgid "Sites" +msgstr "Sitios" + +#: wp-admin/network/sites.php:31 +msgid "An Edit link to a separate Edit Site screen." +msgstr "Un enlace de Editar que lleva a otra pantalla de Editar sitio." + +#: wp-admin/network.php:354 +msgid "Create a blogs.dir directory at %s/blogs.dir. This directory is used to store uploaded media for your additional sites and must be writeable by the web server." +msgstr "Crea un directorio blogs.dir en %s/blogs.dir. Este directorio se utiliza para almacenar los archivos de medios subidos en tus sitios adicionales y el servidor web debe tener permisos de escritura." + +#: wp-includes/ms-functions.php:527 +msgid "Only lowercase letters (a-z) and numbers are allowed." +msgstr "Sólo se permiten minúsculas (a-z) y números." + +#: wp-activate.php:66 +msgid "Your account has been activated. You may now log in to the site using your chosen username of “%2$s”. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can reset your password." +msgstr "Se ha activado tu cuenta. Ahora puedes acceder al sitio usando el nombre de usuario que elegiste de “%2$s”. Por favor, revisa tu bandeja de entrada del correo electrónico %3$s para obtener tu contraseña e instrucciones de acceso. Si no recibes un correo electrónico revisa la carpeta de spam. Si aún así no recibes un correo electrónico en una hora puedes reiniciar tu contraseña aquí." + +#: wp-includes/ms-load.php:238 +msgid "Read the bug report page. Some of the guidelines there may help you figure out what went wrong." +msgstr "Lee la página de errores. Algunas de las guías que hay ahí pueden ayudarte a hacerte una idea sobre qué ha ido mal." + +#: wp-includes/ms-functions.php:839 wp-includes/ms-functions.php:890 +msgid "[%1$s] Activate %2$s" +msgstr "[%1$s] Activar %2$s" + +#: wp-includes/ms-load.php:213 +msgid "No site defined on this host. If you are the owner of this site, please check Debugging a WordPress Network for help." +msgstr "No se ha definido un sitio para este servidor. Si eres el propietario de este sitio, por favor, consulta Arreglando una red de WordPress para tener ayuda." + +#: wp-admin/includes/ms.php:35 +msgid "This file is too big. Files must be less than %1$s KB in size." +msgstr "Este archivo es demasiado grande. Los archivos deben ser de un tamaño menor a %1$s KB." + +#: wp-admin/network/edit.php:52 +msgid "What should be done with posts and links owned by %s?" +msgstr "¿Qué debe hacerse con las entradas y enlaces de %s?" + +#: wp-admin/network/edit.php:45 +msgid "Warning! User cannot be deleted. The user %s is a network admnistrator." +msgstr "¡Atención! Este usuario no puede borrarse. El usuario %s es el administrador de la red." + +#: wp-admin/network/edit.php:29 +msgid "Transfer or delete posts and links before deleting users." +msgstr "Transfiere o borra las entradas y enlaces antes de borrar usuarios." + +#: wp-admin/includes/ms.php:40 +msgid "Back" +msgstr "Atrás" + +#: wp-admin/includes/ms.php:37 +msgid "You have used your space quota. Please delete files before uploading." +msgstr "Has usado tu cuota de espacio asignada. Por favor, borra archivos antes de subir alguno más." + +#: wp-admin/network/edit.php:405 +msgid "Warning! User cannot be modified. The user %s is a network administrator." +msgstr "¡Atención! El usuario no puede modificarse. El usuario %s es el administrador de la red." + +#: wp-admin/includes/ms.php:33 +msgid "Not enough space to upload. %1$s KB needed." +msgstr "No hay espacio suficiente para subir. Se necesitan %1$s KB." + +#: wp-admin/network/edit.php:70 +msgid "Site: %s" +msgstr "Sitio: %s" + +#: wp-admin/includes/ms.php:221 +msgid "" +"Dear user,\n" +"\n" +"You recently requested to have the administration email address on\n" +"your site changed.\n" +"If this is correct, please click on the following link to change it:\n" +"###ADMIN_URL###\n" +"\n" +"You can safely ignore and delete this email if you do not want to\n" +"take this action.\n" +"\n" +"This email has been sent to ###EMAIL###\n" +"\n" +"Regards,\n" +"All at ###SITENAME###\n" +"###SITEURL### " +msgstr "" +"Estimado usuario,\n" +"\n" +"Has solicitado recientemente el cambio de la \n" +"dirección de correo electrónico de administración de tu sitio.\n" +"Si es correcto, haz clic en el siguiente enlace para cambiarla:\n" +"###ADMIN_URL###\n" +"\n" +"Si no quieres hacerlo, puedes ignorar el correo y borrarlo tranquilamente.\n" +"\n" +"Este correo ha sido enviado a ###EMAIL###\n" +"\n" +"Saludos,\n" +"La gente de ###SITENAME###\n" +"###SITEURL### " + +#: wp-admin/includes/ms.php:242 +msgid "[%s] New Admin Email Address" +msgstr "[%s] Nueva dirección de correo electrónico del administrador." + +#: wp-admin/includes/ms.php:258 +msgid "ERROR: The e-mail address isn't correct." +msgstr "ERROR: La dirección de correo electrónico no es correcta." + +#: wp-admin/includes/ms.php:263 +msgid "ERROR: The e-mail address is already used." +msgstr "ERROR: Esa dirección de correo electrónico ya está siendo utilizada." + +#: wp-admin/includes/ms.php:275 +msgid "" +"Dear user,\n" +"\n" +"You recently requested to have the email address on your account changed.\n" +"If this is correct, please click on the following link to change it:\n" +"###ADMIN_URL###\n" +"\n" +"You can safely ignore and delete this email if you do not want to\n" +"take this action.\n" +"\n" +"This email has been sent to ###EMAIL###\n" +"\n" +"Regards,\n" +"All at ###SITENAME###\n" +"###SITEURL###" +msgstr "" +"Estimado usuario,\n" +"\n" +"Recientemente has solicitado el cambio de dirección de correo electrónico de tu cuenta..\n" +"Si es así haz clic en el siguiente enlace para cambiarla:\n" +"###ADMIN_URL###\n" +"\n" +"Si no quieres hacerlo puedes ignorar y borrar este correo electrónico con tranquilidad.\n" +"\n" +"Este correo electrónico se ha enviado a ###EMAIL###\n" +"\n" +"Atentamente,\n" +"El equipo de ###SITENAME###\n" +"###SITEURL###" + +#: wp-admin/includes/ms.php:295 +msgid "[%s] New Email Address" +msgstr "[%s] Nuevo correo electrónico" + +#: wp-admin/includes/ms.php:303 +msgid "Your email address has not been updated yet. Please check your inbox at %s for a confirmation email." +msgstr "Tu correo electrónico no ha sido actualizado todavía. Por favor, revisa tu bandeja de entrada de %s para ver el correo electrónico de confirmación." + +#: wp-admin/includes/ms.php:413 +msgid "GB" +msgstr "GB" + +#: wp-admin/includes/ms.php:416 +msgid "MB" +msgstr "MB" + +#: wp-admin/includes/ms.php:419 +msgid "Used: %1s%% of %2s" +msgstr "Utilizado: %1s%% de %2s" + +#: wp-admin/includes/ms.php:556 +msgid "British English" +msgstr "Inglés británico" + +#: wp-admin/includes/ms.php:566 +msgid "English" +msgstr "Inglés" + +#: wp-admin/includes/ms.php:586 +msgid "Warning! WordPress encrypts user cookies, but you must add the following lines to wp-config.php for it to be more secure." +msgstr "¡Atención! WordPress encripta las cookies de los usuarios, pero debes añadir las siguientes líneas a wp-config.php para que sea más seguro." + +#: wp-admin/includes/ms.php:587 +msgid "Before the line /* That's all, stop editing! Happy blogging. */ please add this code:" +msgstr "Antes de la línea /* ¡Eso es todo, deja de editar! ¡Feliz blogging!. */ por favor, añade el siguiente código:" + +#: wp-admin/includes/ms.php:600 +msgid "Thank you for Updating! Please visit the Update Network page to update all your sites." +msgstr "¡Gracias por actualizar!. Por favor, visita Actualizar red para actualizar todos tus sitios." + +#: wp-admin/includes/ms.php:633 +msgid "Primary Site" +msgstr "Sitio principal" + +#: wp-admin/includes/ms.php:552 +msgid "American English" +msgstr "Inglés americano" + +#: wp-admin/includes/ms.php:432 +msgid "MB (Leave blank for network default)" +msgstr "MB (Déjalo en blanco para dejar la cuota de la red por defecto)" + +#: wp-admin/includes/ms.php:431 +msgid "Site Upload Space Quota " +msgstr "Cuota de espacio de subida del sitio" + +#: wp-admin/includes/ms.php:680 +msgid "The %1$s file is deprecated. Please remove it and update your server rewrite rules to use %2$s instead." +msgstr "El archivo %1$s es obsoleto. Por favor, elimínalo y actualiza las reglas de re-escritura de tu servidor para usar %2$s en su lugar." + +#: wp-admin/network/settings.php:25 +msgid "Dashboard Site is an option to give a site to users who do not have a site on the system. Their default role is Subscriber, but that default can be changed. The Admin Notice Feed can provide a notice on all dashboards of the latest post via RSS or Atom, or provide no such notice if left blank." +msgstr "El escritorio del sitio es una opción para dar un sitio a usuarios que no tienen uno en el sistema. Su perfil por defecto es suscriptor, pero puede cambiarse. El feed de avisos del administrador puede, a través de RSS o Atom, ofrecer avisos de las últimas entradas en todos los escritorios o, si lo dejas en blanco, no mostrar aviso alguno." + +#: wp-admin/network/site-new.php:21 +msgid "If the admin email for the new site does not exist in the database, a new user will also be created." +msgstr "Si el correo electrónico del administrador para el nuevo sitio no existe en la base de datos también se creará un nuevo usuario." + +#: wp-admin/network/sites.php:33 +msgid "Deactivate, Archive, and Spam which lead to confirmation screens. These actions can be reversed later." +msgstr "Desactivar, Archivar y Spam te llevan a pantallas de confirmación. Estas acciones pueden revertirse más tarde." + +#: wp-admin/network/sites.php:36 +msgid "The site ID is used internally, and is not shown on the front end of the site or to users/viewers." +msgstr "El ID de sitio se usa internamente, y no se muestra en la parte visible del sitio o a los usuarios/visitantes." + +#: wp-admin/network/sites.php:30 +msgid "Hovering over each site reveals seven options (three for the primary site):" +msgstr "Al pasar el cursor sobre cada sitio se muestran siete opciones (tres para el sitio primario):" + +#: wp-admin/network.php:110 +msgid "Add a blogs.dir directory under /wp-content and add the designated lines of code to wp-config.php (just before /*...stop editing...*/) and .htaccess (replacing the existing WordPress rules)." +msgstr "Crea un directorio blogs.dir bajo /wp-content y añade las líneas de código definidas a wp-config.php (justo antes de /*...deja de editar...*/) y a .htaccess (reemplazando las reglas existentes de WordPress)." + +#: wp-admin/network.php:107 +msgid "This screen allows you to configure a network as having subdomains (site1.example.com) or subdirectories (example.com/site1). Subdomains require wildcard subdomains to be enabled in Apache and DNS records, if your host allows it." +msgstr "Esta pantalla te permite configurar una red que contenga subdominios (site1.example.com) or subdirectories (example.com/site1). Los subdominios requieren registros DNS y activar los comodines (wildcards) en Apache, si tu alojamiento lo permite." + +#: wp-admin/network/settings.php:24 +msgid "Operational settings has fields for the network’s name and admin email." +msgstr "Los ajustes operacionales tienen campos para el nombre de red y el correo electrónico del administrador." + +#: wp-admin/network/users.php:36 +msgid "You can also go to the user’s profile page by clicking on the individual username." +msgstr "También puedes ir a la página de perfil del usuario haciendo clic en el nombre de usuario concreto." + +#: wp-admin/network/users.php:38 +msgid "The bulk action will permanently delete selected users, or mark/unmark those selected as spam. Spam users will have posts removed and will be unable to sign up again with the same email addresses." +msgstr "La acción en lote borrará permanentemente los usuarios seleccionados, o marca/desmarca los seleccionados como spam. Se borrarán las entradas de los usuarios spam y no podrán acceder de nuevo con la misma dirección de correo electrónico. " + +#: wp-admin/network/settings.php:28 +msgid "Upload settings control the size of the uploaded files and the amount of available upload space for each site. You can change the default value for specific sites when you edit a particular site. Allowed file types are also listed (space separated only)." +msgstr "Los ajustes de subida controlan el tamaño para la subida de archivos y la cantidad de espacio de subida disponible para cada sitio. Puedes cambiar el valor por defecto para sitios específicos cuando edites un sitio en concreto. También se listan los tipos de archivo permitidos (separados solo por espacios)." + +#: wp-admin/my-sites.php:43 +msgid "Up until WordPress version 3.0, what is now called a Multi-site Network had to be installed separately as WordPress MU (multi-user)." +msgstr "Hasta la versión 3.0 de WordPress, lo que ahora se le llama red multisitio tenía que instalarse aparte como WordPress MU (multiusuario)." + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:180 +msgid "Theme" +msgstr "Tema" + +#: wp-admin/network/index.php:28 +msgid "Blogs are now called Sites; Site is now called Network." +msgstr "Los blogs se llaman ahora sitios; al sitio ahora se le llama red." + +#: wp-admin/network/index.php:27 +msgid "Site Admin is now Super Admin (we highly encourage you to get yourself a cape!)." +msgstr "El administrador del sitio es ahora Super administrador (te recomendamos encarecidamente que te protejas)" + +#: wp-includes/ms-load.php:232 +msgid "If you are the owner of this network please check that MySQL is running properly and all tables are error free." +msgstr "Si eres el propietario de esta red comprueba que MySQL se está ejecutando adecuadamente y que niguna de las tablas tiene errores." + +#: wp-includes/ms-load.php:231 +msgid "If your site does not display, please contact the owner of this network." +msgstr "Si tu sitio no se muestra contacta con el propietario de esta red." + +#: wp-admin/includes/class-wp-ms-users-list-table.php:76 +msgctxt "user" +msgid "Not Spam" +msgstr "No es spam" + +#: wp-admin/includes/class-wp-ms-users-list-table.php:75 +msgctxt "user" +msgid "Mark as Spam" +msgstr "Marcar como spam" + +#: wp-admin/network.php:153 +msgid "Once the network is created, you may reactivate your plugins." +msgstr "Una vez que se cree la red podrás reactivar tus plugins." + +#: wp-admin/network/sites.php:35 +msgid "Visit to go to the frontend site live." +msgstr "Visitar para ir a la portada del sitio público." + +#: wp-admin/network.php:347 +msgid "Caution: We recommend you back up your existing wp-config.php file." +msgstr "Atención: Recomendamos realizar una copia de seguridad de tu archivo wp-config.php." + +#: wp-admin/network/index.php:26 +msgid "Until WordPress 3.0, running multiple sites required using WordPress MU instead of regular WordPress. In version 3.0, these applications have merged. If you are a former MU user, you should be aware of the following changes:" +msgstr "Antes de WordPress 3.0, para hacer funcionar múltiples sitios se requería usar WordPress MU en vez de WordPress normal. En la versión 3.0, estas aplicaciones se han fusionado. Si eres usuario o conocedor de MU debes ser consciente de los siguientes cambios:" + +#: wp-admin/network/settings.php:29 +msgid "Checkboxes for media upload buttons set which are shown in the visual editor. If unchecked, a generic upload button is still visible; other media types can still be uploaded if on the allowed file types list." +msgstr "Las casillas seleccionables para los botones de subida de multimedia hacen que se muestren en el editor visual. Si está desmarcado, un botón genérico se mantendrá visible. Otros tipos de archivos multimedia pueden continuar subiéndose." + +#: wp-admin/network/settings.php:27 +msgid "New site settings are defaults applied when a new site is created in the network. These include welcome email for when a new site or user account is registered, and what᾿s put in the first post, page, comment, comment author, and comment URL." +msgstr "Los ajustes para nuevos sitios se aplican cuando se crea un nuevo sitio en la red. Esto incluye correo electrónico de bienvenida cuando se registra un nuevo sitio o cuenta de usuario y que poner en la primera entrada, página, comentario, autor del comentario y la URL del comentario." + +#: wp-admin/network/themes.php:179 +msgid "This screen enables and disables the inclusion of themes available to choose in the Appearance menu for each site. It does not activate or deactivate which theme a site is currently using." +msgstr "Esta pantalla activa o desactiva la inclusión en la disponibilidad de Temas para los sitios en el menú Apariencia de cada sitio. No activa o desactiva que temas se están usando en cada sitio." + +#: wp-admin/my-sites.php:42 +msgid "This screen shows an individual user all of their sites in this network, and also allows that user to set a primary site. He or she can use the links under each site to visit either the frontend or the dashboard for that site." +msgstr "Esta pantalla muestra los usuarios de forma individual con todos sus sitios en la red y también permite al usuario marcar un sitio como principal. Él o ella pueden usar los enlaces bajo cada sitio para visitar la portada o el escritorio de cada sitio." + +#: wp-admin/network/themes.php:180 +msgid "If the network admin disables a theme that is in use, it can still remain selected on that site. If another theme is chosen, the disabled theme will not appear in the site’s Appearance > Themes screen." +msgstr "Si el administrador de la red desactiva un tema que está en uso, podrá continuar seleccionado en el sitio que lo tenga en uso. Si en el sitio selecciona otro tema, el tema ya no le aparecerá en la pantalla Apariencia > Temas." + +#: wp-admin/network/settings.php:23 +msgid "This screen sets and changes options for the network as a whole. The first site is the main site in the network and network options are pulled from that original site’s options." +msgstr "Esta pantalla establece y cambia las opciones para toda la red. El primer sitio es el sitio principal de la red y las opciones de red serán pasadas desde las opciones del sitio original." + +#: wp-admin/network/settings.php:26 +msgid "Registration settings can disable/enable public signups. If you let others sign up for a site, install spam plugins. Spaces, not commas, should separate names banned as sites for this network." +msgstr "Los ajustes de registro pueden activar/desactivar el registro público. Si permites que la gente registre un sitio, instala un plugins de spam. Espacio, sin comas, debes separar los nombres para sitios no permitidos para esta red." + +#: wp-admin/network/settings.php:30 +msgid "Menu setting enables/disables the plugin menus from appearing for non super admins, so that only super admins, not site admins, have access to activate plugins." +msgstr "En ajustes de menú se activa o desactiva que aparezca o no el menú plugins para los usuarios que no son Super Admin. Es decir, solo los Super Admins, no los Admin, tienen acceso a los plugins." + +#: wp-admin/network/sites.php:29 +msgid "This is the main table of all sites on this network. Switch between list and excerpt views by using the icons above the right side of the table." +msgstr "Esta es la tabla principal de todos los sitios de la red. Cambia de vista listado o fragmento usando los iconos de la parte superior derecha de la tabla." + +#: wp-admin/network/user-new.php:22 +msgid "Users who are signed up to the network without a site are added as subscribers to the main or primary dashboard site, giving them profile pages to manage their accounts. These users will only see Dashboard and My Sites in the main navigation until a site is created for them." +msgstr "Los usuarios que se registran en la red sin crear un sitio son añadidos al escritorio del sitio principal, dándoles unas páginas de perfil para gestionar sus cuentas. Estos usuarios solo verán el escritorio y Mis sitios en la navegación principal hasta que creen su propio sitio." + +#: wp-admin/network/users.php:37 +msgid "You can sort the table by clicking on any of the bold headings and switch between list and excerpt views by using the icons in the upper right." +msgstr "Puedes ordenar la tabla haciendo clic en cualquiera de las cabeceras en negritas y cambiando entre listado y extracto haciendo clic en los iconos de arriba a la derecha." + +#: wp-admin/network/users.php:35 +msgid "Hover over any user on the list to make the edit links appear. The Edit link on the left will take you to his or her Edit User profile page; the Edit link on the right by any site name goes to an Edit Site screen for that site." +msgstr "Pasa el cursor por encima de cualquiera de los usuarios de este listado para que aparezcan los enlaces de edición. El enlace Editar de la izquierda te llevará a su página de perfil Editar Usuario. El enlace Editar de la derecha de cualquiera de los nombre de los sitios te lleva a la pantalla del sitio Editar Sitio." + +#: wp-admin/network/upgrade.php:24 +msgid "If this process fails for any reason, users logging in to their sites will force the same update." +msgstr "Si este proceso falla por cualquier circunstancia, cuando los usuarios accedan a su sitio forzaran esta misma actualización." + +#: wp-admin/network/upgrade.php:23 +msgid "If a version update to core has not happened, clicking this button won’t affect anything." +msgstr "Si no se ha actualizado el núcleo, hacer clic en este botón no afectará en nada." + +#: wp-admin/network/users.php:34 +msgid "This table shows all users across the network and the sites to which they are assigned." +msgstr "Esta tabla muestra todos los usuarios de la red y los sitios que tienen asignados." + +#: wp-admin/network/users.php:39 +msgid "You can make an existing user an additional super admin by going to the Edit User profile page and checking the box to grant that privilege." +msgstr "Puedes hacer a un usuario existente Super Admin. Ve a la página del perfil Editar usuario y marca la casilla para darle este privilegio." + +#: wp-admin/network.php:108 +msgid "Choose subdomains or subdirectories; this can only be switched afterwards by reconfiguring your install. Fill out the network details, and click install. If this does not work, you may have to add a wildcard DNS record (for subdomains) or change to another setting in Permalinks (for subdirectories)." +msgstr "Elige subdominios o subdirectorios. Esto solo puede cambiarse reconfigurando tu instalación. Rellena los detalles de la red y haz clic en instalar. Si no funciona, deberás añadir un registro DNS (para los subdominios) o cambiar a otro ajuste de enlaces permanentes (para los subdirectorios)." + +#: wp-admin/network.php:112 +msgid "The choice of subdirectory sites is disabled if this setup is more than a month old because of permalink problems with “/blog/” from the main site. This disabling will be addressed soon in a future version." +msgstr "La posibilidad de sitios en subdirectorios está desactivada si el sitio tiene más de un mes ya que hay un problema con los enlaces permanentes que incluyen “/blog/” en el sitio principal. Esta desactivación se resolverá pronto en futuras versiones." + +#: wp-admin/network/site-new.php:44 +msgid "The following words are reserved for use by WordPress functions and cannot be used as blog names: %s" +msgstr "Las siguientes palabras están reservadas para el uso en las funciones de WordPress y no pueden ser usadas como nombre del sitio: %s" + +#: wp-admin/network/upgrade.php:61 +msgid "Warning! Problem updating %1$s. Your server may not be able to connect to sites running on it. Error message: %2$s" +msgstr "¡Atención! Problema al actualizar %1$s. Tu servidor no puede conectar con el sitio que está funcionando en él. Mensaje de Error: %2$s" + +#: wp-signup.php:391 +msgctxt "Multisite active signup type" +msgid "user" +msgstr "usuario" + +#: wp-signup.php:390 +msgctxt "Multisite active signup type" +msgid "blog" +msgstr "blog" + +#: wp-signup.php:389 +msgctxt "Multisite active signup type" +msgid "none" +msgstr "ninguno" + +#: wp-signup.php:388 +msgctxt "Multisite active signup type" +msgid "all" +msgstr "todo" + +#: wp-admin/network.php:252 wp-admin/network.php:262 wp-admin/network.php:269 +msgid "The main site in a sub-directory install will need to use a modified permalink structure, potentially breaking existing links." +msgstr "El sitio principal en un subdirectorio de instalación tendrá que utilizar una estructura de enlaces permanentes modificada, lo que podría romper los vínculos existentes." + +#: wp-admin/network.php:268 +msgid "Because your install is not new, the sites in your WordPress network must use sub-domains." +msgstr "Cómo como tu instalación no es nueva, los sitios de tu red deberán utilizar subdominios." + +#: wp-admin/network.php:474 +msgid "Add the following to your web.config file in %s, replacing other WordPress rules:" +msgstr "Añade lo siguiente a tu archivo web.config en %s, remplazando las reglas existentes de WordPress:" + +#: wp-admin/network.php:184 wp-admin/network.php:356 +msgid "Networks may not be fully compatible with custom wp-content directories." +msgstr "Las redes puede que no sean totalmente compatibles con directorios wp-content personalizados" + +#: wp-admin/network.php:216 +msgid "Sub-domains" +msgstr "Subdominios" + +#: wp-admin/network.php:220 +msgid "Sub-directories" +msgstr "Subdirectorios" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:127 +msgctxt "site" +msgid "Mark as Spam" +msgstr "Marcar como spam" + +#: wp-signup.php:435 +msgid "Sorry, new registrations are not allowed at this time." +msgstr "Disculpa, los nuevos registros están deshabilitados." + +#: wp-signup.php:365 +msgid "Check your inbox at %s and click the link given." +msgstr "Comprueba la bandeja de entrada de %s y haz clic en el enlace que encontrarás." + +#: wp-signup.php:371 +msgid "Wait a little longer. Sometimes delivery of email can be delayed by processes outside of our control." +msgstr "Espera un poco más. Hay veces, que el correo electrónico puede tardar en salir, por razones que escapan a nuestro control." + +#: wp-signup.php:372 +msgid "Check the junk or spam folder of your email client. Sometime emails wind up there by mistake." +msgstr "Comprueba la carpeta de correo basura, correo no deseado o spam de tu cliente de correo electrónico o correo web. A veces los correos electrónicos acaban ahí por equivocación." + +#: wp-signup.php:394 +msgid "Greetings Site Administrator! You are currently allowing “%s” registrations. To change or disable registration go to your Options page." +msgstr "¡Felicidades administrador del sitio! Ahora ya permites registros de “%s”. Para cambiarlo o desactivar los registros ve a tu página de opciones." + +#: wp-signup.php:373 +msgid "Have you entered your email correctly? You have entered %s, if it’s incorrect, you will not receive your email." +msgstr "¿Has introducido tu correo electrónico correctamente? Has introducido %s, si es incorrecto no lo recibirás." + +#: wp-signup.php:102 +msgid "Allow my site to appear in search engines like Google, Technorati, and in public listings around this network." +msgstr "Permitir que mi sitio aparezca en motores de búsqueda como Google y Technorati y en los listados públicos de esta red." + +#: wp-signup.php:141 +msgid "We send your registration email to this address. (Double-check your email address before continuing.)" +msgstr "Enviaremos los datos de registro a esta dirección de correo electrónico. Comprueba bien esta dirección antes de continuar." + +#: wp-admin/network.php:511 +msgid "Once you complete these steps, your network is enabled and configured. You will have to log in again." +msgstr "Una vez que completes estos pasos tu red estará activa y configurada. Deberás acceder de nuevo." + +#: wp-admin/network.php:267 +msgid "Sub-domain Install" +msgstr "Instalación en subdominio" + +#: wp-admin/network.php:153 +msgid "Please deactivate your plugins before enabling the Network feature." +msgstr "Por favor, desactiva tus plugins antes de activar la función de red." + +#: wp-includes/ms-default-constants.php:113 +msgid "The constant VHOST is deprecated. Use the boolean constant SUBDOMAIN_INSTALL in wp-config.php to enable a subdomain configuration. Use is_subdomain_install() to check whether a subdomain configuration is enabled." +msgstr "La constante VHOST está obsoleta. Usa la constante booleana/lógica SUBDOMAIN_INSTALL en wp-config.php para habilitar la configuración de subdominios. Usa is_subdomain_install() para comprobar si la configuración de subdominios está activada." + +#: wp-includes/ms-default-constants.php:115 +msgid "Conflicting values for the constants VHOST and SUBDOMAIN_INSTALL. The value of SUBDOMAIN_INSTALL will be assumed to be your subdomain configuration setting." +msgstr "Hay valores en conflicto para las constantes VHOST y SUBDOMAIN_INSTALL. Se asumirá que el valor de la configuración de subdominio es SUBDOMAIN_INSTALL." + +#: wp-admin/includes/class-wp-ms-themes-list-table.php:236 +#: wp-admin/includes/class-wp-ms-themes-list-table.php:283 +msgid "Enable" +msgstr "Activar" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:232 +msgctxt "%1$s: site name. %2$s: site tagline." +msgid "%1$s – %2$s" +msgstr "%1$s – %2$s" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:148 +#: wp-admin/network/site-info.php:138 +msgctxt "site" +msgid "Registered" +msgstr "Registrado" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:128 +#: wp-admin/includes/class-wp-ms-sites-list-table.php:258 +msgctxt "site" +msgid "Not Spam" +msgstr "No es Spam" + +#: wp-admin/includes/class-wp-ms-users-list-table.php:117 +msgctxt "user" +msgid "Registered" +msgstr "Registrado" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:255 +msgctxt "verb; site" +msgid "Archive" +msgstr "Archivar" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:173 +#: wp-admin/includes/class-wp-ms-sites-list-table.php:260 +#: wp-admin/network/site-info.php:149 +msgctxt "site" +msgid "Spam" +msgstr "Spam" + +#: wp-includes/ms-load.php:236 +msgid "Could not find site %1$s. Searched for table %2$s in database %3$s. Is that right?" +msgstr "No podemos encontrar el sitio %1$s. Buscamos la tabla %2$sen la base de datos %3$s. ¿Es correcto?" + +#: wp-includes/ms-load.php:227 +msgid "Error establishing database connection" +msgstr "Error estableciendo conexión con la base de datos" + +#: wp-includes/ms-load.php:234 +msgid "Database tables are missing. This means that MySQL is not running, WordPress was not installed properly, or someone deleted %s. You really should look at your database now." +msgstr "Se han perdido las tablas de la base de datos. Esto quiere decir que MySQL no está funcionando, WordPress no ha sido instalado correctamente, o alguien ha eliminado %s. Realmente, debes revisar tu base de datos ahora mismo." + +#: wp-includes/ms-functions.php:1116 +msgid "" +"New Site: %1s\n" +"URL: %2s\n" +"Remote IP: %3s\n" +"\n" +"Disable these notifications: %4s" +msgstr "" +"Nuevo sitio: %1s\n" +"URL: %2s\n" +"IP Remota: %3s\n" +"\n" +"Desactivar estas notificaciones: %4s" + +#: wp-includes/ms-functions.php:691 +msgid "Sorry, that site already exists!" +msgstr "Disculpa, este sitio ya existe." + +#: wp-includes/ms-functions.php:829 +msgid "" +"To activate your blog, please click the following link:\n" +"\n" +"%s\n" +"\n" +"After you activate, you will receive *another email* with your login.\n" +"\n" +"After you activate, you can visit your site here:\n" +"\n" +"%s" +msgstr "" +"Para activar tu sitio haz clic en el siguiente enlace:\n" +"\n" +"%s\n" +"\n" +"Después de activarlo recibirás *otro correo electrónico* con tus datos de acceso.\n" +"\n" +"Después de activarlo, podrás visitar tu sitio aquí:\n" +"\n" +"%s" + +#: wp-includes/ms-functions.php:1123 +msgid "New Site Registration: %s" +msgstr "Nuevo sitio registrado: %s" + +#: wp-includes/ms-functions.php:663 +msgid "Sorry, site names may not contain the character “_”!" +msgstr "¡Lo sentimos, el nombre del sitio no puede contener el caracter “_”!" + +#: wp-includes/ms-functions.php:649 +msgid "Please enter a site name" +msgstr "Por favor, introduce un nombre de sitio" + +#: wp-includes/ms-functions.php:1343 +msgid "New %1$s Site: %2$s" +msgstr "Nuevo sitio en %1$s: %2$s" + +#: wp-includes/ms-functions.php:1057 +msgid "Site already exists." +msgstr "El sitio ya existe." + +#: wp-includes/ms-functions.php:932 +msgid "The site is already active." +msgstr "El sitio ya está activado." + +#: wp-includes/ms-functions.php:660 +msgid "Site name must be at least 4 characters" +msgstr "El nombre del sitio debe tener una extensión mínima de 4 caracteres." + +#: wp-includes/ms-functions.php:1063 +msgid "Could not create site." +msgstr "No se pudo crear el sitio." + +#: wp-includes/ms-functions.php:680 +msgid "Please enter a site title" +msgstr "Por favor, introduce un título para el sitio" + +#: wp-includes/ms-functions.php:673 +msgid "Sorry, site names must have letters too!" +msgstr "Disculpa, el nombre del sitio, también debe contener letras." + +#: wp-includes/ms-functions.php:667 +msgid "Sorry, you may not use that site name." +msgstr "Lo sentimos, no puedes utilizar este nombre para el sitio." + +#: wp-includes/ms-functions.php:695 +msgid "Sorry, that site is reserved!" +msgstr "Disculpa, este nombre de sitio está reservado" + +#: wp-includes/ms-functions.php:706 +msgid "That site is currently reserved but may be available in a couple days." +msgstr "Este nombre de sitio está reservado, pero puede estar libre en un par de días." + +#: wp-includes/ms-functions.php:324 +msgid "Error: problem creating site entry." +msgstr "Error: problema al crear entrada el el sitio." + +#: wp-includes/ms-functions.php:317 +msgid "Error: Site URL already taken." +msgstr "Error: URL del sitio ya escogida." + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:120 +msgid "No sites found." +msgstr "No se encontraron sitios." + +#: wp-includes/ms-load.php:101 +msgid "This site has been archived or suspended." +msgstr "Este sitio ha sido archivado o suspendido." + +#: wp-includes/ms-settings.php:124 +msgid "No site by that name on this system." +msgstr "No existe ningún sitio en el sistema con este nombre." + +#: wp-includes/ms-load.php:211 +msgid "That site does not exist. Please try %s." +msgstr "Este sitio no existe. Por favor, prueba %s." + +#: wp-includes/ms-functions.php:1829 +msgid "You have been added to this site. Please visit the homepage or login using your username and password." +msgstr "Has sido añadido a este sitio. Por favor, visita la página de Inicio o Identifícate usando tu nombre de usuario y contraseña." + +#: wp-includes/ms-functions.php:1827 +msgid "An error occurred adding you to this site. Back to the homepage." +msgstr "Hubo un error añadiéndote a este sitio. Volver a la página de inicio." + +#: wp-includes/ms-functions.php:1829 +msgid "Success" +msgstr "¡Lo lograste!" + +#: wp-includes/ms-functions.php:1751 +msgid "This file is too big. Files must be less than %d KB in size." +msgstr "Este archivo es demasiado grande. Los archivos deben tener un tamaño inferior a %d KB." + +#: wp-activate.php:68 +msgid "Your site at %2$s is active. You may now log in to your site using your chosen username of “%3$s”. Please check your email inbox at %4$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can reset your password." +msgstr "Tu sitio en %2$s está activo. Ahora puedes acceder a tu sitio usando el nombre de usuario elegido de “%3$s”. Por favor, revisa la bandeja de entrada de %4$s para ver tu contraseña e instrucciones de acceso. Si no recibes un correo electrónico revisa la bandeja de spam. Si ni aún así recibieras un correo electrónico en una hora puedes reiniciar tu contraseña." + +#: wp-signup.php:87 +msgid "Must be at least 4 characters, letters and numbers only. It cannot be changed, so choose carefully!" +msgstr "Debe tener al menos 4 caracteres, letras y números solamente. ¡No se puede cambiar, así que elige con cuidado!" + +#: wp-signup.php:407 +msgid "You must first log in, and then you can create a new site." +msgstr "Primero debes iniciar sesión, después podrás crear un sitio nuevo." + +#: wp-signup.php:437 +msgid "You are logged in already. No need to register again!" +msgstr "Ya te has identificado. ¡No necesitas registrarte de nuevo!" + +#: wp-signup.php:173 +msgid "Welcome back, %s. By filling out the form below, you can add another site to your account. There is no limit to the number of sites you can have, so create to your heart’s content, but write responsibly!" +msgstr "Bienvenido de nuevo %s. Rellenando el siguiente formulario, puedes añadir otro sitio a tu cuenta. No hay límite en el número de sitios que puedas tener, por tanto, crea los que necesites, pero escribe con responsabilidad." + +#: wp-signup.php:443 +msgid "

    The site you were looking for, %s does not exist, but you can create it now!

    " +msgstr "

    El sitio que estás buscando, %s no existe pero puedes crearlo ahora.

    " + +#: wp-includes/ms-functions.php:551 +msgid "Sorry, usernames may not contain the character “_”!" +msgstr "¡Lo sentimos, nombres de usuario no puede contener el caracter “_”!" + +#: wp-signup.php:445 +msgid "

    The site you were looking for, %s, does not exist.

    " +msgstr "

    El sitio que has estado buscando, %s, no existe.

    " + +#: wp-signup.php:369 +msgid "If you haven’t received your email yet, there are a number of things you can do:" +msgstr "Si todavía no has recibido el correo electrónico, hay una serie de acciones que puedes realizar:" + +#: wp-includes/ms-settings.php:15 +msgid "Configuration error in wp-config.php. $base is set to BASE when it should be like / or /blogs/." +msgstr "Error de configuración en wp-config.php. $base está definido como BASE cuando debería ser parecido a / o /sitios/." + +#: wp-includes/ms-load.php:239 +msgid "If you’re still stuck with this message, then check that your database contains the following tables:" +msgstr "Si todavía estás atascado con este mensaje, comprueba que tu base de datos contiene las siguientes tablas:" + +#: wp-signup.php:225 +msgid "http://%2$s is your new site. Log in as “%4$s” using your existing password." +msgstr "http://%2$s es tu nuevo sitio. Accede como “%4$s” usando tu contraseña actual." + +#: wp-admin/my-sites.php:34 +msgid "The primary site you chose does not exist." +msgstr "El sitio principal que has elegido no existe." + +#: wp-admin/network/settings.php:126 +msgid "If you want to limit site registrations to certain domains. One domain per line." +msgstr "Si quieres limitar el registro de sitios a determinados dominios. Un dominio por línea." + +#: wp-admin/network/settings.php:136 +msgid "If you want to ban domains from site registrations. One domain per line." +msgstr "Si quieres banear dominios del registro de sitios. Un dominio por línea." + +#: wp-admin/network/settings.php:214 +msgid "The media upload buttons to display on the “Write Post” page. Make sure you update the allowed upload file types below as well." +msgstr "Los botones de subida de archivos a mostrar en la página de “Nueva entrada”. Asegúrate de actualizar también los tipos de archivo permitidos." + +#: wp-admin/network.php:237 wp-admin/network.php:277 +msgid "The internet address of your network will be %s." +msgstr "La dirección en internet de tu red será %s." + +#: wp-admin/network.php:190 +msgid "Fill in the information below and you’ll be on your way to creating a network of WordPress sites. We will create configuration files in the next step." +msgstr "Completa la información siguiente y estarás en el camino de crear una red de sitios con WordPress. Crearemos los archivos de configuración en el siguiente paso." + +#: wp-admin/network/settings.php:86 +msgid "If registration is disabled, please set NOBLOGREDIRECT in wp-config.php to a URL you will redirect visitors to if they visit a non-existent site." +msgstr "Si el registro está deshabilitado, por favor, define NOBLOGREDIRECT en wp-config.php con la URL que quieres que se redirija a los visitantes que visitan un sitio inexistente." + +#: wp-admin/network/site-new.php:34 +msgid "Can’t create an empty site." +msgstr "No se puede crear un sitio vacío." + +#: wp-admin/network/upgrade.php:66 +msgid "If your browser doesn’t start loading the next page automatically, click this link:" +msgstr "Si tu navegador no carga la siguiente página de forma automática haz clic en este enlace:" + +#: wp-admin/network.php:212 +msgid "You will need a wildcard DNS record if you are going to use the virtual host (sub-domain) functionality." +msgstr "Necesitarás crear un registro DNS si vas a utilizar la funcionalidad de servidor vitual (sub-dominios)." + +#: wp-admin/network.php:232 +msgid "We recommend you change your siteurl to %1$s before enabling the network feature. It will still be possible to visit your site using the www prefix with an address like %2$s but any links will not have the www prefix." +msgstr "Te recomendamos que cambies la URL de tu sitio a %1$s antes de activar la función de red. Seguirá siendo posible visitar tu sitio con el prefijo www con una dirección como %2$s, pero ningún enlace tendrá el prefijo www." + +#: wp-admin/network.php:202 +msgid "Please make sure the Apache mod_rewrite module is installed as it will be used at the end of this installation." +msgstr "Por favor, asegúrate de que el módulo Apache mod_rewrite está instalado, ya que será utilizado al finalizar la instalación." + +#: wp-admin/network.php:358 +msgid "Add the following to your wp-config.php file in %s above the line reading /* That’s all, stop editing! Happy blogging. */:" +msgstr "Añade lo siguiente a tu archivo wp-config.php en %s sobre la línea que dice /* ¡Eso es todo, no hay que editar nada más! Feliz blogging. */:" + +#: wp-admin/network/sites.php:79 +msgid "Site marked as spam." +msgstr "Sitio marcado como spam." + +#: wp-admin/network/sites.php:52 +msgid "Sites marked as spam." +msgstr "Sitios marcados como spam." + +#: wp-admin/network/sites.php:49 +msgid "Sites removed from spam." +msgstr "Sitios eliminados de spam." + +#: wp-admin/network/users.php:59 +msgid "Users removed from spam." +msgstr "Usuarios eliminados de spam." + +#: wp-admin/network/sites.php:76 +msgid "Site removed from spam." +msgstr "Sitio eliminado de spam." + +#: wp-admin/network.php:138 +msgid "Your WordPress address must match your Site address before creating a Network. See General Settings." +msgstr "Tu dirección de WordPress debe coincidir con la dirección de tu sitio antes de crear una red. Mira en Ajustes generales." + +#: wp-admin/network.php:259 +msgid "Because your install is in a directory, the sites in your WordPress network must use sub-directories." +msgstr "Cómo lo has instalado en un subdirectorio, los sitios en tu red de WordPress, deben usar subdirectorios." + +#: wp-admin/network/sites.php:55 +msgid "Sites deleted." +msgstr "Sitios eliminados." + +#: wp-admin/network/sites.php:58 +msgid "Site deleted." +msgstr "Sitio eliminado." + +#: wp-admin/network/site-new.php:95 +msgid "Site added." +msgstr "Sitio añadido." + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:255 +msgid "You are about to archive the site %s." +msgstr "Estás apunto de archivar el sitio %s." + +#: wp-admin/network/users.php:56 +msgid "Users marked as spam." +msgstr "Usuario marcado como spam." + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:258 +msgid "You are about to unspam the site %s." +msgstr "Estás a punto de sacar el sitio %s de spam." + +#: wp-admin/network/site-info.php:134 +msgid "Update siteurl and home as well." +msgstr "Actualizar siteurl y portada" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:260 +msgid "You are about to mark the site %s as spam." +msgstr "Estás a punto de marcar el sitio %s como spam." + +#: wp-admin/network/sites.php:73 +msgid "Site deactivated." +msgstr "Sitio desactivado." + +#: wp-admin/network/sites.php:70 +msgid "Site activated." +msgstr "Sitio activado." + +#: wp-admin/network/sites.php:67 +msgid "Site unarchived." +msgstr "Sitio desarchivado." + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:263 +msgid "You are about to delete the site %s." +msgstr "Estás a punto de eliminar el sitio %s." + +#: wp-admin/network/users.php:62 +msgid "Users deleted." +msgstr "Usuarios eliminados." + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:253 +msgid "You are about to unarchive the site %s." +msgstr "Estás a punto de desarchiva el sitio %s." + +#: wp-admin/network/users.php:53 +msgid "User deleted." +msgstr "Usuario eliminado." + +#: wp-admin/network/sites.php:64 +msgid "Site archived." +msgstr "Sitio archivado." + +#: wp-admin/ms-delete-site.php:17 +msgid "You do not have sufficient permissions to delete this site." +msgstr "No tienes suficientes permisos para eliminar este sitio." + +#: wp-admin/ms-delete-site.php:44 +msgid "" +"Dear User,\n" +"You recently clicked the 'Delete Site' link on your site and filled in a\n" +"form on that page.\n" +"If you really want to delete your site, click the link below. You will not\n" +"be asked to confirm again so only click this link if you are absolutely certain:\n" +"###URL_DELETE###\n" +"\n" +"If you delete your site, please consider opening a new site here\n" +"some time in the future! (But remember your current site and username\n" +"are gone forever.)\n" +"\n" +"Thanks for using the site,\n" +"Webmaster\n" +"###SITE_NAME###" +msgstr "" +"Apreciado usuario,\n" +"Recientemente has hecho clic en el enlace \"Eliminar sitio\" de tu sitio, y has completado\n" +"un formulario en esa página.\n" +"Si realmente quieres eliminar tu sitio, sigue el enlace siguiente. No serás\n" +"preguntado de nuevo para confirmar esta acción, es decir, haz clic si estás totalmente seguro:\n" +"###URL_DELETE###\n" +"\n" +"Si eliminas tu sitio, por favor, considera crear uno nuevo aquí mismo\n" +"en el futuro. (Pero recuerda que tu nombre de usuario y tu sitio\n" +"desaparecerán para siempre.)\n" +"\n" +"Gracias por usar nuestro sitio,\n" +"Webmaster\n" +"###SITE_NAME###" + +#: wp-admin/ms-delete-site.php:75 +msgid "I'm sure I want to permanently disable my site, and I am aware I can never get it back or use %s again." +msgstr "Estoy seguro que quiero desactivar mi sitio de forma permanente y estoy avisado que NUNCA MÃS podré usar de nuevo %s." + +#: wp-admin/ms-delete-site.php:76 +msgid "Delete My Site Permanently" +msgstr "Eliminar mi sitio de forma permanente" + +#: wp-admin/network/edit.php:105 +msgid "You probably need to go back to the options page." +msgstr "Probablemente debes volver a opciones de página." + +#: wp-admin/network/site-new.php:55 +msgid "Invalid email address." +msgstr "Dirección de correo electrónico no válida." + +#: wp-admin/network/site-new.php:71 +msgid "There was an error creating the user." +msgstr "Hubo un error al crear el usuario." + +#: wp-admin/network/edit.php:222 wp-admin/network/edit.php:323 +msgid "You are not allowed to change the current site." +msgstr "No estás autorizado a cambiar el sitio actual." + +#: wp-admin/ms-delete-site.php:70 +msgid "Remember, once deleted your site cannot be restored." +msgstr "Recuerda, una vez que elimines tu sitio, no se podrá recuperar." + +#: wp-admin/ms-delete-site.php:69 +msgid "If you do not want to use your %s site any more, you can delete it using the form below. When you click Delete My Site Permanently you will be sent an email with a link in it. Click on this link to delete your site." +msgstr "Si no quieres usar más tu sitio %s, puedes eliminarlo mediante el formulario siguiente. Cuando hagas clic en Eliminar mi sitio de forma permanente enviarás un correo electrónico con un enlace en él. Siguiendo ese enlace, tu sitio será eliminado." + +#: wp-admin/ms-delete-site.php:65 +msgid "Thank you. Please check your email for a link to confirm your action. Your site will not be deleted until this link is clicked. " +msgstr "Gracias. Por favor, comprueba tu correo electrónico para seguir el enlace. Tu sitio no será eliminado hasta que hagas clic en ese enlace." + +#: wp-admin/ms-delete-site.php:62 +msgid "Delete My Site" +msgstr "Eliminar mi sitio" + +#: wp-admin/ms-delete-site.php:22 +msgid "Thank you for using %s, your site has been deleted. Happy trails to you until we meet again." +msgstr "Gracias por usar %s, tu sitio ha sido eliminado. Seremos muy felices si volvemos a saber de ti." + +#: wp-admin/network.php:217 +msgctxt "subdomain examples" +msgid "like site1.%1$s and site2.%1$s" +msgstr "cómo sitio1.%1$s y sitio2.%1$s" + +#: wp-admin/network.php:221 +msgctxt "subdirectory examples" +msgid "like %1$s/site1 and %1$s/site2" +msgstr "cómo %1$s/sitio1 and %1$s/sitio2" + +#: wp-includes/ms-settings.php:38 +msgid "Multisite only works without the port number in the URL." +msgstr "El multisitio sólo funciona sin el número del puerto en la URL." + +#: wp-admin/network/settings.php:231 +msgctxt "File size in kilobytes" +msgid "%s KB" +msgstr "%s KB" + +#: wp-admin/network/settings.php:67 +msgid "Registration and support emails will come from this address. An address such as support@%s is recommended." +msgstr "Los correo electrónicos de registro y de soporte vendrán de esta dirección. Se recomienda un correo electrónico del tipo soporte@%s." + +#: wp-admin/network/settings.php:209 +msgid "Media upload buttons" +msgstr "Botones de subida de archivos" + +#: wp-admin/network/settings.php:225 +msgid "Upload file types" +msgstr "Tipos de archivo permitidos" + +#: wp-admin/network/settings.php:220 +msgid "Limit total size of files uploaded to %s MB" +msgstr "Tamaño máximo de espacio para archivos subidos %s MB" + +#: wp-admin/network.php:184 wp-admin/network.php:204 wp-admin/network.php:252 +#: wp-admin/network.php:262 +msgid "Warning!" +msgstr "¡Aviso!" + +#: wp-admin/network.php:202 +msgid "Note:" +msgstr "Nota:" + +#: wp-admin/network.php:206 +msgid "If mod_rewrite is disabled, ask your administrator to enable that module, or look at the Apache documentation or elsewhere for help setting it up." +msgstr "Si mod_rewrite está deshabilitado, pide a su administrador que active ese módulo, o revise la documentación de Apache o en otros sitios para conseguir ayuda para su configuración." + +#: wp-admin/network.php:204 +msgid "It looks like the Apache mod_rewrite module is not installed." +msgstr "Parece que el módulo mod_rewrite de Apache no está instalado." + +#: wp-admin/network/settings.php:194 +msgid "The author of the first comment on a new site." +msgstr "El autor del primer comentario en un sitio nuevo." + +#: wp-admin/network/settings.php:168 +msgid "The first post on a new site." +msgstr "La primera entrada en un sitio nuevo." + +#: wp-admin/network/settings.php:177 +msgid "The first page on a new site." +msgstr "La primera página en un sitio nuevo." + +#: wp-admin/network/settings.php:186 +msgid "The first comment on a new site." +msgstr "El primer comentario en un sitio nuevo." + +#: wp-admin/network/settings.php:202 +msgid "The URL for the first comment on a new site." +msgstr "La URL para el primer comentario en un nuevo sitio." + +#: wp-admin/network/upgrade.php:52 +msgid "All done!" +msgstr "¡Todo hecho!" + +#: wp-admin/network.php:27 +msgid "The Network creation panel is not for WordPress MU networks." +msgstr "El panel de creación de la Red no es para redes de WordPress MU." + +#: wp-admin/network.php:186 +msgctxt "Default network name" +msgid "%s Sites" +msgstr "%s sitios" + +#: wp-admin/network.php:176 +msgid "ERROR: The network could not be created." +msgstr "ERROR: La red no ha podido crearse." + +#: wp-admin/network/settings.php:83 +msgid "Logged in users may register new sites." +msgstr "Solo los usuarios identificados, pueden crear sitios." + +#: wp-admin/network/settings.php:84 +msgid "Both sites and user accounts can be registered." +msgstr "Pueden ser creados sitios y usuarios." + +#: wp-admin/network/settings.php:82 +msgid "User accounts may be registered." +msgstr "Solo las cuentas de usuario pueden ser creadas." + +#: wp-admin/network/settings.php:81 +msgid "Registration is disabled." +msgstr "Los registros están deshabilitados." + +#: wp-admin/network/settings.php:258 +msgid "Enable administration menus" +msgstr "Activar menús de administración" + +#: wp-admin/network/settings.php:51 +msgid "Operational Settings" +msgstr "Ajustes operacionales" + +#: wp-admin/network/settings.php:255 +msgid "Menu Settings" +msgstr "Ajustes de menú" + +#: wp-admin/network/settings.php:206 +msgid "Upload Settings" +msgstr "Ajustes de subidas" + +#: wp-admin/network/settings.php:141 +msgid "New Site Settings" +msgstr "Ajustes para sitios nuevos" + +#: wp-admin/network/settings.php:71 +msgid "Registration Settings" +msgstr "Ajustes de registro" + +#: wp-admin/network.php:326 +msgid "The original configuration steps are shown here for reference." +msgstr "Los pasos de configuración originales se muestran aquí para tenerlos como referencia." + +#: wp-admin/network.php:164 +msgid "Return to Dashboard" +msgstr "Volver al escritorio" + +#: wp-admin/network.php:163 +msgid "You cannot use port numbers such as %s." +msgstr "No puedes usar números de puerto como %s." + +#: wp-admin/network.php:153 wp-admin/network.php:331 wp-admin/network.php:356 +msgid "Warning:" +msgstr "Advertencia:" + +#: wp-admin/network.php:331 +msgid "An existing WordPress network was detected." +msgstr "Se ha detectado una red de WordPress existente." + +#: wp-admin/network.php:332 +msgid "Please complete the configuration steps. To create a new network, you will need to empty or remove the network database tables." +msgstr "Por favor, completa los pasos de configuración. Para crear una nueva red necesitarás vaciar o eliminar las tablas de la red en la base de datos." + +#: wp-admin/network.php:96 +msgid "You must define the WP_ALLOW_MULTISITE constant as true in your wp-config.php file to allow creation of a Network." +msgstr "Debes definir la constante WP_ALLOW_MULTISITE como true en tu archivo wp-config.php para permitir la creación de una red." + +#: wp-admin/network/site-new.php:51 +msgid "Missing or invalid site address." +msgstr "La dirección del sitio no está o no es válida." + +#: wp-admin/network/site-new.php:53 +msgid "Missing email address." +msgstr "Falta la dirección de correo electrónico." + +#: wp-admin/network.php:249 +msgid "Because you are using localhost, the sites in your WordPress network must use sub-directories. Consider using localhost.localdomain if you wish to use sub-domains." +msgstr "Cómo estás usando localhost los sitios en tu red de WordPress deben estar en subdirectorios. Considera usar localhost.localdomain si deseas usar subdominios." + +#: wp-admin/network.php:247 wp-admin/network.php:257 +msgid "Sub-directory Install" +msgstr "Instalación en subdirectorio" + +#: wp-admin/network.php:389 +msgid "To make your installation more secure, you should also add:" +msgstr "Para hacer tu instalación más segura debes añadir lo siguiente:" + +#: wp-admin/network.php:389 +msgid "This unique authentication key is also missing from your wp-config.php file." +msgid_plural "These unique authentication keys are also missing from your wp-config.php file." +msgstr[0] "Esta clave de autentificación tampoco se encuentra en tu archivo wp-config.php" +msgstr[1] "Estas claves de autentificación tampoco se encuentran en tu archivo wp-config.php" + +#: wp-admin/network.php:503 +msgid "Add the following to your .htaccess file in %s, replacing other WordPress rules:" +msgstr "Añade lo siguiente a tu archivo .htaccess en %s, remplazando las reglas existentes de WordPress:" + +#: wp-admin/network.php:340 +msgid "Complete the following steps to enable the features for creating a network of sites." +msgstr "Completa los siguientes pasos para activar la función de creación de red de sitios." + +#: wp-admin/network/upgrade.php:18 wp-admin/network/upgrade.php:37 +#: wp-admin/network/upgrade.php:79 wp-admin/network/menu.php:78 +msgid "Update Network" +msgstr "Actualizar red" + +#: wp-admin/network/upgrade.php:78 +msgid "You can update all the sites on your network through this page. It works by calling the update script of each site automatically. Hit the link below to update." +msgstr "Puedes actualizar todos los sitios de tu red mediante esta página. Funciona haciendo una llamada al script de actualización de forma automatizada. Haz clic en el enlace siguiente para actualizarlos." + +#: wp-admin/network.php:102 +msgid "Create a Network of WordPress Sites" +msgstr "Crear una red de sitios de WordPress" + +#: wp-admin/network.php:162 +msgid "You cannot install a network of sites with your server address." +msgstr "No puedes instalar una red de sitios con tu dirección de servidor." + +#: wp-admin/network.php:189 +msgid "Welcome to the Network installation process!" +msgstr "¡Bienvenido al proceso de instalación de la red!" + +#: wp-admin/network.php:210 +msgid "Addresses of Sites in your Network" +msgstr "Direcciones de los sitios en tu red" + +#: wp-admin/network.php:285 +msgid "What would you like to call your network?" +msgstr "¿Cómo quieres llamar a tu red?" + +#: wp-admin/network.php:211 +msgid "Please choose whether you would like sites in your WordPress network to use sub-domains or sub-directories. You cannot change this later." +msgstr "Por favor, elige como quieres que estén los sitios en tu red de WordPress, subdominios o subdirectorios. No podrás cambiarlo más tarde." + +#: wp-admin/network.php:243 +msgid "Network Details" +msgstr "Detalles de la red" + +#: wp-admin/network.php:282 +msgid "Network Title" +msgstr "Título de la red" + +#: wp-admin/network.php:289 +msgid "Admin E-mail Address" +msgstr "Dirección de correo electrónico del Administrador" + +#: wp-admin/network.php:339 +msgid "Enabling the Network" +msgstr "Activando la red" + +#: wp-signup.php:223 +msgid "The site %s is yours." +msgstr "El sitio %s es tuyo." + +#: wp-signup.php:193 +msgid "Create Site" +msgstr "Crear sitio" + +#: wp-signup.php:188 +msgid "If you’re not going to use a great site domain, leave it for a new user. Now have at it!" +msgstr "Si no vas a usar un dominio de un sitio, por favor, libéralo para que otro lo pueda usar. Ahora ¡consigue uno!" + +#: wp-signup.php:179 +msgid "Sites you are already a member of:" +msgstr "Eres miembro de los siguientes sitios:" + +#: wp-includes/ms-load.php:94 +msgid "This site has not been activated yet. If you are having problems activating your site, please contact %1$s." +msgstr "Este sitio aún no ha sido activado. Si estas teniendo problemas en el proceso de activación, por favor contacta con %1$s." + +#: wp-signup.php:92 +msgid "Site Title:" +msgstr "Título del sitio:" + +#: wp-signup.php:71 +msgid "Site Domain:" +msgstr "Dominio del sitio:" + +#: wp-signup.php:69 +msgid "Site Name:" +msgstr "Nombre del sitio:" + +#: wp-signup.php:84 +msgid "sitename" +msgstr "nombresitio" + +#: wp-signup.php:167 +msgid "Get another %s site in seconds" +msgstr "Consigue otro sitio en %s en segundos" + +#: wp-signup.php:362 +msgid "Congratulations! Your new site, %s, is almost ready." +msgstr "¡Felicidades! Tu nuevo sitio , %s, ya está listo." + +#: wp-signup.php:421 +msgid "Site registration has been disabled." +msgstr "No se permiten nuevos registros de sitios." + +#: wp-signup.php:265 +msgid "Gimme a site!" +msgstr "¡Dame un sitio!" + +#: wp-signup.php:364 +msgid "But, before you can start using your site, you must activate it." +msgstr "Pero, antes de que puedas comenzar a usar tu sitio, debes activarlo." + +#: wp-signup.php:366 +msgid "If you do not activate your site within two days, you will have to sign up again." +msgstr "Si no activas tu sitio en dos días, deberás registrarte de nuevo." + +#: wp-admin/network/settings.php:63 +msgid "Network Admin Email" +msgstr "Correo electrónico del administrador de la red" + +#: wp-admin/network/settings.php:54 +msgid "Network Name" +msgstr "Nombre de la red" + +#: wp-admin/network/site-new.php:83 +msgid "[%s] New Site Created" +msgstr "[%s] Nuevo sitio creado" + +#: wp-admin/network/site-new.php:82 +msgid "" +"New site created by %1s\n" +"\n" +"Address: http://%2s\n" +"Name: %3s" +msgstr "" +"Nuevo sitio creado por %1s\n" +"\n" +"Dirección: http://%2s\n" +"Nombre: %3s" + +#: wp-admin/network/edit.php:328 +msgid "WordPress › Confirm your action" +msgstr "WordPress › Confirma tu acción" + +#: wp-admin/network/settings.php:150 +msgid "The welcome email sent to new site owners." +msgstr "El correo electrónico de bienvenida enviado a los dueños de sitios nuevos." + +#: wp-admin/network/settings.php:218 +msgid "Site upload space" +msgstr "Espacio de subidas para el sitio" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:248 +msgid "You are about to activate the site %s" +msgstr "Estás a punto de activar el sitio %s" + +#: wp-admin/network/settings.php:98 +msgid "Send the network admin an email notification every time someone registers a site or user account." +msgstr "Enviar al administrador un correo electrónico cada vez que alguien se registre o registre un sitio." + +#: wp-admin/network/settings.php:114 +msgid "Users are not allowed to register these sites. Separate names by spaces." +msgstr "Los usuarios no tienes permiso para crear estos sitios. Separa los nombres mediante espacios." + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:250 +msgid "You are about to deactivate the site %s" +msgstr "Estás a punto desactivar el sitio %s" + +#: wp-admin/network/upgrade.php:66 +msgid "Next Sites" +msgstr "Sitios siguientes" + +#: wp-includes/ms-functions.php:214 wp-includes/ms-functions.php:276 +msgid "That user does not exist." +msgstr "Este usuario no existe" + +#: wp-includes/ms-functions.php:534 +msgid "Please enter a username" +msgstr "Por favor, introduce un nombre de usuario." + +#: wp-includes/ms-functions.php:654 +msgid "Only lowercase letters and numbers allowed" +msgstr "Solo se permiten minúsculas y números" + +#: wp-includes/ms-functions.php:542 +msgid "That username is not allowed" +msgstr "Este nombre de usuario no está permitido" + +#: wp-includes/ms-functions.php:545 +msgid "You cannot use that email address to signup. We are having problems with them blocking some of our email. Please use another email provider." +msgstr "No puedes usar este correo electrónico para registrarte. Estamos teniendo problemas con él, bloquea nuestros correos electrónicos. Por favor, usa otro proveedor." + +#: wp-includes/ms-functions.php:548 +msgid "Username must be at least 4 characters" +msgstr "El nombre de usuario debe tener una extensión mínima de 4 caracteres." + +#: wp-includes/ms-functions.php:557 +msgid "Sorry, usernames must have letters too!" +msgstr "Disculpa, el nombre de usuario, también debe contener letras." + +#: wp-includes/ms-functions.php:560 +msgid "Please enter a correct email address" +msgstr "Por favor, introduce un correo electrónico válido" + +#: wp-includes/ms-functions.php:566 +msgid "Sorry, that email address is not allowed!" +msgstr "Disculpa, este correo electrónico no está permitido" + +#: wp-includes/ms-functions.php:571 +msgid "Sorry, that username already exists!" +msgstr "Disculpa, este usuario ya existe." + +#: wp-includes/ms-functions.php:575 +msgid "Sorry, that email address is already used!" +msgstr "Disculpa, este correo electrónico ya está en uso." + +#: wp-includes/ms-functions.php:587 +msgid "That username is currently reserved but may be available in a couple of days." +msgstr "Este nombre de usuario está reservado, pero podría estar libre en un par de días" + +#: wp-includes/ms-functions.php:590 +msgid "username and email used" +msgstr "nombre de usuario y correo electrónico en uso" + +#: wp-includes/ms-functions.php:600 +msgid "That email address has already been used. Please check your inbox for an activation email. It will become available in a couple of days if you do nothing." +msgstr "Este correo electrónico ya ha sido usado. Por favor, comprueba tu bandeja de entrada. Podría estar libre en un par de días si no haces nada." + +#: wp-includes/ms-functions.php:657 +msgid "That name is not allowed" +msgstr "Este nombre no está permitido" + +#: wp-includes/ms-functions.php:882 +msgid "" +"To activate your user, please click the following link:\n" +"\n" +"%s\n" +"\n" +"After you activate, you will receive *another email* with your login.\n" +"\n" +msgstr "" +"Para activar tu usuario, por favor, sigue el siguiente enlace:\n" +"\n" +"%s\n" +"\n" +"Después de la activación, recibirás *otro correo electrónico* con tu identificación.\n" +"\n" + +#: wp-includes/ms-functions.php:926 +msgid "Invalid activation key." +msgstr "Clave de activación inválida" + +#: wp-includes/ms-functions.php:948 +msgid "Could not create user" +msgstr "No podemos crear el usuario" + +#: wp-includes/ms-functions.php:956 +msgid "That username is already activated." +msgstr "Este usuario, ya está activado." + +#: wp-includes/ms-functions.php:1150 +msgid "" +"New User: %1s\n" +"Remote IP: %2s\n" +"\n" +"Disable these notifications: %3s" +msgstr "" +"Nuevo usuario: %1s\n" +"IP Remota: %2s\n" +"\n" +"Desactivar estas notificaciones: %3s" + +#: wp-includes/ms-functions.php:1156 +msgid "New User Registration: %s" +msgstr "Nuevo registro de usuario: %s" + +#: wp-includes/ms-functions.php:1229 +msgid "

    Already Installed

    You appear to have already installed WordPress. To reinstall please clear your old database tables first.

    " +msgstr "

    Ya instalado

    WordPress parece estar instalado. Si deseas reinstalar, por favor, borra las tablas de la base de datos.

    " + +#: wp-includes/ms-functions.php:1391 +msgid "New %1$s User: %2$s" +msgstr "Nuevo %1$s usuario: %2$s" + +#: wp-includes/ms-functions.php:1572 +msgid "Sorry, you have used your space allocation. Please delete some files to upload more files." +msgstr "Disculpa. Has usado todo tu espacio. Por favor, borra algunos archivos para poder subir nuevos." + +#: wp-includes/ms-functions.php:1782 +msgid "Please try again!" +msgstr "Por favor, vuelve a intentarlo." + +#: wp-includes/ms-functions.php:1989 +msgid "" +"Dear User,\n" +"\n" +"Your new account is set up.\n" +"\n" +"You can log in with the following information:\n" +"Username: USERNAME\n" +"Password: PASSWORD\n" +"LOGINLINK\n" +"\n" +"Thanks!\n" +"\n" +"--The Team @ SITE_NAME" +msgstr "" +"Apreciado usuario,\n" +"\n" +"Tu nueva cuenta está configurada.\n" +"\n" +"Puedes identificarte con la siguiente información:\n" +"Usuario: USERNAME\n" +"Clave: PASSWORD\n" +"LOGINLINK\n" +"\n" +"¡Gracias!\n" +"\n" +"--El equipo de SITE_NAME" + +#: wp-includes/ms-load.php:87 +msgid "This user has elected to delete their account and the content is no longer available." +msgstr "Este usuario ha decidido eliminar su cuenta y ya no están los contenidos." + +#: wp-includes/ms-settings.php:123 +msgid "Database tables are missing." +msgstr "No se encuentran tablas de la base de datos." + +#: wp-admin/network.php:138 wp-admin/network.php:145 wp-admin/network.php:162 +msgid "Error:" +msgstr "Error:" + +#: wp-signup.php:101 +msgid "Privacy:" +msgstr "Privacidad:" + +#: wp-signup.php:134 +msgid "(Must be at least 4 characters, letters and numbers only.)" +msgstr "(Deben tener como mínimo 4 caracteres, solo letras y números.)" + +#: wp-signup.php:137 +msgid "Email Address:" +msgstr "Dirección de correo electrónico:" + +#: wp-signup.php:170 +msgid "There was a problem, please correct the form below and try again." +msgstr "Hubo un problema, revisa el formulario y prueba de nuevo." + +#: wp-signup.php:252 +msgid "Get your own %s account in seconds" +msgstr "Consigue tu propia cuenta %s en segundos." + +#: wp-signup.php:268 +msgid "Just a username, please." +msgstr "Solo el nombre de usuario, gracias." + +#: wp-signup.php:272 +msgid "Next" +msgstr "Siguiente" + +#: wp-signup.php:299 +msgid "%s is your new username" +msgstr "%s es tu nuevo nombre de usuario" + +#: wp-signup.php:300 +msgid "But, before you can start using your new username, you must activate it." +msgstr "Pero, antes de poder comenzar a usar tu nuevo nombre de usuario, debes activarlo." + +#: wp-signup.php:301 +msgid "Check your inbox at %1$s and click the link given." +msgstr "Comprueba la bandeja de entrada de %1$s y haz clic en el enlace que encontrarás." + +#: wp-signup.php:302 +msgid "If you do not activate your username within two days, you will have to sign up again." +msgstr "Si no activas tu nombre de usuario en dos días, deberás registrarte de nuevo." + +#: wp-signup.php:328 +msgid "Signup" +msgstr "Registrarse" + +#: wp-signup.php:367 +msgid "Still waiting for your email?" +msgstr "¿Continúas esperando el correo electrónico?" + +#: wp-signup.php:400 +msgid "Registration has been disabled." +msgstr "Los registros están deshabilitados." + +#: wp-signup.php:415 +msgid "User registration has been disabled." +msgstr "No se permite el registro de nuevos usuarios." + +#: wp-admin/my-sites.php:13 wp-admin/ms-delete-site.php:13 +#: wp-admin/network/user-new.php:14 wp-admin/network/index.php:17 +#: wp-admin/network/themes.php:14 wp-admin/network/plugin-editor.php:14 +#: wp-admin/network/plugin-install.php:17 wp-admin/network/site-users.php:14 +#: wp-admin/network/theme-editor.php:14 wp-admin/network/setup.php:14 +#: wp-admin/network/site-settings.php:14 wp-admin/network/site-new.php:14 +#: wp-admin/network/edit.php:14 wp-admin/network/theme-install.php:17 +#: wp-admin/network/users.php:14 wp-admin/network/upgrade.php:14 +#: wp-admin/network/update-core.php:14 wp-admin/network/sites.php:14 +#: wp-admin/network/settings.php:14 wp-admin/network/user-edit.php:14 +#: wp-admin/network/site-info.php:14 wp-admin/network/plugins.php:14 +#: wp-admin/network/profile.php:14 wp-admin/network/update.php:17 +#: wp-admin/network/site-themes.php:14 wp-admin/network/admin.php:16 +msgid "Multisite support is not enabled." +msgstr "El soporte multisitio no está activado." + +#: wp-admin/network/user-new.php:31 wp-admin/network/index.php:20 +#: wp-admin/network/site-users.php:42 wp-admin/network/site-settings.php:37 +#: wp-admin/network/site-new.php:31 wp-admin/network/edit.php:102 +#: wp-admin/network/edit.php:175 wp-admin/network/edit.php:192 +#: wp-admin/network/edit.php:236 wp-admin/network/edit.php:246 +#: wp-admin/network/edit.php:256 wp-admin/network/edit.php:267 +#: wp-admin/network/edit.php:278 wp-admin/network/edit.php:288 +#: wp-admin/network/edit.php:298 wp-admin/network/edit.php:308 +#: wp-admin/network/edit.php:355 wp-admin/network/edit.php:376 +#: wp-admin/network/edit.php:391 wp-admin/network/edit.php:442 +#: wp-admin/network/users.php:17 wp-admin/network/upgrade.php:33 +#: wp-admin/network/sites.php:17 wp-admin/network/settings.php:17 +#: wp-admin/network/site-info.php:37 wp-admin/network/site-themes.php:55 +msgid "You do not have permission to access this page." +msgstr "No tienes autorización para acceder a esta página" + +#: wp-admin/ms-delete-site.php:24 +msgid "I'm sorry, the link you clicked is stale. Please select another option." +msgstr "Lo sentimos, el enlace pulsado está caducado. Por favor, elige otra opción." + +#: wp-admin/network/edit.php:344 +msgid "Confirm" +msgstr "Confirmar" + +#: wp-admin/network/user-new.php:34 +msgid "Cannot create an empty user." +msgstr "No se puede crear un usuario vacio" + +#: wp-admin/network/site-users.php:217 +msgid "Duplicated username or email address." +msgstr "Nombre de usuario o correo electrónico duplicado." + +#: wp-admin/network/settings.php:58 +msgid "What you would like to call this website." +msgstr "Como quieres llamar a este sitio." + +#: wp-admin/network/settings.php:74 +msgid "Allow new registrations" +msgstr "Permitir nuevos registros" + +#: wp-admin/network/settings.php:92 +msgid "Registration notification" +msgstr "Notificación de registro" + +#: wp-admin/network/settings.php:103 +msgid "Add New Users" +msgstr "Añadir nuevo usuario" + +#: wp-admin/network/settings.php:110 +msgid "Banned Names" +msgstr "Nombre no permitidos" + +#: wp-admin/network/settings.php:119 +msgid "Limited Email Registrations" +msgstr "Limitar el registro de correo electrónico a" + +#: wp-admin/network/settings.php:131 +msgid "Banned Email Domains" +msgstr "Dominios de correo electrónico no permitidos" + +#: wp-admin/network/settings.php:145 +msgid "Welcome Email" +msgstr "Correo electrónico de bienvenida" + +#: wp-admin/network/settings.php:154 +msgid "Welcome User Email" +msgstr "Correo electrónico de bienvenida al usuario" + +#: wp-admin/network/settings.php:159 +msgid "The welcome email sent to new users." +msgstr "El correo electrónico de bienvenida enviado a los nuevos usuarios." + +#: wp-admin/network/settings.php:172 +msgid "First Page" +msgstr "Primera página" + +#: wp-admin/network/settings.php:181 +msgid "First Comment" +msgstr "Primer comentario" + +#: wp-admin/network/settings.php:190 +msgid "First Comment Author" +msgstr "Autor del primer comentario" + +#: wp-admin/network/settings.php:198 +msgid "First Comment URL" +msgstr "URL del primer comentario" + +#: wp-admin/network/settings.php:212 +msgid "Videos" +msgstr "Vídeos" + +#: wp-admin/network/settings.php:213 +msgid "Music" +msgstr "Música" + +#: wp-admin/network/settings.php:230 +msgid "Max upload file size" +msgstr "Tamaño máximo de archivo" + +#: wp-admin/network/settings.php:243 +msgid "Default Language" +msgstr "Idioma prederterminado." + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:143 +#: wp-admin/network/site-new.php:120 wp-admin/network/site-new.php:122 +#: wp-admin/network/site-info.php:119 +msgid "Domain" +msgstr "Dominio" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:147 +#: wp-admin/network/site-info.php:142 +msgid "Last Updated" +msgstr "Última actualización" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:172 +#: wp-admin/network/site-info.php:148 +msgid "Archived" +msgstr "Archivado" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:175 +#: wp-admin/network/site-info.php:152 +msgid "Mature" +msgstr "Adulto" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:174 +#: wp-admin/network/site-info.php:150 +msgid "Deleted" +msgstr "Borrado" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:253 +msgid "Unarchive" +msgstr "Desarchivar" + +#: wp-admin/my-sites.php:95 +#: wp-admin/includes/class-wp-ms-sites-list-table.php:266 +msgid "Visit" +msgstr "Visitar" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:281 +msgid "Never" +msgstr "Nunca" + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:302 +msgid "Only showing first 5 users." +msgstr "Mostrando solo los 5 primeros usuarios." + +#: wp-admin/includes/class-wp-ms-sites-list-table.php:302 +msgid "More" +msgstr "Más" + +#: wp-admin/network/site-new.php:140 +msgid "Add Site" +msgstr "Añadir sitio" + +#: wp-admin/network/site-new.php:117 +msgid "Site Address" +msgstr "Dirección del sitio" + +#: wp-admin/network/site-new.php:124 +msgid "Only the characters a-z and 0-9 recommended." +msgstr "Solo se recomiendan los caracters a-z y 0-9." + +#: wp-admin/network/site-new.php:133 +msgid "Admin Email" +msgstr "Correo electrónico del administrador" + +#: wp-admin/network/site-new.php:137 +msgid "A new user will be created if the above email address is not in the database." +msgstr "Se creará un usuario nuevo si el correo electrónico no está en la base de datos" + +#: wp-admin/network/site-new.php:137 +msgid "The username and password will be mailed to this email address." +msgstr "El nombre de usuario y la contraseña se enviarán a este correo electrónico." + +#: wp-admin/includes/class-wp-ms-users-list-table.php:82 +msgid "No users found." +msgstr "No se encontraron usuarios." + +#: wp-admin/network/user-new.php:94 wp-admin/network/site-users.php:302 +msgid "Username and password will be mailed to the above email address." +msgstr "Se enviarán el nombre de usuario y la contraseña a esta dirección de correo electrónico." + +#: wp-admin/my-sites.php:16 +msgid "You do not have sufficient permissions to view this page." +msgstr "No tienes permisos suficientes para ver esta página" + +#: wp-admin/my-sites.php:23 +msgid "You must be a member of at least one site to use this page." +msgstr "Debes ser miembro de, al menos, un sitio para usar esta página." + +#: wp-admin/my-sites.php:68 +msgid "Global Settings" +msgstr "Ajustes globales" + +#: wp-admin/network.php:231 wp-admin/network.php:235 wp-admin/network.php:275 +msgid "Server Address" +msgstr "Dirección del servidor" + +#: wp-admin/network.php:292 +msgid "Your email address." +msgstr "Tu dirección de correo electrónico." + +#: wp-admin/includes/ms-deprecated.php:30 +msgid "Sorry, you must delete files before you can upload any more." +msgstr "Disculpa, debes borrar archivos antes de subir nuevos." + +#: wp-activate.php:43 +msgid "Activation Key Required" +msgstr "Requiere clave de activación" + +#: wp-activate.php:46 +msgid "Activation Key:" +msgstr "Clave de activación:" + +#: wp-activate.php:62 wp-activate.php:82 +msgid "Your account is now active!" +msgstr "¡Tu cuenta ahora está activada!" + +#: wp-activate.php:73 +msgid "An error occurred during the activation" +msgstr "Ha habido un error en la activación" + +#: wp-activate.php:85 wp-signup.php:129 +msgid "Username:" +msgstr "Nombre de usuario:" \ No newline at end of file diff --git a/src/wp-content/plugins/akismet/admin.php b/src/wp-content/plugins/akismet/admin.php new file mode 100644 index 0000000..91cedb2 --- /dev/null +++ b/src/wp-content/plugins/akismet/admin.php @@ -0,0 +1,750 @@ +

    ".sprintf(__('Akismet %s requires WordPress 3.0 or higher.'), AKISMET_VERSION) ." ".sprintf(__('Please upgrade WordPress to a current version, or downgrade to version 2.4 of the Akismet plugin.'), 'http://codex.wordpress.org/Upgrading_WordPress', 'http://wordpress.org/extend/plugins/akismet/download/'). "

    + "; + } + add_action('admin_notices', 'akismet_version_warning'); + + return; + } + + if ( function_exists( 'get_plugin_page_hook' ) ) + $hook = get_plugin_page_hook( 'akismet-stats-display', 'index.php' ); + else + $hook = 'dashboard_page_akismet-stats-display'; + add_action('admin_head-'.$hook, 'akismet_stats_script'); + add_meta_box('akismet-status', __('Comment History'), 'akismet_comment_status_meta_box', 'comment', 'normal'); + wp_register_style('akismet.css', AKISMET_PLUGIN_URL . 'akismet.css'); + wp_enqueue_style('akismet.css'); + wp_register_script('akismet.js', AKISMET_PLUGIN_URL . 'akismet.js', array('jquery')); + wp_enqueue_script('akismet.js'); +} +add_action('admin_init', 'akismet_admin_init'); + +function akismet_nonce_field($action = -1) { return wp_nonce_field($action); } +$akismet_nonce = 'akismet-update-key'; + +function akismet_config_page() { + if ( function_exists('add_submenu_page') ) + add_submenu_page('plugins.php', __('Akismet Configuration'), __('Akismet Configuration'), 'manage_options', 'akismet-key-config', 'akismet_conf'); +} + +function akismet_plugin_action_links( $links, $file ) { + if ( $file == plugin_basename( dirname(__FILE__).'/akismet.php' ) ) { + $links[] = ''.__('Settings').''; + } + + return $links; +} + +add_filter( 'plugin_action_links', 'akismet_plugin_action_links', 10, 2 ); + +function akismet_conf() { + global $akismet_nonce, $wpcom_api_key; + + if ( isset($_POST['submit']) ) { + if ( function_exists('current_user_can') && !current_user_can('manage_options') ) + die(__('Cheatin’ uh?')); + + check_admin_referer( $akismet_nonce ); + $key = preg_replace( '/[^a-h0-9]/i', '', $_POST['key'] ); + $home_url = parse_url( get_bloginfo('url') ); + + if ( empty($key) ) { + $key_status = 'empty'; + $ms[] = 'new_key_empty'; + delete_option('wordpress_api_key'); + } elseif ( empty($home_url['host']) ) { + $key_status = 'empty'; + $ms[] = 'bad_home_url'; + } else { + $key_status = akismet_verify_key( $key ); + } + + if ( $key_status == 'valid' ) { + update_option('wordpress_api_key', $key); + $ms[] = 'new_key_valid'; + } else if ( $key_status == 'invalid' ) { + $ms[] = 'new_key_invalid'; + } else if ( $key_status == 'failed' ) { + $ms[] = 'new_key_failed'; + } + + if ( isset( $_POST['akismet_discard_month'] ) ) + update_option( 'akismet_discard_month', 'true' ); + else + update_option( 'akismet_discard_month', 'false' ); + + if ( isset( $_POST['akismet_show_user_comments_approved'] ) ) + update_option( 'akismet_show_user_comments_approved', 'true' ); + else + update_option( 'akismet_show_user_comments_approved', 'false' ); + + } elseif ( isset($_POST['check']) ) { + akismet_get_server_connectivity(0); + } + + if ( empty( $key_status) || $key_status != 'valid' ) { + $key = get_option('wordpress_api_key'); + if ( empty( $key ) ) { + if ( empty( $key_status ) || $key_status != 'failed' ) { + if ( akismet_verify_key( '1234567890ab' ) == 'failed' ) + $ms[] = 'no_connection'; + else + $ms[] = 'key_empty'; + } + $key_status = 'empty'; + } else { + $key_status = akismet_verify_key( $key ); + } + if ( $key_status == 'valid' ) { + $ms[] = 'key_valid'; + } else if ( $key_status == 'invalid' ) { + delete_option('wordpress_api_key'); + $ms[] = 'key_empty'; + } else if ( !empty($key) && $key_status == 'failed' ) { + $ms[] = 'key_failed'; + } + } + + $messages = array( + 'new_key_empty' => array('color' => 'aa0', 'text' => __('Your key has been cleared.')), + 'new_key_valid' => array('color' => '4AB915', 'text' => __('Your key has been verified. Happy blogging!')), + 'new_key_invalid' => array('color' => '888', 'text' => __('The key you entered is invalid. Please double-check it.')), + 'new_key_failed' => array('color' => '888', 'text' => __('The key you entered could not be verified because a connection to akismet.com could not be established. Please check your server configuration.')), + 'no_connection' => array('color' => '888', 'text' => __('There was a problem connecting to the Akismet server. Please check your server configuration.')), + 'key_empty' => array('color' => 'aa0', 'text' => sprintf(__('Please enter an API key. (Get your key.)'), 'http://akismet.com/get/')), + 'key_valid' => array('color' => '4AB915', 'text' => __('This key is valid.')), + 'key_failed' => array('color' => 'aa0', 'text' => __('The key below was previously validated but a connection to akismet.com can not be established at this time. Please check your server configuration.')), + 'bad_home_url' => array('color' => '888', 'text' => sprintf( __('Your WordPress home URL %s is invalid. Please fix the home option.'), esc_html( get_bloginfo('url') ), admin_url('options.php#home') ) ), + ); +?> + +

    + +
    +

    + +

    Sign up success! Please check your email for your Akismet API Key and enter it below.' ); ?>

    + +
    +
    + +

    Akismet will greatly reduce or even completely eliminate the comment and trackback spam you get on your site. If one does happen to get through, simply mark it as "spam" on the moderation screen and Akismet will learn from the mistakes. If you don\'t have an API key yet, you can get one at Akismet.com.'), 'http://akismet.com/', 'http://akismet.com/get/'); ?>

    + +

    + +

    + +

    (What is this?'); ?>)

    + +

    +

    + + + +

    +

    +

    +
    + +
    + +

    + +

    +

    fsockopen or gethostbynamel functions. Akismet cannot work correctly until this is fixed. Please contact your web host or firewall administrator and give them this information about Akismet\'s system requirements.'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?>

    + 0 ) { + // some connections work, some fail + if ( $fail_count > 0 && $fail_count < count($servers) ) { ?> +

    +

    this information about Akismet and firewalls.'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?>

    + 0 ) { ?> +

    +

    Akismet cannot work correctly until this is fixed. Please contact your web host or firewall administrator and give them this information about Akismet and firewalls.'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?>

    + +

    +

    + +

    +

    Akismet cannot work correctly until this is fixed. Please contact your web host or firewall administrator and give them this information about Akismet and firewalls.'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?>

    + + + + + $status ) { + $color = ( $status ? '#4AB915' : '#888'); + ?> + + + + + + +
    +

    +

    +

    Click here to confirm that Akismet.com is up.'), 'http://status.automattic.com/9931/136079/Akismet-API', 'http://status.automattic.com/9931/136079/Akismet-API' ); ?>

    +
    + +
    +
    + + +
    + +
    + ' . _x( 'Spam', 'comments' ) . ''; + global $submenu; + if ( isset( $submenu['edit-comments.php'] ) ) + $link = 'edit-comments.php'; + else + $link = 'edit.php'; + echo '

    '.sprintf( _n( 'Akismet has protected your site from %3$s spam comments.', 'Akismet has protected your site from %3$s spam comments.', $count ), 'http://akismet.com/', clean_url("$link?page=akismet-admin"), number_format_i18n($count) ).'

    '; +} +add_action('activity_box_end', 'akismet_stats'); + +function akismet_admin_warnings() { + global $wpcom_api_key; + if ( !get_option('wordpress_api_key') && !$wpcom_api_key && !isset($_POST['submit']) ) { + function akismet_warning() { + echo " +

    ".__('Akismet is almost ready.')." ".sprintf(__('You must enter your Akismet API key for it to work.'), "plugins.php?page=akismet-key-config")."

    + "; + } + add_action('admin_notices', 'akismet_warning'); + return; + } elseif ( ( empty($_SERVER['SCRIPT_FILENAME']) || basename($_SERVER['SCRIPT_FILENAME']) == 'edit-comments.php' ) && wp_next_scheduled('akismet_schedule_cron_recheck') ) { + function akismet_warning() { + global $wpdb; + $waiting = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->commentmeta WHERE meta_key = 'akismet_error'" ) ); + $next_check = human_time_diff( wp_next_scheduled('akismet_schedule_cron_recheck') ); + if ( $waiting > 0 ) + echo " +

    ".__('Akismet has detected a problem.')." ".sprintf(_n('A server or network problem prevented Akismet from checking %d comment. It has been temporarily held for moderation and will be automatically re-checked in %s.', 'A server or network problem prevented Akismet from checking %d comments. They have been temporarily held for moderation and will be automatically re-checked in %s.', $waiting), number_format_i18n( $waiting ), $next_check)."

    + "; + } + add_action('admin_notices', 'akismet_warning'); + return; + } +} + +// FIXME placeholder + +function akismet_comment_row_action( $a, $comment ) { + + // failsafe for old WP versions + if ( !function_exists('add_comment_meta') ) + return $a; + + $akismet_result = get_comment_meta( $comment->comment_ID, 'akismet_result', true ); + $user_result = get_comment_meta( $comment->comment_ID, 'akismet_user_result', true); + $comment_status = wp_get_comment_status( $comment->comment_ID ); + $desc = null; + if ( !$user_result || $user_result == $akismet_result ) { + // Show the original Akismet result if the user hasn't overridden it, or if their decision was the same + if ( $akismet_result == 'true' && $comment_status != 'spam' && $comment_status != 'trash' ) + $desc = __( 'Flagged as spam by Akismet' ); + elseif ( $akismet_result == 'false' && $comment_status == 'spam' ) + $desc = __( 'Cleared by Akismet' ); + } else { + $who = get_comment_meta( $comment->comment_ID, 'akismet_user', true ); + if ( $user_result == 'true' ) + $desc = sprintf( __('Flagged as spam by %s'), $who ); + else + $desc = sprintf( __('Un-spammed by %s'), $who ); + } + + // add a History item to the hover links, just after Edit + if ( $akismet_result ) { + $b = array(); + foreach ( $a as $k => $item ) { + $b[ $k ] = $item; + if ( $k == 'edit' ) + $b['history'] = ' '. __('History') . ''; + } + + $a = $b; + } + + if ( $desc ) + echo ''.htmlspecialchars($desc).''; + + if ( apply_filters( 'akismet_show_user_comments_approved', get_option('akismet_show_user_comments_approved') ) == 'true' ) { + $comment_count = akismet_get_user_comments_approved( $comment->user_id, $comment->comment_author_email, $comment->comment_author, $comment->comment_author_url ); + $comment_count = intval( $comment_count ); + echo ''; + } + + return $a; +} + +add_filter( 'comment_row_actions', 'akismet_comment_row_action', 10, 2 ); + +function akismet_comment_status_meta_box($comment) { + $history = akismet_get_comment_history( $comment->comment_ID ); + + if ( $history ) { + echo '
    '; + foreach ( $history as $row ) { + $time = date( 'D d M Y @ h:i:m a', $row['time'] ) . ' GMT'; + echo '
    ' . sprintf( __('%s ago'), human_time_diff( $row['time'] ) ) . ' - '; + echo htmlspecialchars( $row['message'] ) . '
    '; + } + + echo '
    '; + + } +} + + +// add an extra column header to the comments screen +function akismet_comments_columns( $columns ) { + $columns[ 'akismet' ] = __( 'Akismet' ); + return $columns; +} + +#add_filter( 'manage_edit-comments_columns', 'akismet_comments_columns' ); + +// Show stuff in the extra column +function akismet_comment_column_row( $column, $comment_id ) { + if ( $column != 'akismet' ) + return; + + $history = akismet_get_comment_history( $comment_id ); + + if ( $history ) { + echo '
    '; + foreach ( $history as $row ) { + echo '
    ' . sprintf( __('%s ago'), human_time_diff( $row['time'] ) ) . '
    '; + echo '
    ' . htmlspecialchars( $row['message'] ) . '
    '; + } + + echo '
    '; + } +} + +#add_action( 'manage_comments_custom_column', 'akismet_comment_column_row', 10, 2 ); + +// END FIXME + +// call out URLS in comments +function akismet_text_add_link_callback( $m ) { + + // bare link? + if ( $m[4] == $m[2] ) + return ''.$m[4].''; + else + return ''.$m[4].''; +} + +function akismet_text_add_link_class( $comment_text ) { + + return preg_replace_callback( '#]*)href="([^"]+)"([^>]*)>(.*?)#i', 'akismet_text_add_link_callback', $comment_text ); +} + +add_filter('comment_text', 'akismet_text_add_link_class'); + + +// WP 2.5+ +function akismet_rightnow() { + global $submenu, $wp_db_version; + + // clean_url was deprecated in WP 3.0 + $esc_url = 'clean_url'; + if ( function_exists( 'esc_url' ) ) + $esc_url = 'esc_url'; + + if ( 8645 < $wp_db_version ) // 2.7 + $link = 'edit-comments.php?comment_status=spam'; + elseif ( isset( $submenu['edit-comments.php'] ) ) + $link = 'edit-comments.php?page=akismet-admin'; + else + $link = 'edit.php?page=akismet-admin'; + + if ( $count = get_option('akismet_spam_count') ) { + $intro = sprintf( _n( + 'Akismet has protected your site from %2$s spam comment already. ', + 'Akismet has protected your site from %2$s spam comments already. ', + $count + ), 'http://akismet.com/', number_format_i18n( $count ) ); + } else { + $intro = sprintf( __('Akismet blocks spam from getting to your blog. '), 'http://akismet.com/' ); + } + + if ( $queue_count = akismet_spam_count() ) { + $queue_text = sprintf( _n( + 'There\'s %1$s comment in your spam queue right now.', + 'There are %1$s comments in your spam queue right now.', + $queue_count + ), number_format_i18n( $queue_count ), $esc_url($link) ); + } else { + $queue_text = sprintf( __( "There's nothing in your spam queue at the moment." ), $esc_url($link) ); + } + + $text = $intro . '
    ' . $queue_text; + echo "

    $text

    \n"; +} + +add_action('rightnow_end', 'akismet_rightnow'); + + +// For WP >= 2.5 +function akismet_check_for_spam_button($comment_status) { + if ( 'approved' == $comment_status ) + return; + if ( function_exists('plugins_url') ) + $link = 'admin.php?action=akismet_recheck_queue'; + else + $link = 'edit-comments.php?page=akismet-admin&recheckqueue=true&noheader=true'; + echo "
    " . __('Check for Spam') . ""; +} +add_action('manage_comments_nav', 'akismet_check_for_spam_button'); + +function akismet_submit_nonspam_comment ( $comment_id ) { + global $wpdb, $akismet_api_host, $akismet_api_port, $current_user, $current_site; + $comment_id = (int) $comment_id; + + $comment = $wpdb->get_row("SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment_id'"); + if ( !$comment ) // it was deleted + return; + + // use the original version stored in comment_meta if available + $as_submitted = get_comment_meta( $comment_id, 'akismet_as_submitted', true); + if ( $as_submitted && is_array($as_submitted) && isset($as_submitted['comment_content']) ) { + $comment = (object) array_merge( (array)$comment, $as_submitted ); + } + + $comment->blog = get_bloginfo('url'); + $comment->blog_lang = get_locale(); + $comment->blog_charset = get_option('blog_charset'); + $comment->permalink = get_permalink($comment->comment_post_ID); + $comment->reporter_ip = $_SERVER['REMOTE_ADDR']; + if ( is_object($current_user) ) { + $comment->reporter = $current_user->user_login; + } + if ( is_object($current_site) ) { + $comment->site_domain = $current_site->domain; + } + + $comment->user_role = ''; + if ( isset( $comment->user_ID ) ) + $comment->user_role = akismet_get_user_roles($comment->user_ID); + + if ( akismet_test_mode() ) + $comment->is_test = 'true'; + + $query_string = ''; + foreach ( $comment as $key => $data ) + $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&'; + + $response = akismet_http_post($query_string, $akismet_api_host, "/1.1/submit-ham", $akismet_api_port); + if ( $comment->reporter ) { + akismet_update_comment_history( $comment_id, sprintf( __('%s reported this comment as not spam'), $comment->reporter ), 'report-ham' ); + update_comment_meta( $comment_id, 'akismet_user_result', 'false' ); + update_comment_meta( $comment_id, 'akismet_user', $comment->reporter ); + } + + do_action('akismet_submit_nonspam_comment', $comment_id, $response[1]); +} + +function akismet_submit_spam_comment ( $comment_id ) { + global $wpdb, $akismet_api_host, $akismet_api_port, $current_user, $current_site; + $comment_id = (int) $comment_id; + + $comment = $wpdb->get_row("SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment_id'"); + if ( !$comment ) // it was deleted + return; + if ( 'spam' != $comment->comment_approved ) + return; + + // use the original version stored in comment_meta if available + $as_submitted = get_comment_meta( $comment_id, 'akismet_as_submitted', true); + if ( $as_submitted && is_array($as_submitted) && isset($as_submitted['comment_content']) ) { + $comment = (object) array_merge( (array)$comment, $as_submitted ); + } + + $comment->blog = get_bloginfo('url'); + $comment->blog_lang = get_locale(); + $comment->blog_charset = get_option('blog_charset'); + $comment->permalink = get_permalink($comment->comment_post_ID); + $comment->reporter_ip = $_SERVER['REMOTE_ADDR']; + if ( is_object($current_user) ) { + $comment->reporter = $current_user->user_login; + } + if ( is_object($current_site) ) { + $comment->site_domain = $current_site->domain; + } + + $comment->user_role = ''; + if ( isset( $comment->user_ID ) ) + $comment->user_role = akismet_get_user_roles($comment->user_ID); + + if ( akismet_test_mode() ) + $comment->is_test = 'true'; + + $query_string = ''; + foreach ( $comment as $key => $data ) + $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&'; + + $response = akismet_http_post($query_string, $akismet_api_host, "/1.1/submit-spam", $akismet_api_port); + if ( $comment->reporter ) { + akismet_update_comment_history( $comment_id, sprintf( __('%s reported this comment as spam'), $comment->reporter ), 'report-spam' ); + update_comment_meta( $comment_id, 'akismet_user_result', 'true' ); + update_comment_meta( $comment_id, 'akismet_user', $comment->reporter ); + } + do_action('akismet_submit_spam_comment', $comment_id, $response[1]); +} + +// For WP 2.7+ +function akismet_transition_comment_status( $new_status, $old_status, $comment ) { + if ( $new_status == $old_status ) + return; + + # we don't need to record a history item for deleted comments + if ( $new_status == 'delete' ) + return; + + if ( !is_admin() ) + return; + + if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) && !current_user_can( 'moderate_comments' ) ) + return; + + if ( defined('WP_IMPORTING') && WP_IMPORTING == true ) + return; + + global $current_user; + $reporter = ''; + if ( is_object( $current_user ) ) + $reporter = $current_user->user_login; + + // Assumption alert: + // We want to submit comments to Akismet only when a moderator explicitly spams or approves it - not if the status + // is changed automatically by another plugin. Unfortunately WordPress doesn't provide an unambiguous way to + // determine why the transition_comment_status action was triggered. And there are several different ways by which + // to spam and unspam comments: bulk actions, ajax, links in moderation emails, the dashboard, and perhaps others. + // We'll assume that this is an explicit user action if POST or GET has an 'action' key. + if ( isset($_POST['action']) || isset($_GET['action']) ) { + if ( $new_status == 'spam' && ( $old_status == 'approved' || $old_status == 'unapproved' || !$old_status ) ) { + return akismet_submit_spam_comment( $comment->comment_ID ); + } elseif ( $old_status == 'spam' && ( $new_status == 'approved' || $new_status == 'unapproved' ) ) { + return akismet_submit_nonspam_comment( $comment->comment_ID ); + } + } + + if ( !get_comment_meta( $comment->comment_ID, 'akismet_rechecking' ) ) + akismet_update_comment_history( $comment->comment_ID, sprintf( __('%s changed the comment status to %s'), $reporter, $new_status ), 'status-' . $new_status ); +} + +add_action( 'transition_comment_status', 'akismet_transition_comment_status', 10, 3 ); + +// Total spam in queue +// get_option( 'akismet_spam_count' ) is the total caught ever +function akismet_spam_count( $type = false ) { + global $wpdb; + + if ( !$type ) { // total + $count = wp_cache_get( 'akismet_spam_count', 'widget' ); + if ( false === $count ) { + if ( function_exists('wp_count_comments') ) { + $count = wp_count_comments(); + $count = $count->spam; + } else { + $count = (int) $wpdb->get_var("SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_approved = 'spam'"); + } + wp_cache_set( 'akismet_spam_count', $count, 'widget', 3600 ); + } + return $count; + } elseif ( 'comments' == $type || 'comment' == $type ) { // comments + $type = ''; + } else { // pingback, trackback, ... + $type = $wpdb->escape( $type ); + } + + return (int) $wpdb->get_var("SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_approved = 'spam' AND comment_type='$type'"); +} + + +function akismet_recheck_queue() { + global $wpdb, $akismet_api_host, $akismet_api_port; + + if ( ! ( isset( $_GET['recheckqueue'] ) || ( isset( $_REQUEST['action'] ) && 'akismet_recheck_queue' == $_REQUEST['action'] ) ) ) + return; + + $moderation = $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE comment_approved = '0'", ARRAY_A ); + foreach ( (array) $moderation as $c ) { + $c['user_ip'] = $c['comment_author_IP']; + $c['user_agent'] = $c['comment_agent']; + $c['referrer'] = ''; + $c['blog'] = get_bloginfo('url'); + $c['blog_lang'] = get_locale(); + $c['blog_charset'] = get_option('blog_charset'); + $c['permalink'] = get_permalink($c['comment_post_ID']); + + $c['user_role'] = ''; + if ( isset( $c['user_ID'] ) ) + $c['user_role'] = akismet_get_user_roles($c['user_ID']); + + if ( akismet_test_mode() ) + $c['is_test'] = 'true'; + + $id = (int) $c['comment_ID']; + + $query_string = ''; + foreach ( $c as $key => $data ) + $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&'; + + $response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port); + if ( 'true' == $response[1] ) { + wp_set_comment_status($c['comment_ID'], 'spam'); + update_comment_meta( $c['comment_ID'], 'akismet_result', 'true' ); + akismet_update_comment_history( $c['comment_ID'], __('Akismet re-checked and caught this comment as spam'), 'check-spam' ); + + } elseif ( 'false' == $response[1] ) { + update_comment_meta( $c['comment_ID'], 'akismet_result', 'false' ); + akismet_update_comment_history( $c['comment_ID'], __('Akismet re-checked and cleared this comment'), 'check-ham' ); + // abnormal result: error + } else { + update_comment_meta( $c['comment_ID'], 'akismet_result', 'error' ); + akismet_update_comment_history( $c['comment_ID'], sprintf( __('Akismet was unable to re-check this comment (response: %s)'), $response[1]), 'check-error' ); + } + + } + wp_redirect( $_SERVER['HTTP_REFERER'] ); + exit; +} + +add_action('admin_action_akismet_recheck_queue', 'akismet_recheck_queue'); + +// Check connectivity between the WordPress blog and Akismet's servers. +// Returns an associative array of server IP addresses, where the key is the IP address, and value is true (available) or false (unable to connect). +function akismet_check_server_connectivity() { + global $akismet_api_host, $akismet_api_port, $wpcom_api_key; + + $test_host = 'rest.akismet.com'; + + // Some web hosts may disable one or both functions + if ( !function_exists('fsockopen') || !function_exists('gethostbynamel') ) + return array(); + + $ips = gethostbynamel($test_host); + if ( !$ips || !is_array($ips) || !count($ips) ) + return array(); + + $servers = array(); + foreach ( $ips as $ip ) { + $response = akismet_verify_key( akismet_get_key(), $ip ); + // even if the key is invalid, at least we know we have connectivity + if ( $response == 'valid' || $response == 'invalid' ) + $servers[$ip] = true; + else + $servers[$ip] = false; + } + + return $servers; +} + +// Check the server connectivity and store the results in an option. +// Cached results will be used if not older than the specified timeout in seconds; use $cache_timeout = 0 to force an update. +// Returns the same associative array as akismet_check_server_connectivity() +function akismet_get_server_connectivity( $cache_timeout = 86400 ) { + $servers = get_option('akismet_available_servers'); + if ( (time() - get_option('akismet_connectivity_time') < $cache_timeout) && $servers !== false ) + return $servers; + + // There's a race condition here but the effect is harmless. + $servers = akismet_check_server_connectivity(); + update_option('akismet_available_servers', $servers); + update_option('akismet_connectivity_time', time()); + return $servers; +} + +// Returns true if server connectivity was OK at the last check, false if there was a problem that needs to be fixed. +function akismet_server_connectivity_ok() { + // skip the check on WPMU because the status page is hidden + global $wpcom_api_key; + if ( $wpcom_api_key ) + return true; + $servers = akismet_get_server_connectivity(); + return !( empty($servers) || !count($servers) || count( array_filter($servers) ) < count($servers) ); +} + diff --git a/src/wp-content/plugins/akismet/akismet.css b/src/wp-content/plugins/akismet/akismet.css new file mode 100644 index 0000000..6bc8458 --- /dev/null +++ b/src/wp-content/plugins/akismet/akismet.css @@ -0,0 +1,7 @@ +#submitted-on { position: relative; } +#the-comment-list .author .akismet-user-comment-count { display: inline; } +#dashboard_recent_comments .akismet-status { display: none; } /* never show the flagged by text on the dashboard */ +.akismet-status { float: right; } +.akismet-status a { color: #AAA; font-style: italic; } +span.comment-link a { text-decoration: underline; } +span.comment-link:after { content: " " attr(title) " "; color: #aaa; text-decoration: none; } diff --git a/src/wp-content/plugins/akismet/akismet.gif b/src/wp-content/plugins/akismet/akismet.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b93a89b9a0f089342cecaf4deaef48382523d03 GIT binary patch literal 2777 zcmd^;`9Bj31HdQ4Ts=<*DM!dFx6;8gL{i0M7_vVie=xFO=u_EPd?_QQgdSZy9ETZAt7NC(r&4gtWE?XQJ05`=NWhMV zK)3eBY?S1{8EtQ6c-DxQ^8KAHSqe_nrR zZeM!UbW-_5IC3B?kCIR}9**pf$1tLcXrD^QK9w?{1w*kVBa!(-X#_U3fErUwPbeFU z%pZ&`p~quJqY7z3S=}+k!_h^M0Am<3qgpk{r&xn>KRzo40)KFQ9b+n_wSvZ zoz2b7t*xyL;%wJ2HxS;%;c$37-pa~K3U-*w-pC5(IkT#Q_9)N^jmM;_!p=Bgr7!q) zb!>@TxYu`zq-Z^9RPR8Zkm2Sv&S;6}PUFMW9-YeyLG z3)$mLU3=!vvv7I&AKpMTtiOux=)3k_9PXG3a@k6shJ@%tazcKco(R4D;<^er>UB2 z^06_GrzuK{BzCGjyZ{Z?ct7$&00B~GL1wY>B~ZxKpCuVqcY@AkK3a}{0e6BkXAnZu z*iw|0u|QnbIRd@NMM6jYS+ox%NGa2{cjp;0V4`WRL}(q{j?Qv+Y{$Fa0^GFS==2CRF+hOxOF1OyL0uP>cNhmG5+^CAZl9O|;9DC~w7D3>P-o_CJ z9JzSyX$}05AzOpMvTJ!c?UyH!tY;WmQ*%oeUkkS9zLwy1Xm+-&-Rj^* zcf2&i6<0tYuk*X~5|?Wlh}`8bt3QlaTEs6eR(0yO06>+AM>Wqk?kn%<;;N70biOPp zJof1j)BVl+b*!|zldNgTe5cyt?0{=LQ0;pAlN07$MH+&6^MCzODtEC<`-^vN{{z#) z_JLSl&PCK!5iQ?d3bfm=Z&gQ2kYXZ!Z@u5eFl~L{xh}GO#KWB_QYoAJQHLtDqDAa8 z^7|S=(G8KmIsic&`UH%+4=Oe?4Np272qJl&%WYDe>)L(q2faRYI&;4^&_nkm1DR2S zF56QQ(K^8#gU^;Cm9^It^rl6d4Btaew7fQNqxemh|# zQrYB;H=dSYNPd}dJ^#dTq+#wLXr=hjxtZ5_YUReNar7TRi3_}TE+21k5Im#Rce8#n zTySD%&d^1-d2{T;VdyF=_5RHrIZy!rOo_V7^9;err<=%xo)qvK*Sj$lD;e8!b&KhD!k_g)Wx0O9oVlC;_L014x~c zW6U^xU%|@5qMyc+HgCeTzM;fjWjYUbR>H5SxQO_bbt)|X8E=#qDeayXp%eV}cnc9J zmJVu`w!9E{@pIv}hs<|b>tlkp(@N3}Ww&)l`xCE_o+PH)(?pT1Qc ztN%?&ip}W+53Htq7-B2zlnDau`7p$LU}bmX4KYlA+UX$|;=4 zM~e9lq4m8N}H@=Z>|>}N2-b2lA!{P>u5m=u<}6E)a{)O47krR@c~=IY%>aV46uJa3_b!U zoWz*|vD0)6fzGh2=O99>e7aT=$X{wjokHp{emJ6JLG`abg1YA*f zZa+h7)u_WoN@=-LJ?WjQn>EtB2#>p(jut!(xRTVo;W>-@Ewfk9nRSbRgB*vGhu-j- zSRo%b^Dc(+Hm%_fh~P_Y(oQ`rpT4kQv`t7ips3n!?(Q)r#q1j8NrZp~h5*aW z&rEZw{P|ai1DqUCpXI;oCrWV`R}N?{!t3}}dI6V58wCF*y$M6KJv~^6v{QRT2-4oO zYb)PsTJqNoxuH0zOlfG{q7uS37?TIP%nq4eo^te1K4#jrEmYh0<#5*o2Xd-a67wdy z!EkEdHc<3*%Eef;G5d@~yO=G{)Z4f=*5vZ6DB=n?{#c&VR;=`Q{-f1|8it!{i_8zb zl~{yUdTTNI zKJ)5q;w(7p!x4haMF~E84PRbU@MK&VaUKKPW=Q^j%tG>xNrv)!E3r4)N#A zZ@4}{gq!Rhon%>0MD#4aG~64Zgaw=iDgyLE1WbYR=4W_T!T_s12J>h`protect your blog from comment and trackback spam. It keeps your site protected from spam even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) Sign up for an Akismet API key, and 3) Go to your Akismet configuration page, and save your API key. +Version: 2.5.3 +Author: Automattic +Author URI: http://automattic.com/wordpress-plugins/ +License: GPLv2 or later +*/ + +/* +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +define('AKISMET_VERSION', '2.5.3'); +define('AKISMET_PLUGIN_URL', plugin_dir_url( __FILE__ )); + +/** If you hardcode a WP.com API key here, all key config screens will be hidden */ +if ( defined('WPCOM_API_KEY') ) + $wpcom_api_key = constant('WPCOM_API_KEY'); +else + $wpcom_api_key = ''; + +// Make sure we don't expose any info if called directly +if ( !function_exists( 'add_action' ) ) { + echo "Hi there! I'm just a plugin, not much I can do when called directly."; + exit; +} + +if ( isset($wp_db_version) && $wp_db_version <= 9872 ) + include_once dirname( __FILE__ ) . '/legacy.php'; + +include_once dirname( __FILE__ ) . '/widget.php'; + +if ( is_admin() ) + require_once dirname( __FILE__ ) . '/admin.php'; + +function akismet_init() { + global $wpcom_api_key, $akismet_api_host, $akismet_api_port; + + if ( $wpcom_api_key ) + $akismet_api_host = $wpcom_api_key . '.rest.akismet.com'; + else + $akismet_api_host = get_option('wordpress_api_key') . '.rest.akismet.com'; + + $akismet_api_port = 80; +} +add_action('init', 'akismet_init'); + +function akismet_get_key() { + global $wpcom_api_key; + if ( !empty($wpcom_api_key) ) + return $wpcom_api_key; + return get_option('wordpress_api_key'); +} + +function akismet_verify_key( $key, $ip = null ) { + global $akismet_api_host, $akismet_api_port, $wpcom_api_key; + $blog = urlencode( get_option('home') ); + if ( $wpcom_api_key ) + $key = $wpcom_api_key; + $response = akismet_http_post("key=$key&blog=$blog", 'rest.akismet.com', '/1.1/verify-key', $akismet_api_port, $ip); + if ( !is_array($response) || !isset($response[1]) || $response[1] != 'valid' && $response[1] != 'invalid' ) + return 'failed'; + return $response[1]; +} + +// if we're in debug or test modes, use a reduced service level so as not to polute training or stats data +function akismet_test_mode() { + if ( defined('AKISMET_TEST_MODE') && AKISMET_TEST_MODE ) + return true; + return false; +} + +// return a comma-separated list of role names for the given user +function akismet_get_user_roles($user_id ) { + $roles = false; + + if ( !class_exists('WP_User') ) + return false; + + if ( $user_id > 0 ) { + $comment_user = new WP_User($user_id); + if ( isset($comment_user->roles) ) + $roles = join(',', $comment_user->roles); + } + + if ( is_multisite() && is_super_admin( $user_id ) ) { + if ( empty( $roles ) ) { + $roles = 'super_admin'; + } else { + $comment_user->roles[] = 'super_admin'; + $roles = join( ',', $comment_user->roles ); + } + } + + return $roles; +} + +// Returns array with headers in $response[0] and body in $response[1] +function akismet_http_post($request, $host, $path, $port = 80, $ip=null) { + global $wp_version; + + $akismet_ua = "WordPress/{$wp_version} | "; + $akismet_ua .= 'Akismet/' . constant( 'AKISMET_VERSION' ); + + $content_length = strlen( $request ); + + $http_host = $host; + // use a specific IP if provided + // needed by akismet_check_server_connectivity() + if ( $ip && long2ip( ip2long( $ip ) ) ) { + $http_host = $ip; + } else { + $http_host = $host; + } + + // use the WP HTTP class if it is available + if ( function_exists( 'wp_remote_post' ) ) { + $http_args = array( + 'body' => $request, + 'headers' => array( + 'Content-Type' => 'application/x-www-form-urlencoded; ' . + 'charset=' . get_option( 'blog_charset' ), + 'Host' => $host, + 'User-Agent' => $akismet_ua + ), + 'httpversion' => '1.0', + 'timeout' => 15 + ); + $akismet_url = "http://{$http_host}{$path}"; + $response = wp_remote_post( $akismet_url, $http_args ); + if ( is_wp_error( $response ) ) + return ''; + + return array( $response['headers'], $response['body'] ); + } else { + $http_request = "POST $path HTTP/1.0\r\n"; + $http_request .= "Host: $host\r\n"; + $http_request .= 'Content-Type: application/x-www-form-urlencoded; charset=' . get_option('blog_charset') . "\r\n"; + $http_request .= "Content-Length: {$content_length}\r\n"; + $http_request .= "User-Agent: {$akismet_ua}\r\n"; + $http_request .= "\r\n"; + $http_request .= $request; + + $response = ''; + if( false != ( $fs = @fsockopen( $http_host, $port, $errno, $errstr, 10 ) ) ) { + fwrite( $fs, $http_request ); + + while ( !feof( $fs ) ) + $response .= fgets( $fs, 1160 ); // One TCP-IP packet + fclose( $fs ); + $response = explode( "\r\n\r\n", $response, 2 ); + } + return $response; + } +} + +// filter handler used to return a spam result to pre_comment_approved +function akismet_result_spam( $approved ) { + // bump the counter here instead of when the filter is added to reduce the possibility of overcounting + if ( $incr = apply_filters('akismet_spam_count_incr', 1) ) + update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr ); + // this is a one-shot deal + remove_filter( 'pre_comment_approved', 'akismet_result_spam' ); + return 'spam'; +} + +function akismet_result_hold( $approved ) { + // once only + remove_filter( 'pre_comment_approved', 'akismet_result_hold' ); + return '0'; +} + +// how many approved comments does this author have? +function akismet_get_user_comments_approved( $user_id, $comment_author_email, $comment_author, $comment_author_url ) { + global $wpdb; + + if ( !empty($user_id) ) + return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->comments WHERE user_id = %d AND comment_approved = 1", $user_id ) ); + + if ( !empty($comment_author_email) ) + return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_author_email = %s AND comment_author = %s AND comment_author_url = %s AND comment_approved = 1", $comment_author_email, $comment_author, $comment_author_url ) ); + + return 0; +} + +function akismet_microtime() { + $mtime = explode( ' ', microtime() ); + return $mtime[1] + $mtime[0]; +} + +// log an event for a given comment, storing it in comment_meta +function akismet_update_comment_history( $comment_id, $message, $event=null ) { + global $current_user; + + // failsafe for old WP versions + if ( !function_exists('add_comment_meta') ) + return false; + + $user = ''; + if ( is_object($current_user) && isset($current_user->user_login) ) + $user = $current_user->user_login; + + $event = array( + 'time' => akismet_microtime(), + 'message' => $message, + 'event' => $event, + 'user' => $user, + ); + + // $unique = false so as to allow multiple values per comment + $r = add_comment_meta( $comment_id, 'akismet_history', $event, false ); +} + +// get the full comment history for a given comment, as an array in reverse chronological order +function akismet_get_comment_history( $comment_id ) { + + // failsafe for old WP versions + if ( !function_exists('add_comment_meta') ) + return false; + + $history = get_comment_meta( $comment_id, 'akismet_history', false ); + usort( $history, 'akismet_cmp_time' ); + return $history; +} + +function akismet_cmp_time( $a, $b ) { + return $a['time'] > $b['time'] ? -1 : 1; +} + +// this fires on wp_insert_comment. we can't update comment_meta when akismet_auto_check_comment() runs +// because we don't know the comment ID at that point. +function akismet_auto_check_update_meta( $id, $comment ) { + global $akismet_last_comment; + + // failsafe for old WP versions + if ( !function_exists('add_comment_meta') ) + return false; + + // wp_insert_comment() might be called in other contexts, so make sure this is the same comment + // as was checked by akismet_auto_check_comment + if ( is_object($comment) && !empty($akismet_last_comment) && is_array($akismet_last_comment) ) { + if ( intval($akismet_last_comment['comment_post_ID']) == intval($comment->comment_post_ID) + && $akismet_last_comment['comment_author'] == $comment->comment_author + && $akismet_last_comment['comment_author_email'] == $comment->comment_author_email ) { + // normal result: true or false + if ( $akismet_last_comment['akismet_result'] == 'true' ) { + update_comment_meta( $comment->comment_ID, 'akismet_result', 'true' ); + akismet_update_comment_history( $comment->comment_ID, __('Akismet caught this comment as spam'), 'check-spam' ); + if ( $comment->comment_approved != 'spam' ) + akismet_update_comment_history( $comment->comment_ID, sprintf( __('Comment status was changed to %s'), $comment->comment_approved), 'status-changed'.$comment->comment_approved ); + } elseif ( $akismet_last_comment['akismet_result'] == 'false' ) { + update_comment_meta( $comment->comment_ID, 'akismet_result', 'false' ); + akismet_update_comment_history( $comment->comment_ID, __('Akismet cleared this comment'), 'check-ham' ); + if ( $comment->comment_approved == 'spam' ) { + if ( wp_blacklist_check($comment->comment_author, $comment->comment_author_email, $comment->comment_author_url, $comment->comment_content, $comment->comment_author_IP, $comment->comment_agent) ) + akismet_update_comment_history( $comment->comment_ID, __('Comment was caught by wp_blacklist_check'), 'wp-blacklisted' ); + else + akismet_update_comment_history( $comment->comment_ID, sprintf( __('Comment status was changed to %s'), $comment->comment_approved), 'status-changed-'.$comment->comment_approved ); + } + // abnormal result: error + } else { + update_comment_meta( $comment->comment_ID, 'akismet_error', time() ); + akismet_update_comment_history( $comment->comment_ID, sprintf( __('Akismet was unable to check this comment (response: %s), will automatically retry again later.'), $akismet_last_comment['akismet_result']), 'check-error' ); + } + + // record the complete original data as submitted for checking + if ( isset($akismet_last_comment['comment_as_submitted']) ) + update_comment_meta( $comment->comment_ID, 'akismet_as_submitted', $akismet_last_comment['comment_as_submitted'] ); + } + } +} + +add_action( 'wp_insert_comment', 'akismet_auto_check_update_meta', 10, 2 ); + + +function akismet_auto_check_comment( $commentdata ) { + global $akismet_api_host, $akismet_api_port, $akismet_last_comment; + + $comment = $commentdata; + $comment['user_ip'] = $_SERVER['REMOTE_ADDR']; + $comment['user_agent'] = $_SERVER['HTTP_USER_AGENT']; + $comment['referrer'] = $_SERVER['HTTP_REFERER']; + $comment['blog'] = get_option('home'); + $comment['blog_lang'] = get_locale(); + $comment['blog_charset'] = get_option('blog_charset'); + $comment['permalink'] = get_permalink($comment['comment_post_ID']); + + $comment['user_role'] = akismet_get_user_roles($comment['user_ID']); + + $akismet_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) ); + $comment['akismet_comment_nonce'] = 'inactive'; + if ( $akismet_nonce_option == 'true' || $akismet_nonce_option == '' ) { + $comment['akismet_comment_nonce'] = 'failed'; + if ( isset( $_POST['akismet_comment_nonce'] ) && wp_verify_nonce( $_POST['akismet_comment_nonce'], 'akismet_comment_nonce_' . $comment['comment_post_ID'] ) ) + $comment['akismet_comment_nonce'] = 'passed'; + + // comment reply in wp-admin + if ( isset( $_POST['_ajax_nonce-replyto-comment'] ) && check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' ) ) + $comment['akismet_comment_nonce'] = 'passed'; + + } + + if ( akismet_test_mode() ) + $comment['is_test'] = 'true'; + + foreach ($_POST as $key => $value ) { + if ( is_string($value) ) + $comment["POST_{$key}"] = $value; + } + + $ignore = array( 'HTTP_COOKIE', 'HTTP_COOKIE2', 'PHP_AUTH_PW' ); + + foreach ( $_SERVER as $key => $value ) { + if ( !in_array( $key, $ignore ) && is_string($value) ) + $comment["$key"] = $value; + else + $comment["$key"] = ''; + } + + $query_string = ''; + foreach ( $comment as $key => $data ) + $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&'; + + $commentdata['comment_as_submitted'] = $comment; + + $response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port); + $commentdata['akismet_result'] = $response[1]; + if ( 'true' == $response[1] ) { + // akismet_spam_count will be incremented later by akismet_result_spam() + add_filter('pre_comment_approved', 'akismet_result_spam'); + + do_action( 'akismet_spam_caught' ); + + $post = get_post( $comment['comment_post_ID'] ); + $last_updated = strtotime( $post->post_modified_gmt ); + $diff = time() - $last_updated; + $diff = $diff / 86400; + + if ( $post->post_type == 'post' && $diff > 30 && get_option( 'akismet_discard_month' ) == 'true' && empty($comment['user_ID']) ) { + // akismet_result_spam() won't be called so bump the counter here + if ( $incr = apply_filters('akismet_spam_count_incr', 1) ) + update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr ); + wp_redirect( $_SERVER['HTTP_REFERER'] ); + die(); + } + } + + // if the response is neither true nor false, hold the comment for moderation and schedule a recheck + if ( 'true' != $response[1] && 'false' != $response[1] ) { + add_filter('pre_comment_approved', 'akismet_result_hold'); + wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' ); + } + + if ( function_exists('wp_next_scheduled') && function_exists('wp_schedule_event') ) { + // WP 2.1+: delete old comments daily + if ( !wp_next_scheduled('akismet_scheduled_delete') ) + wp_schedule_event(time(), 'daily', 'akismet_scheduled_delete'); + } elseif ( (mt_rand(1, 10) == 3) ) { + // WP 2.0: run this one time in ten + akismet_delete_old(); + } + $akismet_last_comment = $commentdata; + return $commentdata; +} + +add_action('preprocess_comment', 'akismet_auto_check_comment', 1); + +function akismet_delete_old() { + global $wpdb; + $now_gmt = current_time('mysql', 1); + $comment_ids = $wpdb->get_col("SELECT comment_id FROM $wpdb->comments WHERE DATE_SUB('$now_gmt', INTERVAL 15 DAY) > comment_date_gmt AND comment_approved = 'spam'"); + if ( empty( $comment_ids ) ) + return; + + $comma_comment_ids = implode( ', ', array_map('intval', $comment_ids) ); + + do_action( 'delete_comment', $comment_ids ); + $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_id IN ( $comma_comment_ids )"); + $wpdb->query("DELETE FROM $wpdb->commentmeta WHERE comment_id IN ( $comma_comment_ids )"); + clean_comment_cache( $comment_ids ); + $n = mt_rand(1, 5000); + if ( apply_filters('akismet_optimize_table', ($n == 11)) ) // lucky number + $wpdb->query("OPTIMIZE TABLE $wpdb->comments"); + +} + +add_action('akismet_scheduled_delete', 'akismet_delete_old'); + +function akismet_check_db_comment( $id, $recheck_reason = 'recheck_queue' ) { + global $wpdb, $akismet_api_host, $akismet_api_port; + + $id = (int) $id; + $c = $wpdb->get_row( "SELECT * FROM $wpdb->comments WHERE comment_ID = '$id'", ARRAY_A ); + if ( !$c ) + return; + + $c['user_ip'] = $c['comment_author_IP']; + $c['user_agent'] = $c['comment_agent']; + $c['referrer'] = ''; + $c['blog'] = get_option('home'); + $c['blog_lang'] = get_locale(); + $c['blog_charset'] = get_option('blog_charset'); + $c['permalink'] = get_permalink($c['comment_post_ID']); + $id = $c['comment_ID']; + if ( akismet_test_mode() ) + $c['is_test'] = 'true'; + $c['recheck_reason'] = $recheck_reason; + + $query_string = ''; + foreach ( $c as $key => $data ) + $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&'; + + $response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port); + return $response[1]; +} + +function akismet_cron_recheck() { + global $wpdb; + + delete_option('akismet_available_servers'); + + $comment_errors = $wpdb->get_col( " + SELECT comment_id + FROM {$wpdb->prefix}commentmeta + WHERE meta_key = 'akismet_error' + LIMIT 100 + " ); + + foreach ( (array) $comment_errors as $comment_id ) { + // if the comment no longer exists, remove the meta entry from the queue to avoid getting stuck + if ( !get_comment( $comment_id ) ) { + delete_comment_meta( $comment_id, 'akismet_error' ); + continue; + } + + add_comment_meta( $comment_id, 'akismet_rechecking', true ); + $status = akismet_check_db_comment( $comment_id, 'retry' ); + + $msg = ''; + if ( $status == 'true' ) { + $msg = __( 'Akismet caught this comment as spam during an automatic retry.' ); + } elseif ( $status == 'false' ) { + $msg = __( 'Akismet cleared this comment during an automatic retry.' ); + } + + // If we got back a legit response then update the comment history + // other wise just bail now and try again later. No point in + // re-trying all the comments once we hit one failure. + if ( !empty( $msg ) ) { + delete_comment_meta( $comment_id, 'akismet_error' ); + akismet_update_comment_history( $comment_id, $msg, 'cron-retry' ); + update_comment_meta( $comment_id, 'akismet_result', $status ); + // make sure the comment status is still pending. if it isn't, that means the user has already moved it elsewhere. + $comment = get_comment( $comment_id ); + if ( $comment && 'unapproved' == wp_get_comment_status( $comment_id ) ) { + if ( $status == 'true' ) { + wp_spam_comment( $comment_id ); + } elseif ( $status == 'false' ) { + // comment is good, but it's still in the pending queue. depending on the moderation settings + // we may need to change it to approved. + if ( check_comment($comment->comment_author, $comment->comment_author_email, $comment->comment_author_url, $comment->comment_content, $comment->comment_author_IP, $comment->comment_agent, $comment->comment_type) ) + wp_set_comment_status( $comment_id, 1 ); + } + } + } else { + delete_comment_meta( $comment_id, 'akismet_rechecking' ); + wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' ); + return; + } + } + + $remaining = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->commentmeta WHERE meta_key = 'akismet_error'" ) ); + if ( $remaining && !wp_next_scheduled('akismet_schedule_cron_recheck') ) { + wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' ); + } +} +add_action( 'akismet_schedule_cron_recheck', 'akismet_cron_recheck' ); + +function akismet_add_comment_nonce( $post_id ) { + echo '

    '; + wp_nonce_field( 'akismet_comment_nonce_' . $post_id, 'akismet_comment_nonce', FALSE ); + echo '

    '; +} + +$akismet_comment_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) ); + +if ( $akismet_comment_nonce_option == 'true' || $akismet_comment_nonce_option == '' ) + add_action( 'comment_form', 'akismet_add_comment_nonce' ); + +if ( '3.0.5' == $wp_version ) { + remove_filter( 'comment_text', 'wp_kses_data' ); + if ( is_admin() ) + add_filter( 'comment_text', 'wp_kses_post' ); +} diff --git a/src/wp-content/plugins/akismet/legacy.php b/src/wp-content/plugins/akismet/legacy.php new file mode 100644 index 0000000..d5d53b0 --- /dev/null +++ b/src/wp-content/plugins/akismet/legacy.php @@ -0,0 +1,396 @@ +escape( $type ); + return $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE comment_approved = 'spam' AND comment_type='$type' ORDER BY comment_date DESC LIMIT $start, $end"); + } + + // All + return $wpdb->get_results( "SELECT * FROM $wpdb->comments WHERE comment_approved = 'spam' ORDER BY comment_date DESC LIMIT $start, $end"); +} + +// Totals for each comment type +// returns array( type => count, ... ) +function akismet_spam_totals() { + global $wpdb; + $totals = $wpdb->get_results( "SELECT comment_type, COUNT(*) AS cc FROM $wpdb->comments WHERE comment_approved = 'spam' GROUP BY comment_type" ); + $return = array(); + foreach ( $totals as $total ) + $return[$total->comment_type ? $total->comment_type : 'comment'] = $total->cc; + return $return; +} + +function akismet_manage_page() { + global $wpdb, $submenu, $wp_db_version; + + // WP 2.7 has its own spam management page + if ( 8645 <= $wp_db_version ) + return; + + $count = sprintf(__('Akismet Spam (%s)'), akismet_spam_count()); + if ( isset( $submenu['edit-comments.php'] ) ) + add_submenu_page('edit-comments.php', __('Akismet Spam'), $count, 'moderate_comments', 'akismet-admin', 'akismet_caught' ); + elseif ( function_exists('add_management_page') ) + add_management_page(__('Akismet Spam'), $count, 'moderate_comments', 'akismet-admin', 'akismet_caught'); +} + +function akismet_caught() { + global $wpdb, $comment, $akismet_caught, $akismet_nonce; + + akismet_recheck_queue(); + if (isset($_POST['submit']) && 'recover' == $_POST['action'] && ! empty($_POST['not_spam'])) { + check_admin_referer( $akismet_nonce ); + if ( function_exists('current_user_can') && !current_user_can('moderate_comments') ) + die(__('You do not have sufficient permission to moderate comments.')); + + $i = 0; + foreach ($_POST['not_spam'] as $comment): + $comment = (int) $comment; + if ( function_exists('wp_set_comment_status') ) + wp_set_comment_status($comment, 'approve'); + else + $wpdb->query("UPDATE $wpdb->comments SET comment_approved = '1' WHERE comment_ID = '$comment'"); + akismet_submit_nonspam_comment($comment); + ++$i; + endforeach; + $to = add_query_arg( 'recovered', $i, $_SERVER['HTTP_REFERER'] ); + wp_redirect( $to ); + exit; + } + if ('delete' == $_POST['action']) { + check_admin_referer( $akismet_nonce ); + if ( function_exists('current_user_can') && !current_user_can('moderate_comments') ) + die(__('You do not have sufficient permission to moderate comments.')); + + $delete_time = $wpdb->escape( $_POST['display_time'] ); + $comment_ids = $wpdb->get_col( "SELECT comment_id FROM $wpdb->comments WHERE comment_approved = 'spam' AND '$delete_time' > comment_date_gmt" ); + if ( !empty( $comment_ids ) ) { + do_action( 'delete_comment', $comment_ids ); + $wpdb->query( "DELETE FROM $wpdb->comments WHERE comment_id IN ( " . implode( ', ', $comment_ids ) . " )"); + wp_cache_delete( 'akismet_spam_count', 'widget' ); + } + $to = add_query_arg( 'deleted', 'all', $_SERVER['HTTP_REFERER'] ); + wp_redirect( $to ); + exit; + } + +if ( isset( $_GET['recovered'] ) ) { + $i = (int) $_GET['recovered']; + echo '

    ' . sprintf(__('%1$s comments recovered.'), $i) . "

    "; +} + +if (isset( $_GET['deleted'] ) ) + echo '

    ' . __('All spam deleted.') . '

    '; + +if ( isset( $GLOBALS['submenu']['edit-comments.php'] ) ) + $link = 'edit-comments.php'; +else + $link = 'edit.php'; +?> + +
    +

    + +

    %1$s spam for you since you first installed it.'), number_format_i18n($count) ); ?>

    +'.__('You have no spam currently in the queue. Must be your lucky day. :)').'

    '; + echo '
    '; +} else { + echo '

    '.__('You can delete all of the spam from your database with a single click. This operation cannot be undone, so you may wish to check to ensure that no legitimate comments got through first. Spam is automatically deleted after 15 days, so don’t sweat it.').'

    '; +?> + +
    + + +    + +
    + +
    +
    + +

    + +'.__('These are the latest comments identified as spam by Akismet. If you see any mistakes, simply mark the comment as "not spam" and Akismet will learn from the submission. If you wish to recover a comment from spam, simply select the comment, and click Not Spam. After 15 days we clean out the junk for you.').'

    '; ?> + +escape($_POST['s']); + $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments WHERE + (comment_author LIKE '%$s%' OR + comment_author_email LIKE '%$s%' OR + comment_author_url LIKE ('%$s%') OR + comment_author_IP LIKE ('%$s%') OR + comment_content LIKE ('%$s%') ) AND + comment_approved = 'spam' + ORDER BY comment_date DESC"); +} else { + if ( isset( $_GET['apage'] ) ) + $page = (int) $_GET['apage']; + else + $page = 1; + + if ( $page < 2 ) + $page = 1; + + $current_type = false; + if ( isset( $_GET['ctype'] ) ) + $current_type = preg_replace( '|[^a-z]|', '', $_GET['ctype'] ); + + $comments = akismet_spam_comments( $current_type, $page ); + $total = akismet_spam_count( $current_type ); + $totals = akismet_spam_totals(); +?> +
      +
    • >
    • + $type_count ) { + if ( 'comment' == $type ) { + $type = 'comments'; + $show = __('Comments'); + } else { + $show = ucwords( $type ); + } + $type_count = number_format_i18n( $type_count ); + $extra = $current_type === $type ? ' class="active"' : ''; + echo "
    • $show ($type_count)
    • "; +} +do_action( 'akismet_tabs' ); // so plugins can add more tabs easily +?> +
    + +
    " id="akismetsearch"> +

    +

    +
    + 50 ) { +$total_pages = ceil( $total / 50 ); +$r = ''; +if ( 1 < $page ) { + $args['apage'] = ( 1 == $page - 1 ) ? '' : $page - 1; + $r .= '' . "\n"; +} +if ( ( $total_pages = ceil( $total / 50 ) ) > 1 ) { + for ( $page_num = 1; $page_num <= $total_pages; $page_num++ ) : + if ( $page == $page_num ) : + $r .= "$page_num\n"; + else : + $p = false; + if ( $page_num < 3 || ( $page_num >= $page - 3 && $page_num <= $page + 3 ) || $page_num > $total_pages - 3 ) : + $args['apage'] = ( 1 == $page_num ) ? '' : $page_num; + $r .= '' . ( $page_num ) . "\n"; + $in = true; + elseif ( $in == true ) : + $r .= "...\n"; + $in = false; + endif; + endif; + endfor; +} +if ( ( $page ) * 50 < $total || -1 == $total ) { + $args['apage'] = $page + 1; + $r .= '' . "\n"; +} +echo "

    $r

    "; +?> + + +
    + + +
      +comment_date); + $post = get_post($comment->comment_post_ID); + $post_title = $post->post_title; + if ($i % 2) $class = 'class="alternate"'; + else $class = ''; + echo "\n\t
    • "; + ?> + +

      comment_author_email) { ?>| comment_author_url && 'http://' != $comment->comment_author_url) { ?> | |

      + + + +

      — [ +comment_post_ID); +$post_title = wp_specialchars( $post->post_title, 'double' ); +$post_title = ('' == $post_title) ? "# $comment->comment_post_ID" : $post_title; +?> + ]

      + + + +
    + 50 ) { +$total_pages = ceil( $total / 50 ); +$r = ''; +if ( 1 < $page ) { + $args['apage'] = ( 1 == $page - 1 ) ? '' : $page - 1; + $r .= '' . "\n"; +} +if ( ( $total_pages = ceil( $total / 50 ) ) > 1 ) { + for ( $page_num = 1; $page_num <= $total_pages; $page_num++ ) : + if ( $page == $page_num ) : + $r .= "$page_num\n"; + else : + $p = false; + if ( $page_num < 3 || ( $page_num >= $page - 3 && $page_num <= $page + 3 ) || $page_num > $total_pages - 3 ) : + $args['apage'] = ( 1 == $page_num ) ? '' : $page_num; + $r .= '' . ( $page_num ) . "\n"; + $in = true; + elseif ( $in == true ) : + $r .= "...\n"; + $in = false; + endif; + endif; + endfor; +} +if ( ( $page ) * 50 < $total || -1 == $total ) { + $args['apage'] = $page + 1; + $r .= '' . "\n"; +} +echo "

    $r

    "; +} +?> +

    + +

    +

    +
    + +

    + + + +
    + +

    +    +

    +
    + +
    +" . __('Recheck Queue for Spam') . ""; + $page = str_replace( '
    ', '
    ' . $button, $page ); + return $page; + } + + if ( $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = '0'" ) ) + ob_start( 'akismet_recheck_button' ); +} + +// This option causes tons of FPs, was removed in 2.1 +function akismet_kill_proxy_check( $option ) { return 0; } +add_filter('option_open_proxy_check', 'akismet_kill_proxy_check'); diff --git a/src/wp-content/plugins/akismet/readme.txt b/src/wp-content/plugins/akismet/readme.txt new file mode 100644 index 0000000..fbd3513 --- /dev/null +++ b/src/wp-content/plugins/akismet/readme.txt @@ -0,0 +1,130 @@ +=== Akismet === +Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, automattic +Tags: akismet, comments, spam +Requires at least: 3.0 +Tested up to: 3.1 +Stable tag: 2.5.3 +License: GPLv2 or later + +Akismet checks your comments against the Akismet web service to see if they look like spam or not. + +== Description == + +Akismet checks your comments against the Akismet web service to see if they look like spam or not and lets you +review the spam it catches under your blog's "Comments" admin screen. + +Major new features in Akismet 2.5 include: + +* A comment status history, so you can easily see which comments were caught or cleared by Akismet, and which were spammed or unspammed by a moderator +* Links are highlighted in the comment body, to reveal hidden or misleading links +* If your web host is unable to reach Akismet's servers, the plugin will automatically retry when your connection is back up +* Moderators can see the number of approved comments for each user +* Spam and Unspam reports now include more information, to help improve accuracy + +PS: You'll need an [Akismet.com API key](http://akismet.com/get/) to use it. Keys are free for personal blogs, with paid subscriptions available for businesses and commercial sites. + +== Installation == + +Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.com API key](http://akismet.com/get/). + +1, 2, 3: You're done! + +== Changelog == + += 2.5.3 = +* Specify the license is GPL v2 or later +* Fix a bug that could result in orphaned commentmeta entries +* Include hotfix for WordPress 3.0.5 filter issue + += 2.5.2 = + +* Properly format the comment count for author counts +* Look for super admins on multisite installs when looking up user roles +* Increase the HTTP request timeout +* Removed padding for author approved count +* Fix typo in function name +* Set Akismet stats iframe height to fixed 2500px. Better to have one tall scroll bar than two side by side. + += 2.5.1 = + +* Fix a bug that caused the "Auto delete" option to fail to discard comments correctly +* Remove the comment nonce form field from the 'Akismet Configuration' page in favor of using a filter, akismet_comment_nonce +* Fixed padding bug in "author" column of posts screen +* Added margin-top to "cleared by ..." badges on dashboard +* Fix possible error when calling akismet_cron_recheck() +* Fix more PHP warnings +* Clean up XHTML warnings for comment nonce +* Fix for possible condition where scheduled comment re-checks could get stuck +* Clean up the comment meta details after deleting a comment +* Only show the status badge if the comment status has been changed by someone/something other than Akismet +* Show a 'History' link in the row-actions +* Translation fixes +* Reduced font-size on author name +* Moved "flagged by..." notification to top right corner of comment container and removed heavy styling +* Hid "flagged by..." notification while on dashboard + += 2.5.0 = + +* Track comment actions under 'Akismet Status' on the edit comment screen +* Fix a few remaining deprecated function calls ( props Mike Glendinning ) +* Use HTTPS for the stats IFRAME when wp-admin is using HTTPS +* Use the WordPress HTTP class if available +* Move the admin UI code to a separate file, only loaded when needed +* Add cron retry feature, to replace the old connectivity check +* Display Akismet status badge beside each comment +* Record history for each comment, and display it on the edit page +* Record the complete comment as originally submitted in comment_meta, to use when reporting spam and ham +* Highlight links in comment content +* New option, "Show the number of comments you've approved beside each comment author." +* New option, "Use a nonce on the comment form." + += 2.4.0 = + +* Spell out that the license is GPLv2 +* Fix PHP warnings +* Fix WordPress deprecated function calls +* Fire the delete_comment action when deleting comments +* Move code specific for older WP versions to legacy.php +* General code clean up + += 2.3.0 = + +* Fix "Are you sure" nonce message on config screen in WPMU +* Fix XHTML compliance issue in sidebar widget +* Change author link; remove some old references to WordPress.com accounts +* Localize the widget title (core ticket #13879) + += 2.2.9 = + +* Eliminate a potential conflict with some plugins that may cause spurious reports + += 2.2.8 = + +* Fix bug in initial comment check for ipv6 addresses +* Report comments as ham when they are moved from spam to moderation +* Report comments as ham when clicking undo after spam +* Use transition_comment_status action when available instead of older actions for spam/ham submissions +* Better diagnostic messages when PHP network functions are unavailable +* Better handling of comments by logged-in users + += 2.2.7 = + +* Add a new AKISMET_VERSION constant +* Reduce the possibility of over-counting spam when another spam filter plugin is in use +* Disable the connectivity check when the API key is hard-coded for WPMU + += 2.2.6 = + +* Fix a global warning introduced in 2.2.5 +* Add changelog and additional readme.txt tags +* Fix an array conversion warning in some versions of PHP +* Support a new WPCOM_API_KEY constant for easier use with WordPress MU + += 2.2.5 = + +* Include a new Server Connectivity diagnostic check, to detect problems caused by firewalls + += 2.2.4 = + +* Fixed a key problem affecting the stats feature in WordPress MU +* Provide additional blog information in Akismet API calls diff --git a/src/wp-content/plugins/akismet/widget.php b/src/wp-content/plugins/akismet/widget.php new file mode 100644 index 0000000..e9a3f62 --- /dev/null +++ b/src/wp-content/plugins/akismet/widget.php @@ -0,0 +1,90 @@ + + + + + + + + +

    + + + +
    ', '', $count ), number_format_i18n( $count ) ); +} diff --git a/src/wp-content/plugins/hello.php b/src/wp-content/plugins/hello.php new file mode 100644 index 0000000..d2287e2 --- /dev/null +++ b/src/wp-content/plugins/hello.php @@ -0,0 +1,82 @@ +Hello, Dolly in the upper right of your admin screen on every page. +Author: Matt Mullenweg +Version: 1.6 +Author URI: http://ma.tt/ +*/ + +function hello_dolly_get_lyric() { + /** These are the lyrics to Hello Dolly */ + $lyrics = "Hello, Dolly +Well, hello, Dolly +It's so nice to have you back where you belong +You're lookin' swell, Dolly +I can tell, Dolly +You're still glowin', you're still crowin' +You're still goin' strong +We feel the room swayin' +While the band's playin' +One of your old favourite songs from way back when +So, take her wrap, fellas +Find her an empty lap, fellas +Dolly'll never go away again +Hello, Dolly +Well, hello, Dolly +It's so nice to have you back where you belong +You're lookin' swell, Dolly +I can tell, Dolly +You're still glowin', you're still crowin' +You're still goin' strong +We feel the room swayin' +While the band's playin' +One of your old favourite songs from way back when +Golly, gee, fellas +Find her a vacant knee, fellas +Dolly'll never go away +Dolly'll never go away +Dolly'll never go away again"; + + // Here we split it into lines + $lyrics = explode( "\n", $lyrics ); + + // And then randomly choose a line + return wptexturize( $lyrics[ mt_rand( 0, count( $lyrics ) - 1 ) ] ); +} + +// This just echoes the chosen line, we'll position it later +function hello_dolly() { + $chosen = hello_dolly_get_lyric(); + echo "

    $chosen

    "; +} + +// Now we set that function up to execute when the admin_notices action is called +add_action( 'admin_notices', 'hello_dolly' ); + +// We need some CSS to position the paragraph +function dolly_css() { + // This makes sure that the positioning is also good for right-to-left languages + $x = is_rtl() ? 'left' : 'right'; + + echo " + + "; +} + +add_action( 'admin_head', 'dolly_css' ); + +?> diff --git a/src/wp-content/plugins/index.php b/src/wp-content/plugins/index.php new file mode 100644 index 0000000..4e6c07c --- /dev/null +++ b/src/wp-content/plugins/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/404.php b/src/wp-content/themes/Broadside/404.php new file mode 100644 index 0000000..be7339d --- /dev/null +++ b/src/wp-content/themes/Broadside/404.php @@ -0,0 +1,5 @@ + +
    +

    +
    + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/admin/css/admin-style.css b/src/wp-content/themes/Broadside/admin/css/admin-style.css new file mode 100644 index 0000000..7304476 --- /dev/null +++ b/src/wp-content/themes/Broadside/admin/css/admin-style.css @@ -0,0 +1,220 @@ +/*-------------------------------------------------------------------------------------------*/ +/* OptionsFramework Admin Styles */ +/*-------------------------------------------------------------------------------------------*/ + +.updated { + max-width:764px; + margin-bottom:0px !important; +} +#optionsframework { + position:relative; + z-index: 0; + max-width:780px; + background:#fff; +} +#optionsframework p { + margin-bottom:0; + padding-bottom:10px; +} +#optionsframework .section { + padding:10px 10px 0; +} +#optionsframework .group .section:last-of-type { + padding-bottom:40px; +} +#optionsframework .section .heading { + padding:10px 0px; + margin:0 0 15px; + border-bottom: 1px solid #dfdfdf; +} +#optionsframework .section .controls { + float: left; + min-width:350px; + width: 54%; + padding-right:2%; +} +#optionsframework .section .explain { + max-width:38%; + float: left; + font-size: 12px; + line-height:16px; + color: #777; +} +#optionsframework .section-checkbox .controls { + min-width:25px; + width:25px +} +#optionsframework .section-checkbox .explain { + max-width:93%; +} +#optionsframework .section-color .controls { + min-width:125px; + width:125px +} +#optionsframework .controls input, #optionsframework .controls select, #optionsframework .controls textarea { + margin-bottom: 10px; + width:100%; +} +#optionsframework .section-radio label, #optionsframework .section-multicheck label { + float:left; +} +#optionsframework input.checkbox, #optionsframework input.of-radio { + width: 30px; + float:left; + clear:both; +} +#optionsframework .controls .of-color { + float:left; + width: 80px; + margin-left:5px; + margin-right:5px; +} +#optionsframework .controls .of-typography-size { + width:80px; + margin-left:5px; + float:left +} +#optionsframework .controls .of-typography-unit { + width:50px; + margin-left:5px; + float:left +} +#optionsframework .controls .of-typography-face { + width:100px; + margin-left:5px; + float:left +} +#optionsframework .controls .of-typography-style { + width:80px; + margin-left:5px; + margin-right:5px; + float:left +} +#optionsframework .of-background-properties { + clear:both; + margin-top: 18px; +} +#optionsframework .controls .of-background-repeat { + width:125px; + margin-right:5px; + float:left +} +#optionsframework .controls .of-background-position { + width:125px; + margin-right:5px; + float:left +} +#optionsframework .controls .of-background-attachment { + width:125px; + margin-right:5px; + float:left +} +#optionsframework div.section-background .controls input.upload { + width:47%; +} +#optionsframework .controls .of-radio-img-img { + border:3px solid #f9f9f9; + margin:0 5px 10px 0; + display:none; + cursor:pointer; + float:left; +} +#optionsframework .controls .of-radio-img-selected { + border:3px solid #ccc +} +#optionsframework .controls .of-radio-img-img:hover { + opacity:.8; +} +#optionsframework .controls .of-border-width { + width:80px; + float:left +} +#optionsframework .controls .of-border-style { + width:120px; + float:left +} +#optionsframework .hide { + display:none; +} +#optionsframework .of-option-image { + max-width:340px; + margin:3px 0 18px 0; +} +#optionsframework .mini .controls select, #optionsframework .section .mini .controls { + width: 140px; +} +#optionsframework .mini .controls input, #optionsframework .mini .controls { + min-width:140px; + width: 140px; +} +#optionsframework .mini .explain { + max-width:74%; +} +/* Image Uploader */ + +#optionsframework .controls input.upload { + width:80%; +} +#optionsframework .controls input.upload_button { + float:right; + width:45px; + border-color:#BBBBBB; + cursor:pointer; + height:16px; +} +#optionsframework .controls input.upload_button:hover { + border-color:#666666; + color:#000; +} +#optionsframework .screenshot { + float:left; + margin-left:1px; + position:relative; + width:344px; + margin-top:3px; +} +#optionsframework .screenshot img { + background:#FAFAFA; + border-color:#ccc #eee #eee #ccc; + border-style:solid; + border-width:1px; + float:left; + max-width:334px; + padding:4px; + margin-bottom:10px; +} +#optionsframework .screenshot .mlu_remove { + background:url("../images/ico-delete.png") no-repeat; + border:medium none; + bottom:4px; + display:block; + float:left; + height:16px; + padding:0; + position:absolute; + left:-4px; + text-indent:-9999px; + width:16px; +} +#optionsframework .screenshot .no_image .file_link { + margin-left: 20px; +} +#optionsframework .screenshot .no_image .mlu_remove { + bottom: 0px; +} +#optionsframework .reset-button { + float:left; + cursor:pointer; +} + +/* Bottom Section */ + +#optionsframework-submit { + padding: 7px 10px; + border-top: 1px solid #ECECEC; + background-color: #F1F1F1; + background-image: -moz-linear-gradient(center top , #F9F9F9, #ECECEC); +} +#optionsframework .button-primary { + float:right; +} \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/admin/css/colorpicker.css b/src/wp-content/themes/Broadside/admin/css/colorpicker.css new file mode 100644 index 0000000..8f66acc --- /dev/null +++ b/src/wp-content/themes/Broadside/admin/css/colorpicker.css @@ -0,0 +1,177 @@ +.colorpicker { + width: 356px; + height: 176px; + overflow: hidden; + position: absolute; + background: url(../images/colorpicker/colorpicker_background.png); + font-family: Arial, Helvetica, sans-serif; + display: none; +} +.colorpicker_color { + width: 150px; + height: 150px; + left: 14px; + top: 13px; + position: absolute; + background: #f00; + overflow: hidden; + cursor: crosshair; +} +.colorpicker_color div { + position: absolute; + top: 0; + left: 0; + width: 150px; + height: 150px; + background: url(../images/colorpicker/colorpicker_overlay.png); +} +.colorpicker_color div div { + position: absolute; + top: 0; + left: 0; + width: 11px; + height: 11px; + overflow: hidden; + background: url(../images/colorpicker/colorpicker_select.gif); + margin: -5px 0 0 -5px; +} +.colorpicker_hue { + position: absolute; + top: 13px; + left: 171px; + width: 35px; + height: 150px; + cursor: n-resize; +} +.colorpicker_hue div { + position: absolute; + width: 35px; + height: 9px; + overflow: hidden; + background: url(../images/colorpicker/colorpicker_indic.gif) left top; + margin: -4px 0 0 0; + left: 0px; +} +.colorpicker_new_color { + position: absolute; + width: 60px; + height: 30px; + left: 213px; + top: 13px; + background: #f00; +} +.colorpicker_current_color { + position: absolute; + width: 60px; + height: 30px; + left: 283px; + top: 13px; + background: #f00; +} +.colorpicker input { + background-color: transparent; + border: 1px solid transparent; + position: absolute; + font-size: 10px; + font-family: Arial, Helvetica, sans-serif; + color: #898989; + top: 4px; + right: 11px; + text-align: right; + margin: 0; + padding: 0; + height: 12px; +} +.colorpicker_hex { + position: absolute; + width: 72px; + height: 22px; + background: url(../images/colorpicker/colorpicker_hex.png) top; + left: 212px; + top: 142px; +} +.colorpicker_hex input { + right: 6px; +} +.colorpicker_field { + height: 22px; + width: 62px; + background-position: top; + position: absolute; +} +.colorpicker_field span { + position: absolute; + width: 12px; + height: 22px; + overflow: hidden; + top: 0; + right: 0; + cursor: n-resize; +} +.colorpicker_rgb_r { + background-image: url(../images/colorpicker/colorpicker_rgb_r.png); + top: 52px; + left: 212px; +} +.colorpicker_rgb_g { + background-image: url(../images/colorpicker/colorpicker_rgb_g.png); + top: 82px; + left: 212px; +} +.colorpicker_rgb_b { + background-image: url(../images/colorpicker/colorpicker_rgb_b.png); + top: 112px; + left: 212px; +} +.colorpicker_hsb_h { + background-image: url(../images/colorpicker/colorpicker_hsb_h.png); + top: 52px; + left: 282px; +} +.colorpicker_hsb_s { + background-image: url(../images/colorpicker/colorpicker_hsb_s.png); + top: 82px; + left: 282px; +} +.colorpicker_hsb_b { + background-image: url(../images/colorpicker/colorpicker_hsb_b.png); + top: 112px; + left: 282px; +} +.colorpicker_submit { + position: absolute; + width: 22px; + height: 22px; + background: url(../images/colorpicker/colorpicker_submit.png) top; + left: 322px; + top: 142px; + overflow: hidden; +} +.colorpicker_focus { + background-position: center; +} +.colorpicker_hex.colorpicker_focus { + background-position: bottom; +} +.colorpicker_submit.colorpicker_focus { + background-position: bottom; +} +.colorpicker_slider { + background-position: bottom; +} + +.colorSelector { + position: relative; + width: 27px; + height: 27px; + background: url(../images/colorpicker/select.png); + float:left; +} +.colorSelector div { + position: absolute; + top: 4px; + left: 3px; + width: 21px; + height: 19px; + background: url(../images/colorpicker/select.png) center; +} \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/admin/images/colorpicker/blank.gif b/src/wp-content/themes/Broadside/admin/images/colorpicker/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..8368baeca7263142e6ba23202c65ad09e28a33d0 GIT binary patch literal 45 xcmZ?wbhEHbWM*JyXkcVGbLNb=xVYj^7DfgJMg|=QAOOiQFtPX)NU}0m0|3tj2Sxw@ literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_background.png b/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_background.png new file mode 100644 index 0000000000000000000000000000000000000000..8401572f1939a1a24c1963513573b0194ad36ee0 GIT binary patch literal 1897 zcmY*a3pATo9RCoHhLk=v9+hya?P*IB^(tbYgf7-$bhEY|(I?UtUPi9vs#R ziy#P&{yr@fLG&2ly2iu^RFBrRRp1Ms>i=nK7%MiF8HO#xOG2 z_n6)YVr)vMq5IN*f2sWccT3)gRvu2oXh6my%^v}*O;ra5-< zrfBywZT3aSz8bWP1#@=ep&&&2r%2Xx zddEiY1@l}|b6YxdaO6Q`RJq3)wtKZi&2z5yNzot36|pnd_gApH!?MH9gq?hIkpDQ? zoi#k4#OM3Qvsl*nW+NM0+h-~TfAN~J`Np!FYfHA<4F{vc3Gd`y^@%F1#Ljo6xgBMf z>q*?e(2(gjbtEPC06P3(T2t>_N`opfT&(A|#nr9ubq;Roe8EGc50&a+@Ca&D8N&V5 zfWzVZ*wTW^c5k?}vCRiBX+63NTRRx9IULPb=kLtbG7G2PR9LSNtF=j!&s8JxkH+I- zofPjPqCAy{x*V^kY%4z8I+~=}5Ut2+RB9hQnF-=Yy8f)_*S6oz?C#RkmvpMq7QP(o zbZ!bUKi!a-F8i&JTjM>>TAUAmd?)cz-HnW2PWdWk#$QRa^0SMsE*Ei8-<`C&zPP^R zdHWR`(Q|r$)T?{(gtteqpleg1llyjZ0ZVLw8leHw(a;G~vcN1Y>6s-e44f7NN&vzO zSzky!K z<_U2aPpuI;9PaSb&;Ej+#b@gJvw)$&8ZCQ!O0HDG-5Ryk0-~ziB-tPWKJK=>?ocx|gRt#KYNSCK| zmrMW=4om~tMIU%ONCY$t9RcY(kaUNR#1=v%^?pW-QzJnZCkAr|iCQDD687K8FZ`q_ zi57h%KMX!lwtAe@@x)l}04zNB(A4Qum^BC!^1cdZ=xa=ei3OvQ+5@W08>NszykE}f zv?z;H%6*$BjvuB;iP6rpc{~#`#C$juv62eaJ-(#wzbS@&`|x8xR0#<2lFZ9l84oq~ z)RtYb1_uH_On@$HmKKWl$={|vFVC?D2S?ere)+Ii3ZCYJc1u{wg0CgRowk%p6z-vm z25al~YDe{K&MKf#`#$i4g$_`C3_gpv%r}IrbhdU7n7ws`iL~u?7mnTC+5f*Z3oqn> z!F~y5)zR3`!AmrFCO)o-qINJDjGjk AumAu6 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_hex.png b/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_hex.png new file mode 100644 index 0000000000000000000000000000000000000000..4e532d7c65393fe56d7463e1da3faa591f03de84 GIT binary patch literal 532 zcmV+v0_**WP)h+v*8l*BQUCyPMF0TmW&i*=2LJ#e`2#0~ zRsaA2nn^@KRCwC#n6YcZKorKmBnM{5VnN~}9ReD%Nhj%)e@2UckI?wn+*F*3;85I( zxENdy>|*I~AlHjh(Li4w_e~$k1>TSMlH7e>k|a?SftQq0B8sB@e$Nc7)9DBRzVCyb z1b`q2c!CKbZg`U5o2itl0Sv%)yQM?b>-9{KyTHhep8?|QckHZYvzcW~5d<@9^YvHp ztN^T5E7MqasmZKO0Qfo_tQD_Cp^cRCbkSPY3PWmOrwUtP=mYq!XfhrH$n!kUb8V{2 z2zJb@O#p!BU0T}j_bo$O28aMq#VY1=a}K4HFOx|FxU3(vcdlc4{G^oH07wS|@(ugl zu}h2#{EpG-rzyuU{=%QDL_0lRX0#t`gyJhJT=_461{Fr^gFFz2D& z?#3}Quw7Y-ZXCZam(0MPhC`Q9H4*H#%p;?>f&5sn>j`t-77IF5&!dq`sa#4$MD?Up z1Z7s}QYx2H{U_Ho#}=1TQ65E?QgHyga(l)Q>~phW+cE0rF`i(%vV0^K=++YE{0sm& WpVhv@?^YTB0000h+v*8l*BQUCyPMF0TmW&i*=2LJ#e`2#0~ zRsaA4P)S5VRCwC#nn6n&K^TU=-E6Jmny{kAgHdYMnDn-IF?jG$4BqP9gMtMis0Dw8 zAV{dW=nt@ez?%dVDIU_2gRqI_5Em~-k8ZNXWV1btZa3MO4c19#+Wqh_Zf2N=;hoLQ zLzrMN$n!kVR;sFUJkQ_V-BE`=I5@}w0L!vKVQ~Q9@px!O=Q!>KBXRE#RaJ4J1Hkq5 zH74#rAmB*#N9cI-&+9?5X8Zj7{P_5|^XQH{u=yKC6vb33b$ff;+uIw9#SFtZ zJw0vcV;BZjbSqURlaVB;VRjAxerlS1&~!NI`5fVIQh?ryB; zCRH|X*Y~znJyFxHP3oeqGU3e&1O9;`*C3*9*=)dr#lP& zn<{s4fg0h-$-2z|0F15BXa1p~(a}*s5CEWXbyYJAdmo&O{#YpD48vSpURq~=HZW^z zYn4ic=lPM5k&}~?zi?i#P(>mU00>*Q=~G~A=!rx^QIxK(E{0+5@9$+<_W68FXS3cg z9in$e&*$@{Qpx;xe0;nc^Q+Ji{h4jrtW!Iut3V(?BD!Pgx=!e-({Wy>6NMqMNDj~M~n z)!GO=qQA@t;I7t2;1S(50Ji7R-H^E z;Fxt5y+yKp{*YWFP<>kUy}douSY2JE!wBfrD*F4hvVtJ@ z_xH_*L>mEXHkOx{0bprq$rczQjer>#REvv?4Nu550(w0tO-7)tlOusf;N935Ms)0f sary=%7ro}V>f{=MmOlY4Yuc{?08g~^-7;vm)Bpeg07*qoM6N<$g2&OnRsaA1 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_hsb_h.png b/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_hsb_h.png new file mode 100644 index 0000000000000000000000000000000000000000..3977ed9f21e3186eefd37b198a7cc3f8de6c69cb GIT binary patch literal 1012 zcmVh+v*8l*BQUCyPMF0TmW&i*=2LJ#e`2#0~ zRsaA4dPzh1Z?xtc9W|d^8%pySrl!Jsywq01yZSfWhDafa5q;(RrSK!_25Mnz_o6R-Q8VL6wU6+%F4pRf-Q$MI@dS4=mAHh)9FT|@$~eByOWcX z!Cq-b_?cFRh?(5s;V}d2mk4K?&4-6bIBX^iheAZrO{%IS z0YIfv$z`+F(Rl#Sb=`U9^73-C*$nbL0E`QQVHk#CxMmUxbFA4+=9etvc4lVg#bpWz zInPX|)2gcCza|_G>$(mIxn`0I%UGFA#{CZCigR#qP_0(EKmY)WdwYgq^vWbf{@jo* zE^s3|JL^F2F_(#niAW>@0HNVwp65~TOfr++9V?g3RwW5{t@J$$rn?^>GJgkDFu7a~ z0J4_L6actnGO6o2dKt1Tm&@fyBr-HKgb=#EzCJrUYqeSQ+^ z@p#6tJ$H`nQONIahe-%W5W9r2sHGI!dV# zn9t`wEiLs)_< zqd%&uZ8MDk?wUrxmh*4WOQjM3lu9KVI=x0fd;SdeWoPH>w{N(;v%SrL5$IU%>swn} z&Ykoc0rTVI;o%`}Y;JDa?=Z*_rV$WDQ4~e15wPVDEf~Cg-q^s9M@L8IPO6Q7wKmq* z*8yN{ZOu_IR2l)>*Xq^PRofnVjezF$`JY}R@TxaQ3XQ;rsVRc!#0$pj@kcMZ?m6r9 i8Ue%TbFitZe+B@uIz19ZnQ%P-0000P)h+v*8l*BQUCyPMF0TmW&i*=2LJ#e`2#0~ zRsaA58A(JzRCwC#nn6h0U=+t+YIIeCZ8N0REt9otS9j@(Ajt5v?W7gKqX!Ee2!alT z*{jEbDCoQ>c=RY9Hf%t4)YgLZFxlE#lxYuB4{FKmYLj+{XqP4>>D<09+4?7kkiL)i zCw=+8yx$khX0s6l0a_EoFgQUFr>Ccyv)*xTdJ9d`TAin3TNEXx9h36D@HluRbgX0xZi|M`m->2&(y;zATt zUtgb2rxE!!7z{#JcW)%jt^)w9^msr~9*-v;i!CfHcs!of)m5L*$Fi&_47G}h;x`gy z*8u=lD!{P5zCN4HW;7V?-@EsXVF2Ld*VWaPbRbERt*xy_qcI!~ z@9yrBBxyFAg#ir>4MLasI!M{&seDmP)0v*(}F#R;yKycq%MgFbV-Kmy2at z6btolO5PRDr@!4Z$8p@>z3aEPu8Q|{ty*UoMyqW#X);+#XFW~m>+vyeF`IXyQO#NJ zbh~RrKwCuMN$DHKAJ?Z?3}IWn844lt{j9sYMg;ybB7j=*MBv)`?T7$s$rFKV>l!5j zc-gjXW@g6ebar)h4ST%+u)Mq+iA1Vh>;hK~hoekI)rdfi2>c2WDBo(VtgHlsL7oWA z&(HHjpvo(k$QAFtqAp4OL_n^=BM3sifqK^6t;x3f;LDd95%>>@z}MsBc8bzsTdm2i z6abo=n^j5#I^FK)FJH<8eAw7fFA-2=n(8G26ji+};bGxL%+uSO z+~1duRQyKZk=2THHElK;WdhRY=jtT_oYMBcdWk?qZ;mP?0uS5U5n4xHFiI<+dadUb l@49-4fb1urmzm6u0RTq3k6f>52*3aU002ovPDHLkV1hB)7U=*0 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_indic.gif b/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_indic.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9fa95e2825eadd2d779ad270a71eddb94f94748 GIT binary patch literal 86 zcmZ?wbhEHbRA%60n8?6jX=xc99sU3Re+C8y#h)yU3=B*RIzTo9NS=X7-KS;c>A7MD o3b%A+G;E1+{h2#gG;NlJnPP?C%HXh+v*8l*BQUCyPMF0TmW&i*=2LJ#e`2#0~ zRsaAe`AI}URCwC#eanvINRp%)C+D=l9`;ZBJNpmnIHzu)uwC7iS()Jv(>)Z8B@~LP zskuk>0)q)45bjPo-NPtU5fxQ4Hh2FoGyC6W_AoQwfBXI$J?{4V&pZ36_xa*}$2NB_ z?N>dXcGqbk;n!C5)IX`whhWfkj zZ|>f95RKQ5eRkk%JDA36{(L^|`Fz^r@vz6^;rIL9ZnvA=Za4q_{k#48>#z3DfBw_{ z_P4+JPe1)+-@bjbFYphQerW$@W^I41;efT)R*v)1=Z=959-jt1_`&@upMCjUJi)=X zZ3jN@=LPT>91D+m>_@LR0MSMOasXBvK!V70fXLnL`FvXMy^X(*$D=(SkL`ZH`|Wn~ zkB^V`U4-G2W0=k|C!+Lzw@%8BKH^%dX*CvOT6`fP)f zassgc-|0lP){Yay7eeq^3=*3Gi}%Ch;Wl_|YMZ-TYi;YjTWhWFe_QW81Qtc5BU0_Z z2hjF&ege^mQag}*k5GO8+nyWj7&|86@4`q!^t?O*@;m;Lg~FZRnXzxda$U+wvP z+7wtYFe#9V5hes@A%dkRUI0naO%=FdBnp6(0n6d>MnTj$n(e?rfG~iLWBd_>PP8__ z(+9A|F_G@f%zN*~U~+eRJRSpB_Iy5l0P1$T_1o=c_xpXj-|zO@Z@(SD`t{de?d#XC z{@ZWAS?_%ctnrWeB5jo-Tan(zp!(!Hwt(W~_YmLFL{z$fE(2EZcmpK$gwifxBAqk< z)S1%EY|t43$S^{U=lkEjzcvK<)_Xr976J=3)%||AkB<-k@#9DT`1ok|`@Mbp_RYrc z_wV2RcDwx!tSC}c0j20?B2J@7O$62q4+}j+4|{!;|f;HN%S$BYFU=(?1YqZnxX`weR1*x8HvI zt$loa46W6E{P@vsx0^j4k7j0CV^xJU(PS$Csx64?h>ko+AS#hgQI*m}UeHSh5vfPO zA^;(cb>1(~ONaPoV1eG+M3m|Xq(O%xdSQebRJd!Zw!gNCEO10D`}p{r}OtL@{= zV8RG>h-;v}CicB#dposZ1ly4M2uuTL=I+}7*7N!FT~pcP@j#HZ0V)L60MfT_-}=YL z$F}RR0W7~z;S5j8T1ZlJpJjv*IO#YtxCP#iM^Tl9J!WPC6pj~IlHK`);)dP8`=B*& z@|GBMIz&rh=&GIaY^T5z{XL)0wnwUVzu()gw@y@uk3T*>+Q-L- zJsywk@p$wR898E2y`L;f(beq*jpPB?BI=8>G2Ta>d=YsZ_H$tecqGu3e>7;3DU(1p z9B$TB+g>6u0AeGNz74CO|Ne7|WUvh_gp)uAk7^j7M`Y@~AA)_?R(8MN{eHjq=kvJ@ zQ*;RVeVcv%{=MJtcY8b@N2I)Htcg*Wfhq%3OCnEbvWg7sqL+|@cJIgWs>kEgwg`Yt z07iOHl)*Iy3>9V5F3}^z>mkbZVghE~cjdhi>4p^L{_7V1g z0{~9$y2|#@IR}5r_7lhDm;p?O=Nm?-=ks}Ndp@7r-i>fXsgVf|opit72e{e}uC_<3 ze!t&+*I{i3zrMzkV}VZ$=b^Z6XxMkaV@to^kUt?gOiHX_yzFuUDu4!)P~G;6yK zYmy2B5UFUDMT!U@6`(~C#gvdIz?d>lRkkN0kpTrtM?EY4GI*4ZLrNP$9-|f75~#Nb zOr0$S1k=z}<8`zYAPelz=d-zc+go3(_uh93+`w+I+wImzltWwMcDwb*5lkG3jO_wdqZ9jWl)*V=c}FA~)&ti0CJ~Dr^iBXffP~R&SPB5P zk;Qd)9|9gb8XELq4L!D@k-BTGlL0#{4l~;jSWyY2Ql{}NA_-$sQ6cInPqdUNK&Xt4 z$}<)KuAwo>CTG?M#Q+O5*2%lVY!6INNsR!q5v3Sp+rHmG7=ouOcYWVy8--@pSbKzW z$Qax0cI%+Yd}t~J>HzEb?q5`aGy_cU-Jyx^28JiFpp}yqF{06U-$?Jt0QFr%4X^4s zz@+SkVKaau-vEe*TR$9lELQKj3_B|hTznCg`YAOA)%vI%_M)-)7=n(`l2Fvikxx=9 zmrOWHLPMRA<}qOtT)Z*11_*SR;dMcU+=yoYm?Ie&`U&Ze#JfWq%%Hyxt;O3;g`=tO zcn5Ez|oZXz`zEpBkq&_=+L&bCupL-Q2CW&kd<8#+*)@B3`1 zw?OnC`iqL%r^5NruvK8GnqBlF#C{)lW?#<@f+rm!k4CLptk zkhckqc|f1a`F3uOqv)dC^@}aQ`_lVNSOXUw6}aq;qSc^y>Aa)efSL*b#~KS~*Elxt zJ)ciEvxd(2*msER;h+PE+HNHr8R+n-(6Zn}g$nLxjWzR`5-?;X7LHVxQc6UVBBML5 z20?MIYK+QRhoW%j=#|y-R<@yD!p{TkWUQk&Dv4U*06^#cAX;@O=?owqR7li#+BOVQ z*ygxx9CMF!BTD&Bmm2{8Y&XmzRyA4?I6QI9BY-t^j6hR`$54hS9|I$qDne(VQ}j1_ zq_ERrOk5zEMC$9Lt2#_}IBlcH9lWYez3T_v!G4GHjxDBEfy6aBu$3yEJbcTV%9=ZYea32lYNVH5U(35x+esFTA!q8WhG zR3yUag{CM(sYVfNV=CMu4N_raTHLAZlr0Xxj;wG8Q^#h(;hBw$5~8%7N;*aAi)w%+ zz(q7UiAE4@xJjnVxq8&SQooMfT<;xftsA)MWD1~)=NZVo;c)|WPeee5Esyp z76aDB$fvqcp?J*M9rv)~zAefMcQ9i~$H{r`P#ff|aP()5$EV1K@1t_ih9IUM`wlHL z7TOIHx|>C~3pkXHQUD}ybIC>dR!vc+5cM-HWr2`yLF@1qw8K;%ADU>`3PP}B38!O* z2H?Sng+SZT?|M8Qk_y2>K#k>)m7b^$X%g3qfW&W{gOmzOU?MRe3Gr7b&w>WL8F)OP zK<-O-O!E^;Jn22Q5Qa{oNv4+2UxVnw`x)B{KtCq>+fidVHunv>LV6oE!Wc_z_JhZ2 zQfr5X0MwU?F=Fxl2AE8gW1?uodPj18T21dz?M!U?6F8voSE-<|leUuhfL4NOfG^{{`*g;9Ii#;wXD zqHxVoSrkz;o9QY7&qb``F_LWvI?e*+Hgwqc*E*MeMr0y7MBR6kZlD`>Bbx!2!>mWF zYa7*)+oG*PN$%w zt_I`hqr(BbFN|&{O9FJA;WU3`WguwjyuPlnqS|3}qD4ze6B(cdV6vbH%_rAI2SY}S zY+AbLaPVl!MfDn_*{(EJpsTPYx$h^mEAX(!!X7N5tqa{DEsnzTpw~T`;e-pv{x7sL zIC>EcvPtTz;$7JYYC6@dcPg_VJkduUXe@s3rO3=n14W{oD9@FnPLT&oF_*|g&riAv zCRw2KJ{;@;Dh4#WJS^^!h{csZS0ZrmD5QuCeu>LxV$!KAS z`H-jVmmK%JRu}1O-|O z7+xSNM5^L`EK^p5$O_SJIMFFYCWnc#ylAe&+{tl+f^A8>2Q4w7UYgCIi6U3fOO*jI zvJ_m@1fwZk(w|a7Kg#@qiKwRR1}fnoSlDg9P$tush(^Qr;^#*O2jD>foq(w*5Kp21QRz;xKiP)JTq(ZivUJ*4M*c&Cf4zNXh|6Nt-~rcO>{7*yE3$B9wB!nfU|ze z{P2BfRUoy}>nEok=`yn$;5ByL4|g3`qG1~2DfxpEp?BR$H#)5rsCwLwj9Ad1royOw zX7;zB)0((Lf>*>lYLCP(Qx*f$pXzwvMm`tq$3{hH>B8eg2#Qo5M81sx&8;$+DRM&~ zMl2&g3Zv9UZN(Us9Hzx%jnG)2AD6_c@yGqV)nb|PUki!>WV34@cwr5ny7 z(HuR233QXqz{4vm4*>N)!qWzTI%%E}$=dJbmy*VcBF-$DT>!RdBd9J08OhXf6s1zg zR_=NO2i-(w=`{Jl1;w+C5Q%?a#i6a zja7(ZA^4Jlakgev*2|@`J@>}Y?4Xo-mZj-s(Cnf;k>b6UyiU6m!5shV038|se`$CO{+KGj^ za@UFKPL>5N{9){IQ4R5;%_zdMNSE70)QZ5B+YQA`Q1)f9kCm-9qk7k8(QF|zRE>U- zKxc~~68aWQm~bWR#cfMeCU|k^2{^_Myo$cqhNGe`S{-)2q0{9;#qYqYA5QdltBQAa z#Ixoz5L>mEPLO8ShHK<9?zA z1`F4xV^B@;6osgYa4|~leCOELvcjZ|IMhbL%w(0($)d36sj>n^s?NhTtH;JM@ULkA;sr6{D{jt5Q3RN;hh)t)xB}*#`I>!uf;&-Faq$lBFOU z))4qYkGaYo8JJN-6Cja}JdY#$VBmr`L6@g2lfXX4XQN{BrE-AVvlSg#Vko;ID+Eu) zyNXH)C}kICMt4HPT_}$uqG~HnB3(3%KBPTiKa@bl+2f$Dz;1}FhmEKUZ`F$>9TWD0 zi_G;zjRSm2bG6ono8MY%4(|IfO6MA@+NPY$Jgx%GmB0>c35%wD1={RlkOno(cY!6v zdlh6LygSkzp7^1gMAnFceG358XhpzI`)*1%fqv@5A}Ci54=c4BUa=n%168d=qgILW z$+5Fyaf z$P!IaA-U)*z@3`)PFdmT$J)o@csv^YAgV3-SQSelTyQq3H5O<0C_qjDvjD0nTB#X2 zICroG8s(DRErQI{G03iPWfL$EuP=9`*9NNwo~Rae8ql0k_2hI~m#HwAer}ajV=@3n zYi0$OMiV_iscWA_HLzOEy(>5!zFu?73V#isG14yfbP_Omds|(D6;}{} z=zDcAKf5qO+l&_RH3SOwVnsiw!PK@guvWBI1PaxhCyqOfSjo0%O?C?a*+^r}<{y3v zu%ZYx=_chu@dot72InR^6xd+xfqUOjutyOpvm;)z8(x@dKbt5q74nIgH$|%|qD8&- z>UhdN5dHEc+RUQXWdG^JidUj3u2I3hV6Zr`sUV={MR1c}DJz@^@(U%Y8PFBbDC0AD zPZ*)ll9auFki7v_~b1yAh=mi zM90Qu9i^E@oe+{Y7xshHUGF&WE$V4^z1VC7$THmpls2^%qDUv|k(Ml3#C64L`?9Hw zGwF$URg6aGUrf;O==&xUJZ5DtdBKy@o>66q3ezHV1`74Xl71>vf?DXM)A6yHKQTBh z8^}r~SbeRcxnQMbhcXbZSd(clj3`RHGc`8R>ay_^E)?&P8&7MDj#il#i1(87o<=C& z7f%zQs8FFti+3onsLq9m;-c@sS9t=e*_GX>Ga&<4s}!dV?(Pt1r7*h_tG|SxOLP}6 zOAuKNHcC2SRyYIJXu6wG81Dzq8(IICR6B`SVHU@0o^tV5wZ{ZgyCk3}GG-vm<`rfW zU@sa77L8SgD}zFcdIC?MWS^Jz89U#3O@R<2mAz~?B(r#;C{k(qv%vG3=`<6QGbHt8 z+KE;H3_UK_%OHgjEo$831YlO|PAUji>H7*?bv1(-KW8HWZ^6Wg&CWNZuiFi8P63mm zIibQ*RC2Ml> zFH_-X%`L2YVJh+@vv{IeLM@9f74W>%QnT>-Cg$gHzqu#W=WIO`sE|D-QvzLqhbBiv zb;6tqE7RnoNHNhz;W`c3bTN)t)omGN`gQ5;aEZudfsw4`Ii#v&o2v;MEH7BA3ILuo zVzf;}smpuRc}bQ7P@rz^{yP=E6QNckm?vv!eP+Z`0Q`)I^(s|Trj&YbIJzjvpUzinttW-(<%rcL)9Wi)qPxDAU`B=QGa{B~ zMr;$$t4$^s%#Im;?1XwEx`ZJhI$WHsod`)QbkF3z=Hw>_7agTy{ zpY0cQMVRQLPsMuF(I5=arY2z~^9{q|axl4-BUFhB!Ofp(DK)!^_iK@(uINs+4XLb< z+sXw^mVng+1zui{GCk4OqRdTCGQ^e%b}{q0RQ_SwdPT@jD2;E$Vu@gnbXY40_6BqP zRAg&H{WsKDxMCp!M7<|ykQ>6k0UTkF#2F|7nj}cvQy(c1ehNfj%@ae?G6=r@rH|#>yg9&?4+fhiMZl z%tR+X`rPKhdRvM%Cjgt?S2`&3H10%5Xtia=XcDm)6i97N=$^_k+n6E`6J<}C9`wUE zVX(GI)LPP5q1X<3+oPGzHd&M{YB{!vSobKiODu+In{;soP}muf^w>A$q7R@lRT7|P z!k%@Mv#wI$5t2b_DTrLr4FuNh1{cc?Rim31SNE%wg2cSWHqmA29K|3)O1(5GR+oV` zn{+an3}PyJs$O)p&VuK6O1q4^qCuiPr^m~7!(}aqS7+(0K2K&?OMuNzRPs4t>+%ad z@;;d~D=AD+TC^RT1}|AuIT5jZ0?Za@ zw#&I-ErpL&J2Ko4sh@!5`3(W0tgI5b($#BbYd0hdi^vENZ8N=QSGa^^M8k#2ucemf zEM2EY$xI4FQ{{M;Qj0FG$=pExUPn6&XWsC$mF$K}_kvpD$nrI?roCSgC<%zII8V`o zXyyfQ9E)Gjq>XGLli6c~dqmHoS$0qAQ+6hFSVV;v3MGHcDN}8ko)SgrsofwWR1$46 zVQ<-Vc?C*d;YFF5>iaAJaJtA_WGB3!ze2mguJ?bufJZ#Ol!(-MV=4sA)B?RVE++Q4 zrj#nO!@Bb>j83ntAIl0>s#=gxt9({tOAYM zte*MmBwy-Y^_ebHZhJ+eO>WhL{K?s zWh$HiYvoobS!8NSmRKHe3vSyRWQZ@_+12K^%qwlHTqMeQkB%)OoyPpF#)&81F`9&welrH$>6{u?}?33s+-8X94F76wxD4njqnnm|Ol$W9& zXM7?ntk7YN3THOML_dYpSBW;otS!?(;f<%=mZ zfGZb`n*4#&wr2GDR-@nS#1^7ksJXH((kvRS*7&GRS`Jh}+f?=~FYRPv0&mi4-Gm?J zvvJGJVL^E^V+^8@O$<`IM67HwMbf0_0l30x_yv7t1)7|KDQeuK#}@;&^8SV82eL8A z>X<8jUWFP<+AN85DbP}2u{a;X@%Mf_oA$S(o4kklDK!Nyxkb)7+5nUH*~EAaJ*-)u z|BBU6l@rxseAfI|D1v*?pvO*sCo5tWouX~;-(hvuu~5-pt5{>LMU5D1u+8b)x;U{bWn@ zixoS_bmhIjSDiP zSl<4J-H;97i&1MP>MK`zl=X!x*u8jC)v@Jz5{1X=|EZj;8Rb}3swy6%d||y%c%D;X z<%C83S=GlgTB}gP3jmLvm%q!(XT2cy4Z2HT8RsQNz-U(hy%z<1N`e16^|FT<5Z(s6?j#VTsTon zCv+j|zDm~?MBhkUzpJ4xD=ELMv5FCF1wa*`T)?#mBA)?b&<c1aJ5yv7Ii& zw`g;5%eFTGI=fhwE_l<+5u_jrfR<~lcfe-xO)`&tXo<*dQIYJqtx|<5C>N=JdetX) z;xJ3*JkB!CV)W(zRX$gGsJPltRd=232Aj03tbk3?q`HzSS6lTeO-`84-dD9)Dz60> z+Ux?Tfce#^mF-g=$4az1EpD6Crj~$IeNBAHSHM$w4a55-Y6S017aXgOj{rm&aG&_v zbbKlo;)1psubrvz&B0s&mx^f1;4BRErLrH%ycnUr}i1xc5&CUZIL!(hh2Q% zVF85G$M?@|k?AL{c>H{+ImGMXwj@$S=VZlAuSDZz>MOkG?7UARP-F?H8dhbST)uG< z!K%^C=xT3K)>BF8i_z#$*_L=tD-o(3rHb2TQLIjdRp13+D1+sl!FqSlDp%v5IX1KR zE?#KMWB2aZOo25Spwjj?2I^fftq$5!4|=7?T)FV8`(!$;3Z&1t5Em}EcrwM}0M5Ww z-e&^BrF~uiYbyeJ`Q(WrcWTO3Cq^s)!3r0Of5txavt8_lKMNF-lT|rk)oAr81HO2o ztKQCk%draku>xSNOf71K!B`oTPaB*n9lUv!RxZM~$7%(XD-rkIv9hSU;RTQC-7E9m z_pA)~3P9g^PYW!Us@AN$Z{?y`0Y+$hym$e&j0)cY$}1;-^=h&guB=zD$d|} z_Zb(`yU}a`yg3zq62Mlt+}<6q&m6or<-uo2fw#utm5BUF(Xb9ITHWv9)mH{ug#2>Z zK&9)+K9#}q#er=r|KDVMK0T561VDQ6b7#P6U)~Mxt5@GENx_@c^yydbzcHKqvw^g1 zGZjC#ed)b_`TzOP{2K~q RdwKu>002ovPDHLkV1myV#+d*B literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_rgb_b.png b/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_rgb_b.png new file mode 100644 index 0000000000000000000000000000000000000000..dfac595d017e279ff670df2c816e02d922660d9f GIT binary patch literal 970 zcmV;*12z1KP)h+v*8l*BQUCyPMF0TmW&i*=2LJ#e`2#0~ zRsaA4P)S5VRCwC#nn6n&K^TU=-E6Jmny{kAgHdYMnDn-IF?jG$4BqP9gMtMis0Dw8 zAV{dW=nt@ez?%dVDIU_2gRqI_5Em~-k8ZNXWV1btZa3MO4c19#+Wqh_Zf2N=;hoLQ zLzrMN$n!kVR;sFUJkQ_V-BE`=I5@}w0L!vKVQ~Q9@px!O=Q!>KBXRE#RaJ4J1Hkq5 zH74#rAmB*#N9cI-&+9?5X8Zj7{P_5|^XQH{u=yKC6vb33b$ff;+uIw9#SFtZ zJw0vcV;BZjbSqURlaVB;VRjAxerlS1&~!NI`5fVIQh?ryB; zCRH|X*Y~znJyFxHP3oeqGU3e&1O9;`*C3*9*=)dr#lP& zn<{s4fg0h-$-2z|0F15BXa1p~(a}*s5CEWXbyYJAdmo&O{#YpD48vSpURq~=HZW^z zYn4ic=lPM5k&}~?zi?i#P(>mU00>*Q=~G~A=!rx^QIxK(E{0+5@9$+<_W68FXS3cg z9in$e&*$@{Qpx;xe0;nc^Q+Ji{h4jrtW!Iut3V(?BD!Pgx=!e-({Wy>6NMqMNDj~M~n z)!GO=qQA@t;I7t2;1S(50Ji7R-H^E z;Fxt5y+yKp{*YWFP<>kUy}douSY2JE!wBfrD*F4hvVtJ@ z_xH_*L>mEXHkOx{0bprq$rczQjer>#REvv?4Nu550(w0tO-7)tlOusf;N935Ms)0f sary=%7ro}V>f{=MmOlY4Yuc{?08g~^-7;vm)Bpeg07*qoM6N<$g2&OnRsaA1 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_rgb_g.png b/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_rgb_g.png new file mode 100644 index 0000000000000000000000000000000000000000..72b32760a5c40b7ab834d176ac588750a06f13f2 GIT binary patch literal 1069 zcmV+|1k(G7P)h+v*8l*BQUCyPMF0TmW&i*=2LJ#e`2#0~ zRsaA4vq?ljRCwC#na@w+KorMcp|EVXQK$+YM6*gzHqnN7BF59kyLV$Gkwjyn8-M%_ zE{RbNUKIZauO4)ds|T|oT-ef(s1a0_$f>a^t?r@HEtF8AJM1*eOAln2$@}v7PN(lv zVqjo^rfD!+2!cS;G+ihZOeejotBV8xi^T#a3=#mWR;yX1lO*|ym8f@!APA_W1Hk3w zB_iEkuh&r3o1~-lLnG2_dVP3!cw}V6=kpbd#Y`r1aB$FM>4rPdqTFGsf@RrABvLAs z_V)IUj*iC1$ET;KtLC7VuFaK9CiU4#0Js;$s%4Xtll%Mo+uPgi?d>#8=kxjb`T6VX zYnRih&Uxo>AeFAF`pIzskVqr~Lqpo^765pv442ErFwDvEaR>5>mzrVKEiOMUN%>sbW=d;^vxor09`ug(nG5}<=S@G^porYX_`AU~VE3z!TGDK12 zc|IHtTS-zB#k2Esx7%GV#GgQ4^p{X9P7p+z=e5~u7zO}#c6JsQ7vu3b&+`;T_4M>` z9GA&t7={6YXue?rfdBvuX|^c<5G>0+K0fLf%ChWqI(vJ2Z8lpnnM|cp%5P9_w|2W7 z>1kS1l^S-tomBpdnunPn2&bo~4-XFj(BI$hKzujU8^&M)%d(Orp*X1D81+?=O8VFB zIa!wfZPi~d9gF96vq~2P!K`gH<8pO-Jf@R=lh2dg9?y?N!gSI{gTWRNFc%T{RQW{l z*CWMo2;1uKCntz>kA*@lBG4iNxDWx@ z)`lq&7!3wLPfXOA@a^yrUm{@0H1Q<@4N1q72$V`Cvl4;&Z#A$c0u5CiPaZTH69Gx%^@W86{U8at z_Fg3dSGk-*1b!6?u~UR@?manP6sovBm$~8BD1qf>UcbEU>Hn@ zfYuw~a2Nn)W@dDT!IB76y{(>_nyMPXmk7v4umABS0u4PmVn_r&_Vpo@j@&Rtryjo2 npA4&xFA;ctuJh%cDE=M*G)vtq^hrv*00000NkvXXu0mjffA{0B literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_rgb_r.png b/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_rgb_r.png new file mode 100644 index 0000000000000000000000000000000000000000..4855fe03f8ea8d88b4f8ae625c7958eea65208ac GIT binary patch literal 1066 zcmV+_1l9YAP)h+v*8l*BQUCyPMF0TmW&i*=2LJ#e`2#0~ zRsaA4ut`KgRCwC#nL$e%K@`W|#$^*@2)1ijA*P`i*Vs!8o}|Yj_z@}|6buN87D4dl zS;)b(p0whp5G)M=FI7^gQ8aB#6dSZ+h!%w1Y;?1+hmFg+nRFn+=R+9LJG1n=PBo8cw>y;UEFPWHNyPjRb(ErY56GCrR=VBT=6aj^j{C z2Y}PlQ$)I5E>~4mPm+!{9%_-UkM*gkDWxt5LNprP-`}sZ^r|P&B!6Kv=J9woH#gVT z*4Ee8bGcj~5O6x38Xwfs)pPCb?dfMH0U$33`jPQ?{QUg<*V)k*x3{;YrDbbti|2U@V!3Kl zRCTj#GL@3+Y**KVSOqeE%ahy@p z>gUg%wKI(2q+et*WIMxri^U8lz0dD&5CLNmfmf=FKMMPvNFYqBzie+K(*3%>zd-~V zL;x2efZ8e(fs*tF5oi#B1`)uT2$WAXLZQ&n(GgA41VQBU`NhRWQ51QeZ*Fd`W2iq+ zC9AKVB^iPU{58STq)rq?Q52=WX&5rCK1rt=MBqOp0vDN#+vPH1T5ZUz6aegYJElaS z&+mUTFi^oE5)R`_1gbJke2G9!((xn$q9_`b2vmO6z?uluwCZ>gfvT~NFA}u zJ+zYaydY?bOazXPk7GMK??WM;=NX3ieRZYrsgLwvFbDv_U{E6+Um_sgKZCuSp8l}3 zB-f`^k&G`9D5zq6Vq!wyh%XUP9v_#Nm*vX%__#5MfK({RB``K7i(FY*Q5vx(0tHD@ z%IN4Q0E~=`C@okM0nKam@bIvv1z#c{ReS!&mk88!bHtDcymY$}N=F_r<$jdLkY231 k>i80YySoaVIYIa{0Hu_2rW%yutN;K207*qoM6N<$f_Z=6i~s-t literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_select.gif b/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_select.gif new file mode 100644 index 0000000000000000000000000000000000000000..599f7f13a6854d198f501588948ffcf97bf9f365 GIT binary patch literal 78 zcmZ?wbhEHbij|08)1sO8@`> literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_submit.png b/src/wp-content/themes/Broadside/admin/images/colorpicker/colorpicker_submit.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4c0825f53cc4faba8fc9e043502276765da1f5 GIT binary patch literal 984 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 M07*qoM6N<$g8ma3*Z=?k literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/admin/images/ico-delete.png b/src/wp-content/themes/Broadside/admin/images/ico-delete.png new file mode 100644 index 0000000000000000000000000000000000000000..08f249365afd29594b51210c6e21ba253897505d GIT binary patch literal 715 zcmV;+0yO=JP)C4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/admin/js/colorpicker.js b/src/wp-content/themes/Broadside/admin/js/colorpicker.js new file mode 100644 index 0000000..634884b --- /dev/null +++ b/src/wp-content/themes/Broadside/admin/js/colorpicker.js @@ -0,0 +1,455 @@ +/** + * + * Color picker + * Author: Stefan Petre www.eyecon.ro + * + * Dependencies: jQuery + * + */ +(function ($) { + var ColorPicker = function () { + var + ids = {}, + inAction, + charMin = 65, + visible, + tpl = '
    ', + defaults = { + eventName: 'click', + onShow: function () {}, + onBeforeShow: function(){}, + onHide: function () {}, + onChange: function () {}, + onSubmit: function () {}, + color: 'ff0000', + livePreview: true, + flat: false + }, + fillRGBFields = function (hsb, cal) { + var rgb = HSBToRGB(hsb); + $(cal).data('colorpicker').fields + .eq(1).val(rgb.r).end() + .eq(2).val(rgb.g).end() + .eq(3).val(rgb.b).end(); + }, + fillHSBFields = function (hsb, cal) { + $(cal).data('colorpicker').fields + .eq(4).val(hsb.h).end() + .eq(5).val(hsb.s).end() + .eq(6).val(hsb.b).end(); + }, + fillHexFields = function (hsb, cal) { + $(cal).data('colorpicker').fields + .eq(0).val(HSBToHex(hsb)).end(); + }, + setSelector = function (hsb, cal) { + $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100})); + $(cal).data('colorpicker').selectorIndic.css({ + left: parseInt(150 * hsb.s/100, 10), + top: parseInt(150 * (100-hsb.b)/100, 10) + }); + }, + setHue = function (hsb, cal) { + $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10)); + }, + setCurrentColor = function (hsb, cal) { + $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb)); + }, + setNewColor = function (hsb, cal) { + $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb)); + }, + keyDown = function (ev) { + var pressedKey = ev.charCode || ev.keyCode || -1; + if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) { + return false; + } + var cal = $(this).parent().parent(); + if (cal.data('colorpicker').livePreview === true) { + change.apply(this); + } + }, + change = function (ev) { + var cal = $(this).parent().parent(), col; + if (this.parentNode.className.indexOf('_hex') > 0) { + cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value)); + } else if (this.parentNode.className.indexOf('_hsb') > 0) { + cal.data('colorpicker').color = col = fixHSB({ + h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10), + s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10), + b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10) + }); + } else { + cal.data('colorpicker').color = col = RGBToHSB(fixRGB({ + r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10), + g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10), + b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10) + })); + } + if (ev) { + fillRGBFields(col, cal.get(0)); + fillHexFields(col, cal.get(0)); + fillHSBFields(col, cal.get(0)); + } + setSelector(col, cal.get(0)); + setHue(col, cal.get(0)); + setNewColor(col, cal.get(0)); + cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]); + }, + blur = function (ev) { + var cal = $(this).parent().parent(); + cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus') + }, + focus = function () { + charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65; + $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus'); + $(this).parent().addClass('colorpicker_focus'); + }, + downIncrement = function (ev) { + var field = $(this).parent().find('input').focus(); + var current = { + el: $(this).parent().addClass('colorpicker_slider'), + max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255), + y: ev.pageY, + field: field, + val: parseInt(field.val(), 10), + preview: $(this).parent().parent().data('colorpicker').livePreview + }; + $(document).bind('mouseup', current, upIncrement); + $(document).bind('mousemove', current, moveIncrement); + }, + moveIncrement = function (ev) { + ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10)))); + if (ev.data.preview) { + change.apply(ev.data.field.get(0), [true]); + } + return false; + }, + upIncrement = function (ev) { + change.apply(ev.data.field.get(0), [true]); + ev.data.el.removeClass('colorpicker_slider').find('input').focus(); + $(document).unbind('mouseup', upIncrement); + $(document).unbind('mousemove', moveIncrement); + return false; + }, + downHue = function (ev) { + var current = { + cal: $(this).parent(), + y: $(this).offset().top + }; + current.preview = current.cal.data('colorpicker').livePreview; + $(document).bind('mouseup', current, upHue); + $(document).bind('mousemove', current, moveHue); + }, + moveHue = function (ev) { + change.apply( + ev.data.cal.data('colorpicker') + .fields + .eq(4) + .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10)) + .get(0), + [ev.data.preview] + ); + return false; + }, + upHue = function (ev) { + fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); + fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); + $(document).unbind('mouseup', upHue); + $(document).unbind('mousemove', moveHue); + return false; + }, + downSelector = function (ev) { + var current = { + cal: $(this).parent(), + pos: $(this).offset() + }; + current.preview = current.cal.data('colorpicker').livePreview; + $(document).bind('mouseup', current, upSelector); + $(document).bind('mousemove', current, moveSelector); + }, + moveSelector = function (ev) { + change.apply( + ev.data.cal.data('colorpicker') + .fields + .eq(6) + .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10)) + .end() + .eq(5) + .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10)) + .get(0), + [ev.data.preview] + ); + return false; + }, + upSelector = function (ev) { + fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); + fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); + $(document).unbind('mouseup', upSelector); + $(document).unbind('mousemove', moveSelector); + return false; + }, + enterSubmit = function (ev) { + $(this).addClass('colorpicker_focus'); + }, + leaveSubmit = function (ev) { + $(this).removeClass('colorpicker_focus'); + }, + clickSubmit = function (ev) { + var cal = $(this).parent(); + var col = cal.data('colorpicker').color; + cal.data('colorpicker').origColor = col; + setCurrentColor(col, cal.get(0)); + cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col)); + cal.hide(); + }, + show = function (ev) { + var cal = $('#' + $(this).data('colorpickerId')); + cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]); + var pos = $(this).offset(); + var viewPort = getViewport(); + var top = pos.top + this.offsetHeight; + var left = pos.left; + if (top + 176 > viewPort.t + viewPort.h) { + top -= this.offsetHeight + 176; + } else { + top += 5; + } + if (left + 356 > viewPort.l + viewPort.w) { + left -= 356; + } + cal.css({left: left + 'px', top: top + 'px'}); + if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) { + cal.show(); + } + $(document).bind('mousedown', {cal: cal}, hide); + return false; + }, + hide = function (ev) { + if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) { + if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) { + ev.data.cal.hide(); + } + $(document).unbind('mousedown', hide); + } + }, + isChildOf = function(parentEl, el, container) { + if (parentEl == el) { + return true; + } + if (parentEl.contains) { + return parentEl.contains(el); + } + if ( parentEl.compareDocumentPosition ) { + return !!(parentEl.compareDocumentPosition(el) & 16); + } + var prEl = el.parentNode; + while(prEl && prEl != container) { + if (prEl == parentEl) + return true; + prEl = prEl.parentNode; + } + return false; + }, + getViewport = function () { + var m = document.compatMode == 'CSS1Compat'; + return { + l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft), + t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop), + w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth), + h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight) + }; + }, + fixHSB = function (hsb) { + return { + h: Math.min(360, Math.max(0, hsb.h)), + s: Math.min(100, Math.max(0, hsb.s)), + b: Math.min(100, Math.max(0, hsb.b)) + }; + }, + fixRGB = function (rgb) { + return { + r: Math.min(255, Math.max(0, rgb.r)), + g: Math.min(255, Math.max(0, rgb.g)), + b: Math.min(255, Math.max(0, rgb.b)) + }; + }, + fixHex = function (hex) { + var len = 6 - hex.length; + if (len > 0) { + var o = []; + for (var i=0; i -1) ? hex.substring(1) : hex), 16); + return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)}; + }, + HexToHSB = function (hex) { + return RGBToHSB(HexToRGB(hex)); + }, + RGBToHSB = function (rgb) { + var hsb = {}; + hsb.b = Math.max(Math.max(rgb.r,rgb.g),rgb.b); + hsb.s = (hsb.b <= 0) ? 0 : Math.round(100*(hsb.b - Math.min(Math.min(rgb.r,rgb.g),rgb.b))/hsb.b); + hsb.b = Math.round((hsb.b /255)*100); + if((rgb.r==rgb.g) && (rgb.g==rgb.b)) hsb.h = 0; + else if(rgb.r>=rgb.g && rgb.g>=rgb.b) hsb.h = 60*(rgb.g-rgb.b)/(rgb.r-rgb.b); + else if(rgb.g>=rgb.r && rgb.r>=rgb.b) hsb.h = 60 + 60*(rgb.g-rgb.r)/(rgb.g-rgb.b); + else if(rgb.g>=rgb.b && rgb.b>=rgb.r) hsb.h = 120 + 60*(rgb.b-rgb.r)/(rgb.g-rgb.r); + else if(rgb.b>=rgb.g && rgb.g>=rgb.r) hsb.h = 180 + 60*(rgb.b-rgb.g)/(rgb.b-rgb.r); + else if(rgb.b>=rgb.r && rgb.r>=rgb.g) hsb.h = 240 + 60*(rgb.r-rgb.g)/(rgb.b-rgb.g); + else if(rgb.r>=rgb.b && rgb.b>=rgb.g) hsb.h = 300 + 60*(rgb.r-rgb.b)/(rgb.r-rgb.g); + else hsb.h = 0; + hsb.h = Math.round(hsb.h); + return hsb; + }, + HSBToRGB = function (hsb) { + var rgb = {}; + var h = Math.round(hsb.h); + var s = Math.round(hsb.s*255/100); + var v = Math.round(hsb.b*255/100); + if(s == 0) { + rgb.r = rgb.g = rgb.b = v; + } else { + var t1 = v; + var t2 = (255-s)*v/255; + var t3 = (t1-t2)*(h%60)/60; + if(h==360) h = 0; + if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3} + else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3} + else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3} + else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3} + else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3} + else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3} + else {rgb.r=0; rgb.g=0; rgb.b=0} + } + return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)}; + }, + RGBToHex = function (rgb) { + var hex = [ + rgb.r.toString(16), + rgb.g.toString(16), + rgb.b.toString(16) + ]; + $.each(hex, function (nr, val) { + if (val.length == 1) { + hex[nr] = '0' + val; + } + }); + return hex.join(''); + }, + HSBToHex = function (hsb) { + return RGBToHex(HSBToRGB(hsb)); + }; + return { + init: function (options) { + options = $.extend({}, defaults, options||{}); + if (typeof options.color == 'string') { + options.color = HexToHSB(options.color); + } else if (options.color.r != undefined && options.color.g != undefined && options.color.b != undefined) { + options.color = RGBToHSB(options.color); + } else if (options.color.h != undefined && options.color.s != undefined && options.color.b != undefined) { + options.color = fixHSB(options.color); + } else { + return this; + } + options.origColor = options.color; + return this.each(function () { + if (!$(this).data('colorpickerId')) { + var id = 'collorpicker_' + parseInt(Math.random() * 1000); + $(this).data('colorpickerId', id); + var cal = $(tpl).attr('id', id); + if (options.flat) { + cal.appendTo(this).show(); + } else { + cal.appendTo(document.body); + } + options.fields = cal + .find('input') + .bind('keydown', keyDown) + .bind('change', change) + .bind('blur', blur) + .bind('focus', focus); + cal.find('span').bind('mousedown', downIncrement); + options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector); + options.selectorIndic = options.selector.find('div div'); + options.hue = cal.find('div.colorpicker_hue div'); + cal.find('div.colorpicker_hue').bind('mousedown', downHue); + options.newColor = cal.find('div.colorpicker_new_color'); + options.currentColor = cal.find('div.colorpicker_current_color'); + cal.data('colorpicker', options); + cal.find('div.colorpicker_submit') + .bind('mouseenter', enterSubmit) + .bind('mouseleave', leaveSubmit) + .bind('click', clickSubmit); + fillRGBFields(options.color, cal.get(0)); + fillHSBFields(options.color, cal.get(0)); + fillHexFields(options.color, cal.get(0)); + setHue(options.color, cal.get(0)); + setSelector(options.color, cal.get(0)); + setCurrentColor(options.color, cal.get(0)); + setNewColor(options.color, cal.get(0)); + if (options.flat) { + cal.css({ + position: 'relative', + display: 'block' + }); + } else { + $(this).bind(options.eventName, show); + } + } + }); + }, + showPicker: function() { + return this.each( function () { + if ($(this).data('colorpickerId')) { + show.apply(this); + } + }); + }, + hidePicker: function() { + return this.each( function () { + if ($(this).data('colorpickerId')) { + $('#' + $(this).data('colorpickerId')).hide(); + } + }); + }, + setColor: function(col) { + if (typeof col == 'string') { + col = HexToHSB(col); + } else if (col.r != undefined && col.g != undefined && col.b != undefined) { + col = RGBToHSB(col); + } else if (col.h != undefined && col.s != undefined && col.b != undefined) { + col = fixHSB(col); + } else { + return this; + } + return this.each(function(){ + if ($(this).data('colorpickerId')) { + var cal = $('#' + $(this).data('colorpickerId')); + cal.data('colorpicker').color = col; + cal.data('colorpicker').origColor = col; + fillRGBFields(col, cal.get(0)); + fillHSBFields(col, cal.get(0)); + fillHexFields(col, cal.get(0)); + setHue(col, cal.get(0)); + setSelector(col, cal.get(0)); + setCurrentColor(col, cal.get(0)); + setNewColor(col, cal.get(0)); + } + }); + } + }; + }(); + $.fn.extend({ + ColorPicker: ColorPicker.init, + ColorPickerHide: ColorPicker.hide, + ColorPickerShow: ColorPicker.show, + ColorPickerSetColor: ColorPicker.setColor + }); +})(jQuery) \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/admin/js/of-medialibrary-uploader.js b/src/wp-content/themes/Broadside/admin/js/of-medialibrary-uploader.js new file mode 100644 index 0000000..eaa0afe --- /dev/null +++ b/src/wp-content/themes/Broadside/admin/js/of-medialibrary-uploader.js @@ -0,0 +1,163 @@ +/*-----------------------------------------------------------------------------------*/ +/* WooFramework Media Library-driven AJAX File Uploader Module +/* JavaScript Functions (2010-11-05) +/* +/* The code below is designed to work as a part of the WooFramework Media Library-driven +/* AJAX File Uploader Module. It is included only on screens where this module is used. +/* +/* Used with (very) slight modifications for Options Framework. +/*-----------------------------------------------------------------------------------*/ + +(function ($) { + + optionsframeworkMLU = { + +/*-----------------------------------------------------------------------------------*/ +/* Remove file when the "remove" button is clicked. +/*-----------------------------------------------------------------------------------*/ + + removeFile: function () { + + $('.mlu_remove').live('click', function(event) { + $(this).hide(); + $(this).parents().parents().children('.upload').attr('value', ''); + $(this).parents('.screenshot').slideUp(); + $(this).parents('.screenshot').siblings('.of-background-properties').hide(); //remove background properties + return false; + }); + + // Hide the delete button on the first row + $('a.delete-inline', "#option-1").hide(); + + }, // End removeFile + +/*-----------------------------------------------------------------------------------*/ +/* Replace the default file upload field with a customised version. +/*-----------------------------------------------------------------------------------*/ + + recreateFileField: function () { + + $('input.file').each(function(){ + var uploadbutton = ''; + $(this).wrap('
    '); + $(this).addClass('file').css('opacity', 0); //set to invisible + $(this).parent().append($('
    ').append($('').attr('id',$(this).attr('id')+'_file')).val( $(this).val() ).append(uploadbutton)); + + $(this).bind('change', function() { + $('#'+$(this).attr('id')+'_file').val($(this).val()); + }); + $(this).bind('mouseout', function() { + $('#'+$(this).attr('id')+'_file').val($(this).val()); + }); + }); + + }, // End recreateFileField + +/*-----------------------------------------------------------------------------------*/ +/* Use a custom function when working with the Media Uploads popup. +/* Requires jQuery, Media Upload and Thickbox JavaScripts. +/*-----------------------------------------------------------------------------------*/ + + mediaUpload: function () { + + jQuery.noConflict(); + + $( 'input.upload_button' ).removeAttr('style'); + + var formfield, + formID, + btnContent = true, + tbframe_interval; + // On Click + $('input.upload_button').live("click", function () { + formfield = $(this).prev('input').attr('id'); + formID = $(this).attr('rel'); + + //Change "insert into post" to "Use this Button" + tbframe_interval = setInterval(function() {jQuery('#TB_iframeContent').contents().find('.savesend .button').val('Use This Image');}, 2000); + + // Display a custom title for each Thickbox popup. + var woo_title = ''; + + if ( $(this).parents('.section').find('.heading') ) { woo_title = $(this).parents('.section').find('.heading').text(); } // End IF Statement + + tb_show( woo_title, 'media-upload.php?post_id='+formID+'&TB_iframe=1' ); + return false; + }); + + window.original_send_to_editor = window.send_to_editor; + window.send_to_editor = function(html) { + + if (formfield) { + + //clear interval for "Use this Button" so button text resets + clearInterval(tbframe_interval); + + // itemurl = $(html).attr('href'); // Use the URL to the main image. + + if ( $(html).html(html).find('img').length > 0 ) { + + itemurl = $(html).html(html).find('img').attr('src'); // Use the URL to the size selected. + + } else { + + // It's not an image. Get the URL to the file instead. + + var htmlBits = html.split("'"); // jQuery seems to strip out XHTML when assigning the string to an object. Use alternate method. + itemurl = htmlBits[1]; // Use the URL to the file. + + var itemtitle = htmlBits[2]; + + itemtitle = itemtitle.replace( '>', '' ); + itemtitle = itemtitle.replace( '', '' ); + + } // End IF Statement + + var image = /(^.*\.jpg|jpeg|png|gif|ico*)/gi; + var document = /(^.*\.pdf|doc|docx|ppt|pptx|odt*)/gi; + var audio = /(^.*\.mp3|m4a|ogg|wav*)/gi; + var video = /(^.*\.mp4|m4v|mov|wmv|avi|mpg|ogv|3gp|3g2*)/gi; + + if (itemurl.match(image)) { + btnContent = 'Remove Image'; + } else { + + // No output preview if it's not an image. + // btnContent = ''; + // Standard generic output if it's not an image. + + html = 'View File'; + btnContent = '
    '+html+'Remove
    '; + } + + $('#' + formfield).val(itemurl); + // $('#' + formfield).next().next('div').slideDown().html(btnContent); + $('#' + formfield).siblings('.screenshot').slideDown().html(btnContent); + $('#' + formfield).siblings('.of-background-properties').show(); //show background properties + tb_remove(); + + } else { + window.original_send_to_editor(html); + } + + // Clear the formfield value so the other media library popups can work as they are meant to. - 2010-11-11. + formfield = ''; + } + + } // End mediaUpload + + }; // End optionsframeworkMLU Object // Don't remove this, or the sky will fall on your head. + +/*-----------------------------------------------------------------------------------*/ +/* Execute the above methods in the optionsframeworkMLU object. +/*-----------------------------------------------------------------------------------*/ + + $(document).ready(function () { + + optionsframeworkMLU.removeFile(); + optionsframeworkMLU.recreateFileField(); + optionsframeworkMLU.mediaUpload(); + + }); + +})(jQuery); \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/admin/js/options-custom.js b/src/wp-content/themes/Broadside/admin/js/options-custom.js new file mode 100644 index 0000000..788570e --- /dev/null +++ b/src/wp-content/themes/Broadside/admin/js/options-custom.js @@ -0,0 +1,101 @@ +/** + * Prints out the inline javascript needed for the colorpicker and choosing + * the tabs in the panel. + */ + +jQuery(document).ready(function($) { + + // Fade out the save message + $('.fade').delay(1000).fadeOut(1000); + + // Color Picker + $('.colorSelector').each(function(){ + var Othis = this; //cache a copy of the this variable for use inside nested function + var initialColor = $(Othis).next('input').attr('value'); + $(this).ColorPicker({ + color: initialColor, + onShow: function (colpkr) { + $(colpkr).fadeIn(500); + return false; + }, + onHide: function (colpkr) { + $(colpkr).fadeOut(500); + return false; + }, + onChange: function (hsb, hex, rgb) { + $(Othis).children('div').css('backgroundColor', '#' + hex); + $(Othis).next('input').attr('value','#' + hex); + } + }); + }); //end color picker + + // Switches option sections + $('.group').hide(); + var activetab = ''; + if (typeof(localStorage) != 'undefined' ) { + activetab = localStorage.getItem("activetab"); + } + if (activetab != '' && $(activetab).length ) { + $(activetab).fadeIn(); + } else { + $('.group:first').fadeIn(); + } + $('.group .collapsed').each(function(){ + $(this).find('input:checked').parent().parent().parent().nextAll().each( + function(){ + if ($(this).hasClass('last')) { + $(this).removeClass('hidden'); + return false; + } + $(this).filter('.hidden').removeClass('hidden'); + }); + }); + + if (activetab != '' && $(activetab + '-tab').length ) { + $(activetab + '-tab').addClass('nav-tab-active'); + } + else { + $('.nav-tab-wrapper a:first').addClass('nav-tab-active'); + } + $('.nav-tab-wrapper a').click(function(evt) { + $('.nav-tab-wrapper a').removeClass('nav-tab-active'); + $(this).addClass('nav-tab-active').blur(); + var clicked_group = $(this).attr('href'); + if (typeof(localStorage) != 'undefined' ) { + localStorage.setItem("activetab", $(this).attr('href')); + } + $('.group').hide(); + $(clicked_group).fadeIn(); + evt.preventDefault(); + }); + + $('.group .collapsed input:checkbox').click(unhideHidden); + + function unhideHidden(){ + if ($(this).attr('checked')) { + $(this).parent().parent().parent().nextAll().removeClass('hidden'); + } + else { + $(this).parent().parent().parent().nextAll().each( + function(){ + if ($(this).filter('.last').length) { + $(this).addClass('hidden'); + return false; + } + $(this).addClass('hidden'); + }); + + } + } + + // Image Options + $('.of-radio-img-img').click(function(){ + $(this).parent().parent().find('.of-radio-img-img').removeClass('of-radio-img-selected'); + $(this).addClass('of-radio-img-selected'); + }); + + $('.of-radio-img-label').hide(); + $('.of-radio-img-img').show(); + $('.of-radio-img-radio').hide(); + +}); \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/admin/options-framework.php b/src/wp-content/themes/Broadside/admin/options-framework.php new file mode 100644 index 0000000..c366e2d --- /dev/null +++ b/src/wp-content/themes/Broadside/admin/options-framework.php @@ -0,0 +1,389 @@ + + +
    + + + +
    +
    +
    + + + + +
    + + +
    +
    +
    +
    +
    +
    + + $value ) { + $input[$id][$key] = '0'; + } + } + + // For a value to be submitted to database it must pass through a sanitization filter + if ( has_filter( 'of_sanitize_' . $option['type'] ) ) { + $clean[$id] = apply_filters( 'of_sanitize_' . $option['type'], $input[$id], $option ); + } + } + + add_settings_error( 'options-framework', 'save_options', __( 'Options saved.', 'optionsframework' ), 'updated fade' ); + return $clean; + } + + /* + * Request Not Recognized. + */ + + return of_get_default_values(); +} + +/** + * Format Configuration Array. + * + * Get an array of all default values as set in + * options.php. The 'id','std' and 'type' keys need + * to be defined in the configuration array. In the + * event that these keys are not present the option + * will not be included in this function's output. + * + * @return array Rey-keyed options configuration array. + * + * @access private + */ + +function of_get_default_values() { + $output = array(); + $config = optionsframework_options(); + foreach ( (array) $config as $option ) { + if ( ! isset( $option['id'] ) ) { + continue; + } + if ( ! isset( $option['std'] ) ) { + continue; + } + if ( ! isset( $option['type'] ) ) { + continue; + } + if ( has_filter( 'of_sanitize_' . $option['type'] ) ) { + $output[$option['id']] = apply_filters( 'of_sanitize_' . $option['type'], $option['std'], $option ); + } + } + return $output; +} + +/** + * Add Theme Options menu item to Admin Bar. + */ + +add_action( 'wp_before_admin_bar_render', 'optionsframework_adminbar' ); + +function optionsframework_adminbar() { + + global $wp_admin_bar; + + $wp_admin_bar->add_menu( array( + 'parent' => 'appearance', + 'id' => 'of_theme_options', + 'title' => __( 'Theme Options' ), + 'href' => admin_url( 'themes.php?page=options-framework' ) + )); +} + +if ( ! function_exists( 'of_get_option' ) ) { + + /** + * Get Option. + * + * Helper function to return the theme option value. + * If no value has been saved, it returns $default. + * Needed because options are saved as serialized strings. + */ + + function of_get_option( $name, $default = false ) { + $config = get_option( 'optionsframework' ); + + if ( ! isset( $config['id'] ) ) { + return $default; + } + + $options = get_option( $config['id'] ); + + if ( isset( $options[$name] ) ) { + return $options[$name]; + } + + return $default; + } +} \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/admin/options-interface.php b/src/wp-content/themes/Broadside/admin/options-interface.php new file mode 100644 index 0000000..aa89463 --- /dev/null +++ b/src/wp-content/themes/Broadside/admin/options-interface.php @@ -0,0 +1,312 @@ +'."\n"; + $output .= '

    ' . esc_html( $value['name'] ) . '

    ' . "\n"; + $output .= '
    ' . "\n" . '
    ' . "\n"; + } + + // Set default value to $val + if ( isset( $value['std']) ) { + $val = $value['std']; + } + + // If the option is already saved, ovveride $val + if ( ($value['type'] != 'heading') && ($value['type'] != 'info')) { + if ( isset($settings[($value['id'])]) ) { + $val = $settings[($value['id'])]; + // Striping slashes of non-array options + if (!is_array($val)) { + $val = stripslashes($val); + } + } + } + + switch ( $value['type'] ) { + + // Basic text input + case 'text': + $output .= ''; + break; + + // Textarea + case 'textarea': + $cols = '8'; + $ta_value = ''; + + if(isset($value['options'])){ + $ta_options = $value['options']; + if(isset($ta_options['cols'])){ + $cols = $ta_options['cols']; + } else { $cols = '8'; } + } + + $val = stripslashes( $val ); + + $output .= ''; + break; + + // Select Box + case ($value['type'] == 'select'): + $output .= ''; + break; + + + // Radio Box + case "radio": + $name = $option_name .'['. $value['id'] .']'; + foreach ($value['options'] as $key => $option) { + $id = $option_name . '-' . $value['id'] .'-'. $key; + $output .= ''; + } + break; + + // Image Selectors + case "images": + $name = $option_name .'['. $value['id'] .']'; + foreach ( $value['options'] as $key => $option ) { + $selected = ''; + $checked = ''; + if ( $val != '' ) { + if ( $val == $key ) { + $selected = ' of-radio-img-selected'; + $checked = ' checked="checked"'; + } + } + $output .= ''; + $output .= '
    ' . esc_html( $key ) . '
    '; + $output .= '' . $option .''; + } + break; + + // Checkbox + case "checkbox": + $output .= ''; + break; + + // Multicheck + case "multicheck": + foreach ($value['options'] as $key => $option) { + $checked = ''; + $label = $option; + $option = preg_replace('/\W/', '', strtolower($key)); + + $id = $option_name . '-' . $value['id'] . '-'. $option; + $name = $option_name . '[' . $value['id'] . '][' . $option .']'; + + if ( isset($val[$option]) ) { + $checked = checked($val[$option], 1, false); + } + + $output .= ''; + } + break; + + // Color picker + case "color": + $output .= '
    '; + $output .= ''; + break; + + // Uploader + case "upload": + $output .= optionsframework_medialibrary_uploader( $value['id'], $val, null ); // New AJAX Uploader using Media Library + break; + + // Typography + case 'typography': + + $typography_stored = $val; + + // Font Size + $output .= ''; + + // Font Face + $output .= ''; + + // Font Weight + $output .= ''; + + // Font Color + $output .= '
    '; + $output .= ''; + + break; + + // Background + case 'background': + + $background = $val; + + // Background Color + $output .= '
    '; + $output .= ''; + + // Background Image - New AJAX Uploader using Media Library + if (!isset($background['image'])) { + $background['image'] = ''; + } + + $output .= optionsframework_medialibrary_uploader( $value['id'], $background['image'], null, '',0,'image'); + $class = 'of-background-properties'; + if ( '' == $background['image'] ) { + $class .= ' hide'; + } + $output .= '
    '; + + // Background Repeat + $output .= ''; + + // Background Position + $output .= ''; + + // Background Attachment + $output .= ''; + $output .= '
    '; + + break; + + // Info + case "info": + $class = 'section'; + if ( isset( $value['type'] ) ) { + $class .= ' section-' . $value['type']; + } + if ( isset( $value['class'] ) ) { + $class .= ' ' . $value['class']; + } + + $output .= '
    ' . "\n"; + if ( isset($value['name']) ) { + $output .= '

    ' . esc_html( $value['name'] ) . '

    ' . "\n"; + } + if ( $value['desc'] ) { + $output .= apply_filters('of_sanitize_info', $value['desc'] ) . "\n"; + } + $output .= '
    ' . "\n"; + break; + + // Heading for Navigation + case "heading": + if($counter >= 2){ + $output .= '
    '."\n"; + } + $jquery_click_hook = preg_replace('/\W/', '', strtolower($value['name']) ); + $jquery_click_hook = "of-option-" . $jquery_click_hook; + $menu .= '' . esc_html( $value['name'] ) . ''; + $output .= '
    '; + $output .= '

    ' . esc_html( $value['name'] ) . '

    ' . "\n"; + break; + } + + if ( ( $value['type'] != "heading" ) && ( $value['type'] != "info" ) ) { + if ( $value['type'] != "checkbox" ) { + $output .= '
    '; + } + $explain_value = ''; + if ( isset( $value['desc'] ) ) { + $explain_value = $value['desc']; + } + $output .= '
    ' . wp_kses( $explain_value, $allowedtags) . '
    '."\n"; + $output .= '
    '."\n"; + } + } + $output .= '
    '; + return array($output,$menu); +} \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/admin/options-medialibrary-uploader.php b/src/wp-content/themes/Broadside/admin/options-medialibrary-uploader.php new file mode 100644 index 0000000..296e17d --- /dev/null +++ b/src/wp-content/themes/Broadside/admin/options-medialibrary-uploader.php @@ -0,0 +1,291 @@ + array( + 'name' => __( 'Options Framework Internal Container' ), + ), + 'public' => true, + 'show_ui' => false, + 'capability_type' => 'post', + 'hierarchical' => false, + 'rewrite' => false, + 'supports' => array( 'title', 'editor' ), + 'query_var' => false, + 'can_export' => true, + 'show_in_nav_menus' => false + ) ); + } +} + +/** + * Adds the Thickbox CSS file and specific loading and button images to the header + * on the pages where this function is called. + */ + +if ( ! function_exists( 'optionsframework_mlu_css' ) ) { + + function optionsframework_mlu_css () { + + $_html = ''; + $_html .= '' . "\n"; + $_html .= '' . "\n"; + + echo $_html; + + } + +} + +/** + * Registers and enqueues (loads) the necessary JavaScript file for working with the + * Media Library-driven AJAX File Uploader Module. + */ + +if ( ! function_exists( 'optionsframework_mlu_js' ) ) { + + function optionsframework_mlu_js () { + + // Registers custom scripts for the Media Library AJAX uploader. + wp_register_script( 'of-medialibrary-uploader', OPTIONS_FRAMEWORK_DIRECTORY .'js/of-medialibrary-uploader.js', array( 'jquery', 'thickbox' ) ); + wp_enqueue_script( 'of-medialibrary-uploader' ); + wp_enqueue_script( 'media-upload' ); + } + +} + +/** + * Media Uploader Using the WordPress Media Library. + * + * Parameters: + * - string $_id - A token to identify this field (the name). + * - string $_value - The value of the field, if present. + * - string $_mode - The display mode of the field. + * - string $_desc - An optional description of the field. + * - int $_postid - An optional post id (used in the meta boxes). + * + * Dependencies: + * - optionsframework_mlu_get_silentpost() + */ + +if ( ! function_exists( 'optionsframework_medialibrary_uploader' ) ) { + + function optionsframework_medialibrary_uploader( $_id, $_value, $_mode = 'full', $_desc = '', $_postid = 0, $_name = '') { + + $optionsframework_settings = get_option('optionsframework'); + + // Gets the unique option id + $option_name = $optionsframework_settings['id']; + + $output = ''; + $id = ''; + $class = ''; + $int = ''; + $value = ''; + $name = ''; + + $id = strip_tags( strtolower( $_id ) ); + // Change for each field, using a "silent" post. If no post is present, one will be created. + $int = optionsframework_mlu_get_silentpost( $id ); + + // If a value is passed and we don't have a stored value, use the value that's passed through. + if ( $_value != '' && $value == '' ) { + $value = $_value; + } + + if ($_name != '') { + $name = $option_name.'['.$id.']['.$_name.']'; + } + else { + $name = $option_name.'['.$id.']'; + } + + if ( $value ) { $class = ' has-file'; } + $output .= '' . "\n"; + $output .= '' . "\n"; + + if ( $_desc != '' ) { + $output .= '' . $_desc . '' . "\n"; + } + + $output .= '
    ' . "\n"; + + if ( $value != '' ) { + $remove = 'Remove'; + $image = preg_match( '/(^.*\.jpg|jpeg|png|gif|ico*)/i', $value ); + if ( $image ) { + $output .= ''.$remove.''; + } else { + $parts = explode( "/", $value ); + for( $i = 0; $i < sizeof( $parts ); ++$i ) { + $title = $parts[$i]; + } + + // No output preview if it's not an image. + $output .= ''; + + // Standard generic output if it's not an image. + $title = __( 'View File', 'optionsframework' ); + $output .= '
    '.$title.'' . $remove . '
    '; + } + } + $output .= '
    ' . "\n"; + return $output; + } +} + +/** + * Uses "silent" posts in the database to store relationships for images. + * This also creates the facility to collect galleries of, for example, logo images. + * + * Return: $_postid. + * + * If no "silent" post is present, one will be created with the type "optionsframework" + * and the post_name of "of-$_token". + * + * Example Usage: + * optionsframework_mlu_get_silentpost ( 'of_logo' ); + */ + +if ( ! function_exists( 'optionsframework_mlu_get_silentpost' ) ) { + + function optionsframework_mlu_get_silentpost ( $_token ) { + + global $wpdb; + $_id = 0; + + // Check if the token is valid against a whitelist. + // $_whitelist = array( 'of_logo', 'of_custom_favicon', 'of_ad_top_image' ); + // Sanitise the token. + + $_token = strtolower( str_replace( ' ', '_', $_token ) ); + + // if ( in_array( $_token, $_whitelist ) ) { + if ( $_token ) { + + // Tell the function what to look for in a post. + + $_args = array( 'post_type' => 'optionsframework', 'post_name' => 'of-' . $_token, 'post_status' => 'draft', 'comment_status' => 'closed', 'ping_status' => 'closed' ); + + // Look in the database for a "silent" post that meets our criteria. + $query = 'SELECT ID FROM ' . $wpdb->posts . ' WHERE post_parent = 0'; + foreach ( $_args as $k => $v ) { + $query .= ' AND ' . $k . ' = "' . $v . '"'; + } // End FOREACH Loop + + $query .= ' LIMIT 1'; + $_posts = $wpdb->get_row( $query ); + + // If we've got a post, loop through and get it's ID. + if ( count( $_posts ) ) { + $_id = $_posts->ID; + } else { + + // If no post is present, insert one. + // Prepare some additional data to go with the post insertion. + $_words = explode( '_', $_token ); + $_title = join( ' ', $_words ); + $_title = ucwords( $_title ); + $_post_data = array( 'post_title' => $_title ); + $_post_data = array_merge( $_post_data, $_args ); + $_id = wp_insert_post( $_post_data ); + } + } + return $_id; + } +} + +/** + * Trigger code inside the Media Library popup. + */ + +if ( ! function_exists( 'optionsframework_mlu_insidepopup' ) ) { + + function optionsframework_mlu_insidepopup () { + + if ( isset( $_REQUEST['is_optionsframework'] ) && $_REQUEST['is_optionsframework'] == 'yes' ) { + + add_action( 'admin_head', 'optionsframework_mlu_js_popup' ); + add_filter( 'media_upload_tabs', 'optionsframework_mlu_modify_tabs' ); + } + } +} + +if ( ! function_exists( 'optionsframework_mlu_js_popup' ) ) { + + function optionsframework_mlu_js_popup () { + + $_of_title = $_REQUEST['of_title']; + if ( ! $_of_title ) { $_of_title = 'file'; } // End IF Statement +?> + + $value ) { + $output[$key] = "0"; + } + foreach( $input as $key => $value ) { + if ( array_key_exists( $key, $option['options'] ) && $value ) { + $output[$key] = "1"; + } + } + } + return $output; +} +add_filter( 'of_sanitize_multicheck', 'of_sanitize_multicheck', 10, 2 ); + +/* Color Picker */ + +add_filter( 'of_sanitize_color', 'of_sanitize_hex' ); + +/* Uploader */ + +function of_sanitize_upload( $input ) { + $output = ''; + $filetype = wp_check_filetype($input); + if ( $filetype["ext"] ) { + $output = $input; + } + return $output; +} +add_filter( 'of_sanitize_upload', 'of_sanitize_upload' ); + +/* Check that the key value sent is valid */ + +function of_sanitize_enum( $input, $option ) { + $output = ''; + if ( array_key_exists( $input, $option['options'] ) ) { + $output = $input; + } + return $output; +} + +/* Background */ + +function of_sanitize_background( $input ) { + $output = wp_parse_args( $input, array( + 'color' => '', + 'image' => '', + 'repeat' => 'repeat', + 'position' => 'top center', + 'attachment' => 'scroll' + ) ); + + $output['color'] = apply_filters( 'of_sanitize_hex', $input['color'] ); + $output['image'] = apply_filters( 'of_sanitize_upload', $input['image'] ); + $output['repeat'] = apply_filters( 'of_background_repeat', $input['repeat'] ); + $output['position'] = apply_filters( 'of_background_position', $input['position'] ); + $output['attachment'] = apply_filters( 'of_background_attachment', $input['attachment'] ); + + return $output; +} +add_filter( 'of_sanitize_background', 'of_sanitize_background' ); + +function of_sanitize_background_repeat( $value ) { + $recognized = of_recognized_background_repeat(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_background_repeat', current( $recognized ) ); +} +add_filter( 'of_background_repeat', 'of_sanitize_background_repeat' ); + +function of_sanitize_background_position( $value ) { + $recognized = of_recognized_background_position(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_background_position', current( $recognized ) ); +} +add_filter( 'of_background_position', 'of_sanitize_background_position' ); + +function of_sanitize_background_attachment( $value ) { + $recognized = of_recognized_background_attachment(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_background_attachment', current( $recognized ) ); +} +add_filter( 'of_background_attachment', 'of_sanitize_background_attachment' ); + + +/* Typography */ + +function of_sanitize_typography( $input ) { + $output = wp_parse_args( $input, array( + 'size' => '', + 'face' => '', + 'style' => '', + 'color' => '' + ) ); + + $output['size'] = apply_filters( 'of_font_size', $output['size'] ); + $output['face'] = apply_filters( 'of_font_face', $output['face'] ); + $output['style'] = apply_filters( 'of_font_style', $output['style'] ); + $output['color'] = apply_filters( 'of_color', $output['color'] ); + + return $output; +} +add_filter( 'of_sanitize_typography', 'of_sanitize_typography' ); + + +function of_sanitize_font_size( $value ) { + $recognized = of_recognized_font_sizes(); + $value = preg_replace('/px/','', $value); + if ( in_array( (int) $value, $recognized ) ) { + return (int) $value; + } + return (int) apply_filters( 'of_default_font_size', $recognized ); +} +add_filter( 'of_font_face', 'of_sanitize_font_face' ); + + +function of_sanitize_font_style( $value ) { + $recognized = of_recognized_font_styles(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_font_style', current( $recognized ) ); +} +add_filter( 'of_font_style', 'of_sanitize_font_style' ); + + +function of_sanitize_font_face( $value ) { + $recognized = of_recognized_font_faces(); + if ( array_key_exists( $value, $recognized ) ) { + return $value; + } + return apply_filters( 'of_default_font_face', current( $recognized ) ); +} +add_filter( 'of_font_face', 'of_sanitize_font_face' ); + +/** + * Get recognized background repeat settings + * + * @return array + * + */ +function of_recognized_background_repeat() { + $default = array( + 'no-repeat' => 'No Repeat', + 'repeat-x' => 'Repeat Horizontally', + 'repeat-y' => 'Repeat Vertically', + 'repeat' => 'Repeat All', + ); + return apply_filters( 'of_recognized_background_repeat', $default ); +} + +/** + * Get recognized background positions + * + * @return array + * + */ +function of_recognized_background_position() { + $default = array( + 'top left' => 'Top Left', + 'top center' => 'Top Center', + 'top right' => 'Top Right', + 'center left' => 'Middle Left', + 'center center' => 'Middle Center', + 'center right' => 'Middle Right', + 'bottom left' => 'Bottom Left', + 'bottom center' => 'Bottom Center', + 'bottom right' => 'Bottom Right' + ); + return apply_filters( 'of_recognized_background_position', $default ); +} + +/** + * Get recognized background attachment + * + * @return array + * + */ +function of_recognized_background_attachment() { + $default = array( + 'scroll' => 'Scroll Normally', + 'fixed' => 'Fixed in Place' + ); + return apply_filters( 'of_recognized_background_attachment', $default ); +} + +/** + * Sanitize a color represented in hexidecimal notation. + * + * @param string Color in hexidecimal notation. "#" may or may not be prepended to the string. + * @param string The value that this function should return if it cannot be recognized as a color. + * @return string + * + */ + +function of_sanitize_hex( $hex, $default = '' ) { + if ( of_validate_hex( $hex ) ) { + return $hex; + } + return $default; +} + +/** + * Get recognized font sizes. + * + * Returns an indexed array of all recognized font sizes. + * Values are integers and represent a range of sizes from + * smallest to largest. + * + * @return array + */ + +function of_recognized_font_sizes() { + $sizes = range( 9, 71 ); + $sizes = apply_filters( 'of_recognized_font_sizes', $sizes ); + $sizes = array_map( 'absint', $sizes ); + return $sizes; +} + +/** + * Get recognized font faces. + * + * Returns an array of all recognized font faces. + * Keys are intended to be stored in the database + * while values are ready for display in in html. + * + * @return array + * + */ +function of_recognized_font_faces() { + $default = array( + 'arial' => 'Arial', + 'verdana' => 'Verdana, Geneva', + 'trebuchet' => 'Trebuchet', + 'georgia' => 'Georgia', + 'times' => 'Times New Roman', + 'tahoma' => 'Tahoma, Geneva', + 'palatino' => 'Palatino', + 'helvetica' => 'Helvetica*' + ); + return apply_filters( 'of_recognized_font_faces', $default ); +} + +/** + * Get recognized font styles. + * + * Returns an array of all recognized font styles. + * Keys are intended to be stored in the database + * while values are ready for display in in html. + * + * @return array + * + */ +function of_recognized_font_styles() { + $default = array( + 'normal' => 'Normal', + 'italic' => 'Italic', + 'bold' => 'Bold', + 'bold italic' => 'Bold Italic' + ); + return apply_filters( 'of_recognized_font_styles', $default ); +} + +/** + * Is a given string a color formatted in hexidecimal notation? + * + * @param string Color in hexidecimal notation. "#" may or may not be prepended to the string. + * @return bool + * + */ + +function of_validate_hex( $hex ) { + $hex = trim( $hex ); + /* Strip recognized prefixes. */ + if ( 0 === strpos( $hex, '#' ) ) { + $hex = substr( $hex, 1 ); + } + elseif ( 0 === strpos( $hex, '%23' ) ) { + $hex = substr( $hex, 3 ); + } + /* Regex match. */ + if ( 0 === preg_match( '/^[0-9a-fA-F]{6}$/', $hex ) ) { + return false; + } + else { + return true; + } +} \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/archive.php b/src/wp-content/themes/Broadside/archive.php new file mode 100644 index 0000000..41f0bd2 --- /dev/null +++ b/src/wp-content/themes/Broadside/archive.php @@ -0,0 +1,79 @@ + + +
    + + +
    +

    + + ' . get_the_date() . '' ); ?> + + ' . get_the_date( 'F Y' ) . '' ); ?> + + ' . get_the_date( 'Y' ) . '' ); ?> + + + +

    +
    + +
    px;"> + + + + + + + + +
    > + +
    + + +
    +
    +
    +

    + Posted by in | +
    +
    +
    + +
    +
    + +
    + + + + + + +
    +
    +

    +
    + +
    +

    +
    +
    + + + + + + + + + + + +
    +
    + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/author.php b/src/wp-content/themes/Broadside/author.php new file mode 100644 index 0000000..a80b577 --- /dev/null +++ b/src/wp-content/themes/Broadside/author.php @@ -0,0 +1,87 @@ + +
    + + +
    +

    + +

    + +
    + + +
    px;"> + + + + + + + + + + + + + + +
    > + +
    + + +
    +
    +
    +

    + Posted by in | +
    +
    +
    + +
    +
    + +
    + + + + + + + + + + + + + +
    +
    + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.eot b/src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..1086d78dea0bae7aae6f50f2498ffe6350b717b7 GIT binary patch literal 24309 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%0DC_Q9;7 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 E+CQ**%K!iX literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.svg b/src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.svg new file mode 100644 index 0000000..f3839d2 --- /dev/null +++ b/src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.svg @@ -0,0 +1,443 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Copyright c 2010 by Ryoichi Tsunekawa All rights reserved +Designer : Ryoichi Tsunekawa +Foundry : Ryoichi Tsunekawa + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.ttf b/src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e6943f47d7efd2d94c8bb7d92323192af4134e01 GIT binary patch literal 84268 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.woff b/src/wp-content/themes/Broadside/bebas-neue/BebasNeue-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..009d3d10f220c5315d361ec880a817ead5699c3d GIT binary patch literal 31436 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 q6wqlkx7-Nl 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 o>~uts21t4lH)>=697vDW?OaK4? literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/bebas-neue/Dharma Type Font License.txt b/src/wp-content/themes/Broadside/bebas-neue/Dharma Type Font License.txt new file mode 100644 index 0000000..6b441ab --- /dev/null +++ b/src/wp-content/themes/Broadside/bebas-neue/Dharma Type Font License.txt @@ -0,0 +1,57 @@ +____________________________________________________________________________________________________ + _____ _ _ __ ____ _ _ __ ______ _ _ ____ _____ + / ) / / / | / ) / /| / | / | / / ) / ' +---/----/----/___ /-----/__|----/___ /----/| /-|----/__|--------/--------|---/-----/____/----/__---- + / / / / / | / | / |/ | / | / | / / / +_/____/____/____/_____/____|__/_____|___/__/___|__/____|______/__________|_/_____/_________/____ ___ + / + (_ / DHARMA TYPE FREE FONTs + + +EULA ( the End User License Agreement ) + +This document is a legal agreement between you the end user, and Dharma Type. +By using or installing Dharma Type font(s), you agree to be bound by the terms of this Agreement. + +1. You may use this font for both commercial and non-commercial works at no charge. +2. You may use this font to create images on the website or printed matter on papre, logomark.....up to you. +3. You may not sell this font without permission. +4. You may not redistribute this font without permission. +5. You may not modify, adapt, translate, reverse engineer, decompile, disassemble, or create derivative works based on this font. +6. This font are Copyrighted by Ryoichi Tsunekawa. All rights reserved. You may not claim copyrgiht rights for this font. +7. DISCLAIMER +This font is provided to you free of charge. +Dharma Type give no warranty in relation to this font, and you use this at your own risk. +Dharma Type will not be liable for any damage to your system, any loss or corruption of any data or software, +or any other loss or damage that you may suffer as a result of downloading or using this font, whether it results from our negligence or in any other way. + +Here is a list of things you could do, Only if you want to: +* Link http://dharmatype.com/ or credit "Dharma Type" +* Tell me what did you use this font for. + + +FAQ + +Q_ Can I use this for a commercial product? +A_ Yes, You can! + +Q_ Can I use this on a web page via css @font-face? +A_ Yes, You can! + +Q_ Can I donate $ to you? +A_ Yes, You can! ( Paypal: info@flat-it.com ) + + + +Contact_______________________________ + +info@dharmatype.com + +Dharma Type (http://dharmatype.com) + | + |___ Flat it type foundry + | + |___ Prop-a-ganda + | + |___ Holiday Type +______________________________________ \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/bebas-neue/demo.html b/src/wp-content/themes/Broadside/bebas-neue/demo.html new file mode 100644 index 0000000..7f78095 --- /dev/null +++ b/src/wp-content/themes/Broadside/bebas-neue/demo.html @@ -0,0 +1,33 @@ + + + + + + + Font Face Demo + + + + + +
    +

    FONT-FACE DEMO FOR THE BEBAS NEUE FONT

    + + + +

    Bebas Neue Regular - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    + +
    + + diff --git a/src/wp-content/themes/Broadside/bebas-neue/stylesheet.css b/src/wp-content/themes/Broadside/bebas-neue/stylesheet.css new file mode 100644 index 0000000..0fe07c9 --- /dev/null +++ b/src/wp-content/themes/Broadside/bebas-neue/stylesheet.css @@ -0,0 +1,16 @@ +/* Generated by Font Squirrel (http://www.fontsquirrel.com) on August 1, 2011 12:28:43 PM America/New_York */ + + + +@font-face { + font-family: 'BebasNeueRegular'; + src: url('BebasNeue-webfont.eot'); + src: url('BebasNeue-webfont.eot?#iefix') format('embedded-opentype'), + url('BebasNeue-webfont.woff') format('woff'), + url('BebasNeue-webfont.ttf') format('truetype'), + url('BebasNeue-webfont.svg#BebasNeueRegular') format('svg'); + font-weight: normal; + font-style: normal; + +} + diff --git a/src/wp-content/themes/Broadside/category.php b/src/wp-content/themes/Broadside/category.php new file mode 100644 index 0000000..0c60854 --- /dev/null +++ b/src/wp-content/themes/Broadside/category.php @@ -0,0 +1,78 @@ + +
    + + +
    +

    ' . single_cat_title( '', false ) . '' ); + ?>

    +
    + + +
    px;"> + + + + ' . $category_description . '
    ' ); + ?> + + + + + + +
    > + +
    + + +
    +
    +
    +

    + Posted by in | +
    +
    +
    + +
    +
    + +
    + + + + + + + +
    +
    +

    +
    + +
    +

    + +
    +
    + + + + + + + + + + +
    +
    + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/comments.php b/src/wp-content/themes/Broadside/comments.php new file mode 100644 index 0000000..83257d6 --- /dev/null +++ b/src/wp-content/themes/Broadside/comments.php @@ -0,0 +1,63 @@ +
    + +

    +
    + + + + + +

    + ' . get_the_title() . '' ); + ?> +

    + + 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?> + + + +
      + 'twentyeleven_comment' ) ); + ?> +
    + + 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?> + + + + +

    + + + + + diff --git a/src/wp-content/themes/Broadside/contact.php b/src/wp-content/themes/Broadside/contact.php new file mode 100644 index 0000000..b46b308 --- /dev/null +++ b/src/wp-content/themes/Broadside/contact.php @@ -0,0 +1,128 @@ + +' . "\r\n" . 'Reply-To: ' . $email; + + mail($emailTo, 'Your Website Subject', $body, $headers); //Replace Your Website Subject + $emailSent = true; + } +} +?> + + +
    +
    +

    + ID, 'pyre_heading_sub', true)): ?> +

    ID, 'pyre_heading_sub', true); ?>

    + +
    + +
    px;"> + + +
    +
    + +
    +
    + +
    +
    +
    + +

    Please check if you've filled all the fields with valid information. Thank you.

    + + + +

    Email Successfully Sent!

    + + +
    +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    +
    +
    + + Facebook + + + Twitter + + + Flickr + + + Vimeo + + + Google + + + StumbleUpon + + + YouTube + + + E-Mail + +
    +
    +
    + +
    + +
    +
    + + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/css/fancybox.css b/src/wp-content/themes/Broadside/css/fancybox.css new file mode 100644 index 0000000..cec22bc --- /dev/null +++ b/src/wp-content/themes/Broadside/css/fancybox.css @@ -0,0 +1,359 @@ +/* + * FancyBox - jQuery Plugin + * Simple and fancy lightbox alternative + * + * Examples and documentation at: http://fancybox.net + * + * Copyright (c) 2008 - 2010 Janis Skarnelis + * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. + * + * Version: 1.3.4 (11/11/2010) + * Requires: jQuery v1.3+ + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ + +#fancybox-loading { + position: fixed; + top: 50%; + left: 50%; + width: 40px; + height: 40px; + margin-top: -20px; + margin-left: -20px; + cursor: pointer; + overflow: hidden; + z-index: 1104; + display: none; +} + +#fancybox-loading div { + position: absolute; + top: 0; + left: 0; + width: 40px; + height: 480px; + background-image: url('../images/fancybox/fancybox.png'); +} + +#fancybox-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + z-index: 1100; + display: none; +} + +#fancybox-tmp { + padding: 0; + margin: 0; + border: 0; + overflow: auto; + display: none; +} + +#fancybox-wrap { + position: absolute; + top: 0; + left: 0; + padding: 20px; + z-index: 1101; + outline: none; + display: none; +} + +#fancybox-outer { + position: relative; + width: 100%; + height: 100%; + background: #fff; +} + +#fancybox-content { + width: 0; + height: 0; + padding: 0; + outline: none; + position: relative; + overflow: hidden; + z-index: 1102; + border: 0px solid #fff; +} + +#fancybox-hide-sel-frame { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: transparent; + z-index: 1101; +} + +#fancybox-close { + position: absolute; + top: -15px; + right: -15px; + width: 30px; + height: 30px; + background: transparent url('../images/fancybox/fancybox.png') -40px 0px; + cursor: pointer; + z-index: 1103; + display: none; +} + +#fancybox-error { + color: #444; + font: normal 12px/20px Arial; + padding: 14px; + margin: 0; +} + +#fancybox-img { + width: 100%; + height: 100%; + padding: 0; + margin: 0; + border: none; + outline: none; + line-height: 0; + vertical-align: top; +} + +#fancybox-frame { + width: 100%; + height: 100%; + border: none; + display: block; +} + +#fancybox-left, #fancybox-right { + position: absolute; + bottom: 0px; + height: 100%; + width: 35%; + cursor: pointer; + outline: none; + background: transparent url('../images/fancybox/blank.gif'); + z-index: 1102; + display: none; +} + +#fancybox-left { + left: 0px; +} + +#fancybox-right { + right: 0px; +} + +#fancybox-left-ico, #fancybox-right-ico { + position: absolute; + top: 50%; + left: -9999px; + width: 30px; + height: 30px; + margin-top: -15px; + cursor: pointer; + z-index: 1102; + display: block; +} + +#fancybox-left-ico { + background-image: url('../images/fancybox/fancybox.png'); + background-position: -40px -30px; +} + +#fancybox-right-ico { + background-image: url('../images/fancybox/fancybox.png'); + background-position: -40px -60px; +} + +#fancybox-left:hover, #fancybox-right:hover { + visibility: visible; /* IE6 */ +} + +#fancybox-left:hover span { + left: 20px; +} + +#fancybox-right:hover span { + left: auto; + right: 20px; +} + +.fancybox-bg { + position: absolute; + padding: 0; + margin: 0; + border: 0; + width: 20px; + height: 20px; + z-index: 1001; +} + +#fancybox-bg-n { + top: -20px; + left: 0; + width: 100%; + background-image: url('../images/fancybox/fancybox-x.png'); +} + +#fancybox-bg-ne { + top: -20px; + right: -20px; + background-image: url('../images/fancybox/fancybox.png'); + background-position: -40px -162px; +} + +#fancybox-bg-e { + top: 0; + right: -20px; + height: 100%; + background-image: url('../images/fancybox/fancybox-y.png'); + background-position: -20px 0px; +} + +#fancybox-bg-se { + bottom: -20px; + right: -20px; + background-image: url('../images/fancybox/fancybox.png'); + background-position: -40px -182px; +} + +#fancybox-bg-s { + bottom: -20px; + left: 0; + width: 100%; + background-image: url('../images/fancybox/fancybox-x.png'); + background-position: 0px -20px; +} + +#fancybox-bg-sw { + bottom: -20px; + left: -20px; + background-image: url('../images/fancybox/fancybox.png'); + background-position: -40px -142px; +} + +#fancybox-bg-w { + top: 0; + left: -20px; + height: 100%; + background-image: url('../images/fancybox/fancybox-y.png'); +} + +#fancybox-bg-nw { + top: -20px; + left: -20px; + background-image: url('../images/fancybox/fancybox.png'); + background-position: -40px -122px; +} + +#fancybox-title { + font-family: Helvetica; + font-size: 12px; + z-index: 1102; +} + +.fancybox-title-inside { + padding-bottom: 10px; + text-align: center; + color: #333; + background: #fff; + position: relative; +} + +.fancybox-title-outside { + padding-top: 10px; + color: #fff; +} + +.fancybox-title-over { + position: absolute; + bottom: 0; + left: 0; + color: #FFF; + text-align: left; +} + +#fancybox-title-over { + padding: 10px; + background-image: url('../images/fancybox/fancy_title_over.png'); + display: block; +} + +.fancybox-title-float { + position: absolute; + left: 0; + bottom: -20px; + height: 32px; +} + +#fancybox-title-float-wrap { + border: none; + border-collapse: collapse; + width: auto; +} + +#fancybox-title-float-wrap td { + border: none; + white-space: nowrap; +} + +#fancybox-title-float-left { + padding: 0 0 0 15px; + background: url('../images/fancybox/fancybox.png') -40px -90px no-repeat; +} + +#fancybox-title-float-main { + color: #FFF; + line-height: 29px; + font-weight: bold; + padding: 0 0 3px 0; + background: url('../images/fancybox/fancybox-x.png') 0px -40px; +} + +#fancybox-title-float-right { + padding: 0 0 0 15px; + background: url('../images/fancybox/fancybox.png') -55px -90px no-repeat; +} + +/* IE6 */ + +.fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale'); } + +.fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_left.png', sizingMethod='scale'); } +.fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_right.png', sizingMethod='scale'); } + +.fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; } +.fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_left.png', sizingMethod='scale'); } +.fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_main.png', sizingMethod='scale'); } +.fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_right.png', sizingMethod='scale'); } + +.fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame { + height: expression(this.parentNode.clientHeight + "px"); +} + +#fancybox-loading.fancybox-ie6 { + position: absolute; margin-top: 0; + top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px'); +} + +#fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_loading.png', sizingMethod='scale'); } + +/* IE6, IE7, IE8 */ + +.fancybox-ie .fancybox-bg { background: transparent !important; } + +.fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_n.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_ne.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_e.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_se.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_s.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_sw.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_w.png', sizingMethod='scale'); } +.fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_nw.png', sizingMethod='scale'); } \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/css/ie7.css b/src/wp-content/themes/Broadside/css/ie7.css new file mode 100644 index 0000000..d7d1624 --- /dev/null +++ b/src/wp-content/themes/Broadside/css/ie7.css @@ -0,0 +1,2 @@ +html {overflow:hidden; max-height:100%;} +.side-barheading {display:none;} \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/css/navigation.css b/src/wp-content/themes/Broadside/css/navigation.css new file mode 100644 index 0000000..4884a0b --- /dev/null +++ b/src/wp-content/themes/Broadside/css/navigation.css @@ -0,0 +1,174 @@ +/*** DEMO SKIN ***/ +/*** adding sf-vertical in addition to sf-menu creates a vertical menu ***/ + +.navigation-space {line-height:1px;} + +.sf-vertical, .sf-vertical li { + width: 165px !important; +} + +.sf-menu li li a {margin-left:15px; } +.sf-vertical {padding:38px 0 28px 0 !important; position:relative; z-index:3000;} +.sf-menu { + float: left; +} +.sf-menu a { + padding: 2px 0px 2px 1px; + text-decoration:none; + font-size:17px; +} +.sf-menu li li a, .sf-menu li .current-menu-item a { + background-position: 0px -155px !important; + opacity:1; filter:alpha(opacity=100); + padding:7px 0 4px 1px; + font-size:16px; +} +.sf-menu .current-menu-item a, .sf-menu li .current-menu-item a:hover {padding-left:7px; opacity:0.7; filter:alpha(opacity=70); } +.sf-menu .current-menu-item .sliding-element a {padding-left:0px; opacity:1; filter:alpha(opacity=100); background:none; } +.sf-menu a:hover {opacity:0.7;filter:alpha(opacity=70); } +.sf-menu li li a:hover, .sf-menu .current-menu-item .sliding-element a:hover, .sf-menu li .current-menu-item a:hover {background-position: 0px 9px !important;} +.sf-menu li li:hover, .sf-menu li li.sfHover, +.sf-menu li li a:focus, .sf-menu li li a:hover, .sf-menu li li a:active { + outline: 0; +} + + +/*** ESSENTIAL STYLES ***/ +.sf-menu, .sf-menu * { + margin: 0; + padding: 0; + list-style: none; +} +.sf-menu { + line-height: 1.0; +} +.sf-menu ul { + position: absolute; + top: -999em; + width: 165px; /* left offset of submenus need to match (see below) */ +} +.sf-menu ul li { + width: 100%; +} +.sf-menu li:hover { + visibility: inherit; /* fixes IE7 'sticky bug' */ +} +.sf-menu li { + float: left; + position: relative; +} +.sf-menu a { + display: block; + position: relative; +} +.sf-menu li:hover ul, +.sf-menu li.sfHover ul { + left: 0; + top: 2.5em; /* match top ul list item height */ + z-index: 99; +} +ul.sf-menu li:hover li ul, +ul.sf-menu li.sfHover li ul { + top: -999em; +} +ul.sf-menu li li:hover ul, +ul.sf-menu li li.sfHover ul { + left: 165px; /* match ul width */ + top: 0; +} +ul.sf-menu li li:hover li ul, +ul.sf-menu li li.sfHover li ul { + top: -999em; +} +ul.sf-menu li li li:hover ul, +ul.sf-menu li li li.sfHover ul { + left: 165px; /* match ul width */ + top: 0; +} + + +/*** arrows **/ +.sf-menu a.sf-with-ul { + padding-right: 2.25em; + min-width: 1px; /* trigger IE7 hasLayout so spans position accurately */ +} +.sf-menu li li a > .sf-sub-indicator {top: 9px; } +.sf-sub-indicator { + position: absolute; + display: block; + right: 1.45em; + top: 1.75em; /* IE6 only */ + width: 10px; + height: 10px; + text-indent: -999em; + overflow: hidden; + background: url('../images/arrows-ffffff.png') no-repeat -10px -100px; /* 8-bit indexed alpha png. IE6 gets solid image only */ +} +a > .sf-sub-indicator { /* give all except IE6 the correct values */ + top: 4px; + background-position: 0 -100px; /* use translucent arrow for modern browsers*/ +} +/* apply hovers to modern browsers */ +a:focus > .sf-sub-indicator, +a:hover > .sf-sub-indicator, +a:active > .sf-sub-indicator, +li:hover > a > .sf-sub-indicator, +li.sfHover > a > .sf-sub-indicator { + background-position: -10px -100px; /* arrow hovers for modern browsers*/ +} + +/* point right for anchors in subs */ +.sf-menu ul .sf-sub-indicator { background-position: -10px 0; } +.sf-menu ul a > .sf-sub-indicator { background-position: 0 0; } +/* apply hovers to modern browsers */ +.sf-menu ul a:focus > .sf-sub-indicator, +.sf-menu ul a:hover > .sf-sub-indicator, +.sf-menu ul a:active > .sf-sub-indicator, +.sf-menu ul li:hover > a > .sf-sub-indicator, +.sf-menu ul li.sfHover > a > .sf-sub-indicator { + background-position: -10px 0; /* arrow hovers for modern browsers*/ +} + +/*** shadows for all but IE6 ***/ +.sf-shadow ul { + background: url('../images/shadow.png') no-repeat bottom right; + padding: 0 8px 9px 0; + -moz-border-radius-bottomleft: 17px; + -moz-border-radius-topright: 17px; + -webkit-border-top-right-radius: 17px; + -webkit-border-bottom-left-radius: 17px; +} +.sf-shadow ul.sf-shadow-off { + background: transparent; +} + +/* this lacks ul at the start of the selector, so the styles from the main CSS file override it where needed */ +.sf-vertical li:hover ul, +.sf-vertical li.sfHover ul { + left: 165px; /* match ul width */ + top: 0; +} + + +/*** adding sf-vertical in addition to sf-menu creates a vertical menu ***/ +.sf-vertical, .sf-vertical li { +} +/* this lacks ul at the start of the selector, so the styles from the main CSS file override it where needed */ +.sf-vertical li:hover ul, +.sf-vertical li.sfHover ul { + left: 165px; /* match ul width */ + top: 0; +} + +/*** alter arrow directions ***/ +.sf-vertical .sf-sub-indicator { background-position: -10px 0; } /* IE6 gets solid image only */ +.sf-vertical a > .sf-sub-indicator { background-position: 0 0; } /* use translucent arrow for modern browsers*/ + +/* hover arrow direction for modern browsers*/ +.sf-vertical a:focus > .sf-sub-indicator, +.sf-vertical a:hover > .sf-sub-indicator, +.sf-vertical a:active > .sf-sub-indicator, +.sf-vertical li:hover > a > .sf-sub-indicator, +.sf-vertical li.sfHover > a > .sf-sub-indicator { + background-position: -10px 0; /* arrow hovers for modern browsers*/ +} diff --git a/src/wp-content/themes/Broadside/css/orbit-1.2.3.css b/src/wp-content/themes/Broadside/css/orbit-1.2.3.css new file mode 100644 index 0000000..32c5f16 --- /dev/null +++ b/src/wp-content/themes/Broadside/css/orbit-1.2.3.css @@ -0,0 +1,203 @@ +/* CSS for jQuery Orbit Plugin 1.2.3 + * www.ZURB.com/playground + * Copyright 2010, ZURB + * Free to use under the MIT license. + * http://www.opensource.org/licenses/mit-license.php + + + +/* PUT IN YOUR SLIDER ID AND SIZE TO MAKE LOAD BEAUTIFULLY + ================================================== */ + + #featured { + width: 980px; + background: #000 url('../images/orbit/loading.gif') no-repeat center center; + overflow: hidden; + } + + #featured div {width:980px; display:block;} + +#featured>img, +#featured>div, +#featured>a { display: none; } + + +/* CONTAINER + ================================================== */ + +div.orbit-wrapper { + width: 1px; + height: 1px; + position: relative; } + +div.orbit { + width: 1px; + height: 1px; + position: relative; + overflow: hidden } + +div.orbit>img { + position: absolute; + top: 0; + left: 0; + display: none; } + +div.orbit>a { + border: none; + position: absolute; + top: 0; + left: 0; + line-height: 0; + display: none; } + +.orbit>div { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + +/* Note: If your slider only uses content or anchors, you're going to want to put the width and height declarations on the ".orbit>div" and "div.orbit>a" tags in addition to just the .orbit-wrapper */ + + +/* TIMER + ================================================== */ + +div.timer { + width: 20px; + height: 20px; + overflow: hidden; + position: absolute; + bottom: 22px; + right: 25px; + opacity: .8; + cursor: pointer; + z-index: 1001; } + +span.rotator { + display: block; + width: 20px; + height: 20px; + position: absolute; + top: 0; + left: -10px; + background: url(../images/orbit/rotator-black2.png) no-repeat; + z-index: 3; } + +span.mask { + display: block; + width: 10px; + height: 20px; + position: absolute; + top: 0; + right: 0; + z-index: 2; + overflow: hidden; } + +span.rotator.move { + left: 0 } + +span.mask.move { + width: 20px; + left: 0; + background: url(../images/orbit/timer-black2.png) repeat 0 0; } + +span.pause { + display: block; + width: 20px; + height: 20px; + position: absolute; + top: 0; + left: 0; + background: url(../images/orbit/pause-black2.png) no-repeat; + z-index: 4; + opacity: 0; } + +span.pause.active { + background: url(../images/orbit/pause-black2.png) no-repeat 0 -20px } + +div.timer:hover span.pause, +span.pause.active { + opacity: 1 } + + +/* CAPTIONS + ================================================== */ + +.orbit-caption { + display: none; + font-family: "HelveticaNeue", "Helvetica-Neue", Helvetica, Arial, sans-serif; } + +.orbit-wrapper .orbit-caption { + background: #000; + background: rgba(0,0,0,.6); + z-index: 1000; + color: #fff; + text-align: center; + padding: 7px 0; + font-size: 13px; + position: absolute; + right: 0; + bottom: 0; + width: 100%; } + + +/* DIRECTIONAL NAV + ================================================== */ + +div.slider-nav { + display: block } + +div.slider-nav span { + width:26px; + height: 44px; + text-indent: -9999px; + position: absolute; + z-index: 1000; + top: 50%; + margin-top: -22px; + cursor: pointer; } + +div.slider-nav span.right { + background: url(../images/orbit/arrows-new.png) -26px 0px no-repeat; + right: 15px; } + +div.slider-nav span.left { + background: url(../images/orbit/arrows-new.png) 0px 0px no-repeat; + left: 15px; } + +/* BULLET NAV + ================================================== */ + +.orbit-bullets { + position: absolute; + z-index: 1000; + list-style: none; + bottom: -3px; + left: 50%; + margin-left: -38px; + padding: 0; } + +.orbit-bullets li { + float: left; + margin-left: 5px; + cursor: pointer; + color: #999; + text-indent: -9999px; + background: url(../images/orbit/bullets2.png) no-repeat top left; + width: 10px; + height: 10px; + overflow: hidden; } + +.orbit-bullets li.active { + color: #222; + background-position: top right; } + +.orbit-bullets li.has-thumb { + background: none; + width: 100px; + height: 75px; } + +.orbit-bullets li.active.has-thumb { + background-position: 0 0; + border-top: 2px solid #000; } \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/css/reset.css b/src/wp-content/themes/Broadside/css/reset.css new file mode 100644 index 0000000..99a0211 --- /dev/null +++ b/src/wp-content/themes/Broadside/css/reset.css @@ -0,0 +1 @@ +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}:focus{outline:0}ins{text-decoration:none}del{text-decoration:line-through}table{border-collapse:collapse;border-spacing:0} \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/css/standard.css b/src/wp-content/themes/Broadside/css/standard.css new file mode 100644 index 0000000..7d6abb3 --- /dev/null +++ b/src/wp-content/themes/Broadside/css/standard.css @@ -0,0 +1,546 @@ +/* DEFAULT STYLES */ +body { + background:#e8e8e8; + font-size:12px; + line-height:18px; + min-width:1000px; + min-height:20px; + font-family: "Lucida Sans Unicode", "Lucida Grande", Arial, sans-serif; +} +* { margin: 0; outline: none; } +p {padding-bottom:18px;} +ul {margin-bottom:24px;} +.sf-menu, .blog-post .comments, #respond input#submit {font-family: 'BebasNeueRegular', arial, serif;} +#randomdiv {font-family: "Lucida Sans Unicode", "Lucida Grande", Arial, sans-serif;} +h1, h2, h3, h4, h5, h6, .sub-navigation, #next_link2, #previous_link2, .prev_link a, .next_link a, form#contactform input.submit-form {text-transform:uppercase; font-weight:normal; font-family: 'BebasNeueRegular', arial, serif;} +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { text-decoration:none; } +h1 { font-size:42px; line-height:38px; margin-bottom:3px;} +h2 { font-size:35px; line-height:32px; margin-bottom:2px;} +h3 { font-size:27px; line-height:24px; margin-bottom:2px; } +h4 { font-size:24px; line-height:22px; margin-bottom:2px;} +h5 {font-size:18px; line-height:19px; margin-bottom:2px;} +h6 {font-size:14px; line-height:24px; margin-bottom:2px;} +iframe {border:0px; margin:0px; padding:0px; } +img.noborder {border:none !important;} +#bg { position: fixed; top: 0; left: 0; } +.bgwidth { width: 100%; } +.bgheight { height: 100%; } +.center-align {text-align:center;} +.left-align {text-align:left;} +.right-align {text-align:right;} +.alignright {float:right; margin:0 0 10px 10px;} +.alignleft {float:left; margin:0 10px 10px 0;} +.aligncenter { text-align:center; display: block; margin:4px auto 10px auto;} + +.bypostauthor {} +.sticky {} +.wp-caption {} +.wp-caption-text {} +.gallery-caption {} + + +/* Generated by Font Squirrel (http://www.fontsquirrel.com) on May 27, 2011 05:06:46 PM America/New_York */ +@font-face { + font-family: 'BebasNeueRegular'; + src: url('../bebas-neue/BebasNeue-webfont.eot'); + src: url('../bebas-neue/BebasNeue-webfont.eot?#iefix') format('embedded-opentype'), + url('../bebas-neue/BebasNeue-webfont.woff') format('woff'), + url('../bebas-neue/BebasNeue-webfont.ttf') format('truetype'), + url('../bebas-neue/BebasNeue-webfont.svg#BebasNeueRegular') format('svg'); + font-weight: normal; + font-style: normal; + +} + +/* BODY LINK COLOUR AND MISC COLORS */ +body, a, .side-barheading h2, ul.sub-navigation li a, .content-heading h5, .content-heading h6 {color:#515151;} /* Dark Grey Color for Links and some Headings Default: #515151 */ + +a:hover {color:#000;} /* Main hover link color */ +#footer, #footer a {color:#fff;} /* Footer Text and Link Color Default #fff */ +#footer a:hover {color:#e7e7e7;} /* Footer Link Hover Color Default #e7e7e7 */ +.sf-menu a, .sf-menu a:visited { color: #fff;} /* Color for the Navigation link Default #fff */ +.light-fonts, .light-fonts h1, .light-fonts a, .light-fonts h1, .navigation-menu h1 {color:#fff;} /* .light-fonts class Font Color Default #fff*/ +.light-fonts a:hover {color:#e7e7e7;} /* .light-fonts class Link Font Color Default #e7e7e7 */ +.custom-color {color:#fcc73c;} /* Custom Color Orange Used in Space Template Index Page Default #fcc73c */ + + + + + +/* CAROUSEL and SCROLL HEIGHTS */ +.content-container .list_carousel li { height:292px;} /* Default Carousel Container Height */ +.portfolio-carousel ul li {height:290px !important;} /* Portfolio Carousel Image Gallery Height */ +.content-container .news_carousel li { height:356px;} /* Latest Carousel News Regular Height */ +.news_carousel .scroll-pane { height:315px;} /* Latest News Carousel Scrolling Height */ + + +/* MENU AND NAVIGATION POSITIONING AND WIDTH */ +#featured { position: relative; float:right;} +#left-container { float:left; width:270px; position:relative; } +.navigation-menu {width:180px; z-index:16; position:relative; top:0; } +.side-barheading {width:180px; z-index:5; position:absolute; right:0; top:170px; } +.logo-menu {text-align:center; position:relative; top:0; z-index:15; } +.bottom-box .logo-menu {margin-bottom:65px;} +.top-box { position:absolute; top:0px; right:0px; } +.bottom-box {position:absolute; bottom:0px; right:0px; } +.hover-box {padding:6px 15px 2px 15px; } +.navigation-menu h1 {font-size:14px; margin:0px; line-height:17px; } +.navigation-menu h1:hover {cursor:pointer;} +ul.sub-navigation {width:650px; margin:5px 0 -25px 0; } +ul.sub-navigation li {display:inline;} +ul.sub-navigation li a {margin-right:25px; font-size:18px; text-decoration:none;} +.logo-menu a img {margin-bottom:-5px;} + +/* MAIN STYLES */ +#box-container {position:absolute; width:100%; top:50%;} +.content-container {float:right; display:inline-block; width:650px; padding:60px 50px 0px 0px; position:relative; z-index:5;} +#page-wrap { position: relative; width:980px; margin:0 auto; } +#container {background:white; width:980px; margin-bottom:5px; } +.featured-heading {margin:145px 180px 0 0; text-align:right; } +.featured-text {width:200px; float:right; margin-right:50px;} +.featured-heading2 {margin:120px 180px 0 0; text-align:right; } +.content-heading {padding-left:25px; width:625px; overflow:hidden;} +.latest-news-heading {float:left; position:absolute; left:0px; top:75px; z-index:25; } +blockquote {font-style:italic; line-height:22px; font-size:13px; color:#626262; background:url(../images/blockquote.png) 15px 9px no-repeat; padding:5px 0 0 50px; margin-bottom:20px;} +.content-container ul, .content-container ol {padding-bottom:18px;} +.content-container ul.checkmark li { margin-left:0px; background:url(../images/checkmark.png) 0px 4px no-repeat; padding:0 0 2px 20px; list-style:none;} +.content-container ul.arrow li { margin-left:0px; background:url(../images/sidebar-arrow.png) 0px 4px no-repeat; padding:0 0 2px 20px; list-style:none;} +.content-container ul li {list-style:disc; margin-left:20px;} +.content-container ol li {list-style:decimal; margin-left:23px;} +a.button, a.big-button {font-family: Arial, sans-serif; display: inline-block; text-decoration: none; line-height: 1; border-radius: 4px; -moz-border-radius: 4px; padding: 10px 19px 11px 19px;} +a.button {font-size:12px; font-weight:bold; color:#858585; background: #f6f6f6 url(../images/big-button-overlay.png) top left repeat-x; -moz-box-shadow: 0 1px 3px #ccc; -webkit-box-shadow: 0 1px 3px #ccc box-shadow:0 1px 3px #ccc; border-bottom: 1px solid #b8b8b8; position: relative; cursor: pointer;} +a.button:hover {background-color:#fff; color:#787878;} +a.big-button {font-size:14px; font-weight:bold; color:#fff; background: #434343 url(../images/big-button-overlay.png) top left repeat-x; -webkit-border-radius: 4px; -moz-box-shadow: 0 1px 4px #999; -webkit-box-shadow: 0 1px 4px #999; box-shadow:0 1px 4px #999; border-bottom: 1px solid #343434; position: relative; cursor: pointer; } +a.big-button:hover {background-color:#373737; color:#fff;} +table {border:1px solid #ccc; background:#ecebeb; width:100%; margin:8px 0 0 0; } +table td {padding:8px; border:1px solid #d6d6d6;} +table thead th {border:1px solid #ccc;} +table thead {background:#dadada;} +table tfoot td {padding:5px;} +table thead th {padding:8px 0 8px 0;} +table .t-headings {font-weight:bold; font-size:115%; background:#dadada;} +table .t-footer {background:#e1e1e1; text-align:center; font-size:90%; font-style:italic;} +.team-member {padding:10px 0 10px 0;overflow:hidden;width:100%;} +.team-member h5 {margin-bottom:3px; padding-top:5px;} +.team-member img {margin-right:15px; float:left;} +.divider {border-bottom:1px solid #b7b7b7; color:#9f9f9f; margin-bottom:30px; padding-bottom:10px;} +.content-container h1#error404 {padding:165px 0px 0px 85px;} +.page-header {padding-bottom:10px;} + +/* BLOG SECTION STYLES */ + +.blog-post {width:585px; overflow:hidden; margin-right:15px;} +.blog-post .blog-image {float:left; margin-right:25px; margin-bottom:18px;} +.post-heading { overflow:hidden; padding-bottom:5px; } +.blog-post .post-data {font-size:11px; float:left;} +.post-data h3 {margin-bottom:5px;} +.blog-post .comments {position:absolute; right:12px; text-align:center; width:31px; height:34px; font-size:15px; } +.blog-post .comments a {color:#949494; margin-top:2px; background:url(../images/blog-comments.png) 0px 0px no-repeat; display:block; width:32px; height:28px; text-decoration:none; padding-top:6px;} +.blog-post .comments a:hover {color:#6a6a6a; background:url(../images/blog-comments.png) 0px -34px no-repeat;} +.type-portfolio .post-heading .comments {display:none;} + +.comment-author, .comment-author cite {font-style:normal; padding-bottom:2px; font-size:12px;} +span.fn {font-size:14px;} +.comment-meta {font-size:10px; margin-bottom:4px;} +.comment-meta a {text-decoration:none;} +#reply-title {font-size:22px; line-height:24px;} +#comments ol.commentlist p {padding-bottom:12px;} +.comment-author img.avatar {float:left; margin:0px 15px 24px 0px; position:relative; top:-2px;} +p.form-allowed-tags {font-size:11px; line-height:16px;} +code {font-family: monospace, sans-serif; display:block; padding-top:5px;} + +#comments h2#comments-title {font-size:20px; line-height:24px; margin-bottom:15px;} +#comments ol.commentlist li {list-style:none; margin:0px 0px 15px 0px; padding:0px 0px 0px 0px; border-bottom:1px solid #b7b7b7;} +#reply-title a#cancel-comment-reply-link {font-size:18px; padding-left:5px;} +#comments ol.commentlist li ul.children {margin-bottom:0px; padding-bottom:0px;} +#comments ol.commentlist li ul.children li {margin:0px 0px 0px 0px; padding:15px 0px 0px 50px; border-top:1px solid #b7b7b7; border-bottom:none;} + +.reply a {border:1px solid #4c4c4c; display:inline-block; padding:1px 10px; margin-bottom:15px; font-size:9px; text-decoration:none;} +.reply a:hover {border:1px solid #000; color:#000; -webkit-box-shadow: 0px 0px 4px #6a9ec9; -moz-box-shadow: 0px 2px 4px #6a9ec9; box-shadow: 0px 0px 4px #6a9ec9;} +.light-fonts .reply a {border:1px solid #B7B7B7;} +.light-fonts .reply a:hover {border:1px solid #d6d6d6; color:#fff;} +#respond input#submit {border:1px solid #4c4c4c; background:url(../images/none.gif);cursor:pointer; font-size:12px; line-height:1; text-decoration:none !important; width:100px; padding:5px 10px 4px 10px; } +input#submit:hover {background:#000; color:#000; -webkit-box-shadow: 0px 0px 4px #6a9ec9; -moz-box-shadow: 0px 2px 4px #6a9ec9; box-shadow: 0px 0px 4px #6a9ec9;} +.light-fonts #respond input#submit {border-color:#B7B7B7; color:#fff;} +.light-fonts #respond input#submit:hover {border-color:#d6d6d6; color:#fff;} +#respond span.required {color:red; position:relative; right:2px; } +label {vertical-align:top;} +input:focus, textarea:focus { border: 1px solid #bddae3; -webkit-box-shadow: 0px 0px 4px #6a9ec9; -moz-box-shadow: 0px 2px 4px #6a9ec9; box-shadow: 0px 0px 4px #6a9ec9;} + +#respond label {font-size:11px;} +#respond input, #respond textarea { background:url(../images/none.gif); border-style:solid; border-width:1px; font-size:13px; padding:4px; border-color:#4c4c4c; display:block;} +.light-fonts #respond input, .light-fonts #respond textarea { border-color:#B7B7B7;} +p.comment-form-author, p.comment-form-email, p.comment-form-url, p.comment-form-comment, p.comment-notes {padding-bottom:10px;} + +#author-info {padding-top:15px;} +#author-avatar {float:left; margin:0px 15px 15px 0px;} +#author-description h4 {margin-bottom:7px;} + +/* CONTACT FORM STYLES */ +form#contactform input, form#contactform textarea, #contact-wrapper input.error, #contact-wrapper textarea.error, #contact-wrapper div {color:#515151;} +.light-fonts form#contactform input, .light-fonts form#contactform textarea, .light-fonts #contact-wrapper input.error, .light-fonts #contact-wrapper textarea.error, .light-fonts form#contactform input.submit-form {color:#fff;} +.light-fonts #contact-wrapper p.success {color:#fff; margin-bottom:0px; padding-bottom:10px;} +#contact-wrapper p.success {color:#00a651; margin-bottom:0px;} +#contact-wrapper .error {color:#888;} +.light-fonts #contact-wrapper div {color:#ccc;} +body.contact-body {background:transparent !important; } +.contact-form #social-icons {float:none; position:absolute; bottom:0px; right:0px;} +.contact-details {border-right:1px solid #888; margin:25px 40px 25px 25px; font-size:13px;} +.contact-form {margin:25px 0 25px 0; } +#contact-wrapper { width:290px; overflow:hidden; display:block; font-size:13px;} +#contact-wrapper div { clear:both; font-size:11px;} +#contact-wrapper label { display:block; float:right; width:auto; position:relative; right:35px; top:5px; } +form#contactform textarea {float:none !important; margin-bottom:9px !important;} +#contact-wrapper .error { font-style:italic; margin-bottom:2px; margin-top:2px; font-size:10px; float:left; right:0px; top:0px;} +#contact-wrapper input.error {font-size:12px; font-style:normal; margin-top:0px;} +form#contactform input { width:205px; } + +.light-fonts form#contactform input, .light-fonts form#contactform textarea, .light-fonts form#contactform input.submit-form {border-color:#B7B7B7;} +form#contactform input, form#contactform textarea, form#contactform input.submit-form {border-color:#4c4c4c;} +form#contactform input, form#contactform textarea { font-family: "Lucida Sans Unicode", "Lucida Grande", Arial, sans-serif; font-size:12px; float:left; margin-bottom:15px; background:url(../images/none.gif); border-style:solid; border-width:1px; padding:4px; } +form#contactform input.submit-form {color:#555; cursor:pointer; display:inline-block; font-size:12px; line-height:1; text-decoration:none !important; width:100px; padding:5px 11px 4px 11px; } +form#contactform input.submit-form:hover {color:#000; border-color:#000; -webkit-box-shadow: 0px 0px 4px #6a9ec9; -moz-box-shadow: 0px 0px 4px #6a9ec9; box-shadow: 0px 0px 4px #6a9ec9;} +.light-fonts form#contactform input.submit-form:hover {color:#fff; border-color:#d6d6d6; -webkit-box-shadow: 0px 0px 4px #6a9ec9; -moz-box-shadow: 0px 0px 4px #6a9ec9; box-shadow: 0px 0px 4px #6a9ec9;} + +/* CONTACT FORM 7 STYLES */ +.wpcf7 input, .wpcf7 textarea { background:url(../images/none.gif); border-style:solid; border-width:1px; font-size:13px; padding:4px; border-color:#4c4c4c; display:block; } +.light-fonts .wpcf7 input, .light-fonts .wpcf7 textarea { border-color:#B7B7B7; color:#fff;} +.wpcf7 p {padding-bottom:10px; font-size:11px;} +.wpcf7-submit {cursor:pointer;} +.wpcf7-submit:hover { color:#000; border-color:#000; -webkit-box-shadow: 0px 0px 4px #6a9ec9; -moz-box-shadow: 0px 0px 4px #6a9ec9; box-shadow: 0px 0px 4px #6a9ec9;} +.light-fonts .wpcf7-submit:hover {color:#fff; border-color:#d6d6d6; } + + +/* FOOTER STYLES */ +#footer {width:980px; overflow:hidden; font-size:10px;} +#social-icons {float:left; padding:3px 0px 0px 1px;} +#social-icons img {margin-right:2px;} +#copyright {float:right; text-align:right; padding-right:2px;} + + + +/* CAROUSEL STYLES */ +.list_carousel, .portfolio_carousel, .news_carousel { + margin: 0; + width: 600px; +} +.list_carousel ul, .portfolio_carousel ul, .news_carousel ul { + width: 600px; + margin: 0; + padding: 0; + list-style: none; + display: block; +} +.portfolio-carousel ul li { + text-align:center !important; +} +.content-container .list_carousel li { + width: 570px; + padding: 0; + margin:0 0 0 30px; + display: block; + float: left; +} +.news_carousel .scroll-pane { + width:370px; + float:none; + overflow: auto; + margin:0px; + padding:0 8px 0 0; +} + +.news_carousel .news-post { + width:370px; + padding:25px; + background:#fff; + color:#888; + display:block; +} +.news_carousel .pagination {margin-top:7px;} + +.content-container .news_carousel li { + width: 475px; + padding: 0; + margin:0 0 0 125px; + display: block; + float: left; + list-style:none; +} +.date-stamp h1, .date-stamp h2, .date-stamp h3, .date-stamp h5, .date-stamp h4, .date-stamp h6 {} +.date-stamp {} +.news_carousel .news-post a {color:#515151;} +.news_carousel .news-post a:hover {color:#000;} +.content-container .portfolio_carousel li a { display:block; height:210px; width:135px; text-decoration:none; color:#888;} +.content-container .portfolio_carousel li a:hover {background:#282828;} +.content-container .portfolio_carousel li a:hover img, .thumbnails a:hover img { + opacity: 0.8; + filter: alpha(opacity=80); + -webkit-transition: opacity .5s ease-in-out; + -moz-transition: opacity .5s ease-in-out; + -o-transition: opacity .5s ease-in-out; + transition: opacity .5s ease-in-out; +} + +.content-container .portfolio_carousel li { + width: 135px; + height:210px; + padding: 0; + margin:0 15px 0 0; + display: block; + float: left; + background:#222; + color:#888; + font-size:10px; +} +.content-container .portfolio_carousel .description {padding:12px;} +.content-container .portfolio_carousel li h5, .content-container .portfolio_carousel li h6, .content-container .portfolio_carousel li h4 { + color:#fff; +} +.content-container .portfolio_carousel li a {} +.clearfix { + float: none; + clear: both; +} +.prev_link a { + float: left; + margin-left: 10px; + padding-top:5px; +} +.next_link a { + float: right; + margin-right: 10px; + padding-top:5px; +} + +a.next.disabled, a.prev.disabled, a.next.disabled span, a.prev.disabled span { + cursor:default; + color:#ccc !important; +} + + +#previous_link2 { + float: left; + margin-left: 10px; + padding-top:5px; +} +#next_link2 { + float: right; + margin-right: 10px; + padding-top:5px; +} +a#previous_link2-arrow, a#next_link2-arrow { + background:url(../images/arrow-navigation.png) top left no-repeat; + width:20px; + text-indent:-9999px; + display:block; + margin-top:15px; +} +a#next_link2-arrow {background-position: top right !important;} + +a#previous_link2-arrow.disabled, a#next_link2-arrow.disabled { + opacity:0.4; + filter: alpha(opacity=40); +} +a#next_link2, a#previous_link2 {text-decoration:none; font-size:13px;} +a#previous_link2 span {padding-left:5px;} + + +.prev_link a, .next_link a { + background:url(../images/arrow-navigation.png) top left no-repeat; + width:20px; + text-indent:-9999px; + display:block; + margin-top:15px; +} +.next_link a {background-position: top right !important;} + +.prev_link a.disabled, .next_link a.disabled { + opacity:0.4; + filter: alpha(opacity=40); +} + +.pagination {text-align:center; padding-top:5px; width:300px; margin:0 auto;} + +.pagination a { + background: url(../images/orbit/bullets2.png) no-repeat top left; + width: 10px; + height: 10px; + overflow: hidden; + display:inline-block; + cursor: pointer; + margin-left: 5px; +} + +.pagination a.selected { + color: #222; + background-position: top right; +} +.pagination a span { + display:none; + } +.next_link a, .prev_link a {text-decoration:none; font-size:13px;} +.next_link a span {padding-right:5px;} +.prev_link a span {padding-left:5px;} + + + +/* COLUMN LAYOUTS */ +.column-container {width:100%; overflow:hidden;} +.col_1_1,.col_1_2,.col_2_2,.col_1_3,.col_2_3,.col_3_3,.col_1-2_3,.col_2-3_3,.col_1_4,.col_2_4,.col_3_4,.col_4_4,.col_1-2_4,.col_2-3_4,.col_3-4_4,.col_1-3_4,.col_2-4_4,.col_1_5,.col_2_5,.col_3_5,.col_4_5,.col_5_5,.col_1-2_5,.col_2-3_5,.col_3-4_5,.col_4-5_5,.col_1-3_5,.col_2-4_5,.col_3-5_5,.col_1-4_5,.col_2-5_5{float:left;display:inline;overflow:hidden;} +* html .col_1_1,* html .col_1_2,* html .col_2_2,* html .col_1_3,* html .col_2_3,* html .col_3_3,* html .col_1-2_3,* html .col_2-3_3,* html .col_1_4,* html .col_2_4,* html .col_3_4,* html .col_4_4,* html .col_1-2_4,* html .col_2-3_4,* html .col_3-4_4,* html .col_1-3_4,* html .col_2-4_4,* html .col_1_5,* html .col_2_5,* html .col_3_5,* html .col_4_5,* html .col_5_5,* html .col_1-2_5,* html .col_2-3_5,* html .col_3-4_5,* html .col_4-5_5,* html .col_1-3_5,* html .col_2-4_5,* html .col_3-5_5,* html .col_1-4_5,* html .col_2-5_5{margin-left:-.04em;} +.col_1_1{width:100%;} +.col_1_2,.col_2_2{width:50%;} +.col_1_3,.col_2_3,.col_3_3{width:33.33%;} +.col_1-2_3,.col_2-3_3{width:66.66%;} +.col_1_4,.col_2_4,.col_3_4,.col_4_4{width:25%;} +.col_1-2_4,.col_2-3_4,.col_3-4_4{width:50%;} +.col_1-3_4,.col_2-4_4{width:75%;} +.col_1_5,.col_2_5,.col_3_5,.col_4_5,.col_5_5{width:20%;} +.col_1-2_5,.col_2-3_5,.col_3-4_5,.col_4-5_5{width:40%;} +.col_1-3_5,.col_2-4_5,.col_3-5_5{width:60%;} +.col_1-4_5,.col_2-5_5{width:80%;} +.content{padding:0 10px;overflow:hidden;} +.col_1_2 .content,.col_1_3 .content,.col_1-2_3 .content,.col_1_4 .content,.col_1-2_4 .content,.col_1-3_4 .content,.col_1_5 .content,.col_1-2_5 .content,.col_1-3_5 .content,.col_1-4_5 .content,.col_1-2_5 .content,.col_1-3_5 .content,.col_1-4_5 .content{padding-left:0;} +.col_2_2 .content,.col_3_3 .content,.col_2-3_3 .content,.col_4_4 .content,.col_3-4_4 .content,.col_2-4_4 .content,.col_5_5 .content,.col_4-5_5 .content,.col_3-5_5 .content,.col_2-5_5 .content,.col_4-5_5 .content,.col_3-5_5 .content,.col_2-5_5 .content{padding-right:0;} +.clear, .clearboth {clear:both;display:block;overflow:hidden;visibility:hidden;width:0;height:0;} + +.last {padding-right:0px !important; padding-left: 0px !important;} + + +/* + * CSS Styles that are needed by jScrollPane for it to operate correctly. + * + * Include this stylesheet in your site or copy and paste the styles below into your stylesheet - jScrollPane + * may not operate correctly without them. + */ + + /* Styles specific to this particular page */ +.scroll-pane +{ + width: 600px; + float:right; + overflow: auto; + margin-top:14px; + padding:0 8px 0 0; +} + +.list_carousel .scroll-pane, .portfolio_carousel .scroll-pane {width:570px; float:none; margin:0px; } + +.horizontal-only +{ + height: auto; + max-height: 200px; +} + +.jspContainer +{ + overflow: hidden; + position: relative; +} + +.jspPane +{ + position: absolute; +} + +.jspVerticalBar +{ + position: absolute; + top: 0; + right: 0; + width: 7px; + height: 100%; + background: red; +} + +.jspHorizontalBar +{ + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 16px; + background: red; +} + +.jspVerticalBar *, +.jspHorizontalBar * +{ + margin: 0; + padding: 0; +} + +.jspCap +{ + display: none; +} + +.jspHorizontalBar .jspCap +{ + float: left; +} + +.jspTrack +{ + background: #ccc; + position: relative; +} + +.jspDrag +{ + position: relative; + top: 0; + left: 0; + cursor: pointer; +} + +.jspHorizontalBar .jspTrack, +.jspHorizontalBar .jspDrag +{ + float: left; + height: 100%; +} + +.jspArrow +{ + background: #50506d; + text-indent: -20000px; + display: block; + cursor: pointer; +} + +.jspArrow.jspDisabled +{ + cursor: default; + background: #80808d; +} + +.jspVerticalBar .jspArrow +{ + height: 16px; +} + +.jspHorizontalBar .jspArrow +{ + width: 16px; + float: left; + height: 100%; +} + +.jspVerticalBar .jspArrow:focus +{ + outline: none; +} + +.jspCorner +{ + background: #eeeef4; + float: left; + height: 100%; +} + +/* Yuk! CSS Hack for IE6 3 pixel bug :( */ +* html .jspCorner +{ + margin: 0 -3px 0 0; +} diff --git a/src/wp-content/themes/Broadside/footer.php b/src/wp-content/themes/Broadside/footer.php new file mode 100644 index 0000000..bfc5fb4 --- /dev/null +++ b/src/wp-content/themes/Broadside/footer.php @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + '; ?> + + '; ?> + + + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/framework/bootstrap.php b/src/wp-content/themes/Broadside/framework/bootstrap.php new file mode 100644 index 0000000..168177c --- /dev/null +++ b/src/wp-content/themes/Broadside/framework/bootstrap.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/framework/metaboxes.php b/src/wp-content/themes/Broadside/framework/metaboxes.php new file mode 100644 index 0000000..f449cbf --- /dev/null +++ b/src/wp-content/themes/Broadside/framework/metaboxes.php @@ -0,0 +1,127 @@ +add_meta_box('post_options', 'Post Options', 'post'); + $this->add_meta_box('page_options', 'Page Options', 'page'); + $this->add_meta_box('portfolio_options', 'Portfolio Options', 'portfolio'); + //$this->add_meta_box('team_options', 'Team Options', 'team'); + } + + public function add_meta_box($id, $label, $post_type) + { + add_meta_box( + 'pyre_' . $id, + __($label, 'Avenue'), + array($this, $id), + $post_type + ); + } + + public function save_meta_boxes($post_id) + { + if(defined( 'DOING_AUTOSAVE') && DOING_AUTOSAVE) { + return; + } + + foreach($_POST as $key => $value) { + update_post_meta($post_id, $key, $value); + } + } + + public function post_options() + { + include 'views/metaboxes/style.php'; + include 'views/metaboxes/post_options.php'; + } + + public function page_options() + { + include 'views/metaboxes/style.php'; + include 'views/metaboxes/page_options.php'; + } + + public function portfolio_options() + { + include 'views/metaboxes/style.php'; + include 'views/metaboxes/portfolio_options.php'; + } + + public function text($id, $label, $desc, $html = '') + { + global $post; + + $html .= '
    '; + $html .= ''; + $html .= '
    '; + $html .= ''; + if($desc) { + $html .= '

    ' . $desc . '

    '; + } + $html .= '
    '; + $html .= '
    '; + + echo $html; + } + + public function textarea($id, $label, $desc, $html = '') + { + global $post; + + $html .= '
    '; + $html .= ''; + $html .= '
    '; + $html .= ''; + if($desc) { + $html .= '

    ' . $desc . '

    '; + } + $html .= '
    '; + $html .= '
    '; + + echo $html; + } + + public function select($id, $label, $options, $desc, $html = '') + { + global $post; + + $html .= '
    '; + $html .= ''; + $html .= '
    '; + $html .= ''; + if($desc) { + $html .= '

    ' . $desc . '

    '; + } + $html .= '
    '; + $html .= '
    '; + + echo $html; + } + +} + +$metaboxes = new PyreThemeFrameworkMetaboxes; \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/framework/views/metaboxes/page_options.php b/src/wp-content/themes/Broadside/framework/views/metaboxes/page_options.php new file mode 100644 index 0000000..46b7ce0 --- /dev/null +++ b/src/wp-content/themes/Broadside/framework/views/metaboxes/page_options.php @@ -0,0 +1,49 @@ +
    +select( 'font_color', + 'Font Color', + array('light' => 'Light', 'dark' => 'Dark'), + '' + ); +?> +textarea( 'background_images', + 'Background Image(s)', + 'Add link(s) to background image separated by a comma but no spaces.' + ); +?> +text( 'heading_sub', + 'Sub-headline', + '' + ); +?> +text( 'heading_1', + 'Sidebar Headline', + '' + ); +?> +text( 'heading_2', + 'Sidebar Sub-headline', + '' + ); +?> +term_id] = $type->name; + } +} + +if($types) { +$this->select( 'portfolio_type', + 'Portfolio Type', + $types_array, + 'Note: Portfolio Type only applies on Portfolio Page Templates. See documentation for details.' + ); +} +?> +
    \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/framework/views/metaboxes/portfolio_options.php b/src/wp-content/themes/Broadside/framework/views/metaboxes/portfolio_options.php new file mode 100644 index 0000000..d5d91ec --- /dev/null +++ b/src/wp-content/themes/Broadside/framework/views/metaboxes/portfolio_options.php @@ -0,0 +1,6 @@ +text( 'video_link', + 'Video Player Link', + 'Use the video embed link without any code. Example: http://player.vimeo.com/video/22884674' + ); +?> \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/framework/views/metaboxes/post_options.php b/src/wp-content/themes/Broadside/framework/views/metaboxes/post_options.php new file mode 100644 index 0000000..c316b1f --- /dev/null +++ b/src/wp-content/themes/Broadside/framework/views/metaboxes/post_options.php @@ -0,0 +1,2 @@ +
    +
    \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/framework/views/metaboxes/style.php b/src/wp-content/themes/Broadside/framework/views/metaboxes/style.php new file mode 100644 index 0000000..00efc6b --- /dev/null +++ b/src/wp-content/themes/Broadside/framework/views/metaboxes/style.php @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/functions.php b/src/wp-content/themes/Broadside/functions.php new file mode 100644 index 0000000..72c6cb8 --- /dev/null +++ b/src/wp-content/themes/Broadside/functions.php @@ -0,0 +1,170 @@ + array( + 'name' => 'Portfolio', + 'singular_name' => 'Portfolio' + ), + 'public' => true, + 'has_archive' => true, + 'rewrite' => array('slug' => 'portfolio'), + 'supports' => array('title', 'editor', 'thumbnail'), + 'can_export' => true, + ) + ); + + register_taxonomy('type', 'portfolio', array('hierarchical' => true, 'label' => 'Type', 'query_var' => true, 'rewrite' => true)); + +} + + +function get_progression($args) { + $output = get_option('admin_email'); + return apply_filters('get_progression', $output); +} + + + +// Include boostrap file for the pyre theme framework +include_once('framework/bootstrap.php'); + +if ( ! function_exists( 'twentyeleven_comment' ) ) : +/** + * Template for comments and pingbacks. + * + * To override this walker in a child theme without modifying the comments template + * simply create your own twentyeleven_comment(), and that function will be used instead. + * + * Used as a callback by wp_list_comments() for displaying the comments. + * + * @since Twenty Eleven 1.0 + */ +function twentyeleven_comment( $comment, $args, $depth ) { + $GLOBALS['comment'] = $comment; + switch ( $comment->comment_type ) : + case 'pingback' : + case 'trackback' : + ?> +
  • +

    ', '' ); ?>

    + +
  • id="li-comment-"> +
    +
    +
    + comment_parent ) + $avatar_size = 39; + + echo get_avatar( $comment, $avatar_size ); + + /* translators: 1: comment author, 2: date and time */ + printf( __( '%1$s on %2$s said:', 'twentyeleven' ), + sprintf( '%s', get_comment_author_link() ), + sprintf( '', + esc_url( get_comment_link( $comment->comment_ID ) ), + get_comment_time( 'c' ), + /* translators: 1: date, 2: time */ + sprintf( __( '%1$s at %2$s', 'twentyeleven' ), get_comment_date(), get_comment_time() ) + ) + ); + ?> + + ', '' ); ?> +
    + + comment_approved == '0' ) : ?> + +
    + + +
    + +
    + +
    + __( 'Reply ', 'twentyeleven' ), 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> +
    +
    + + + + + + +> + + + <?php echo of_get_option('home_title'); ?> + + <?php bloginfo('name'); ?> <?php wp_title(' - ', true, 'left'); ?> + + + + + + + + + + + + + + + + + '; ?> + /* MAIN CONTAINER HEIGHT SIZE */ + #container, #left-container, #featured, #featured div { height:px; } + #featured { margin-top:-px;} + #box-container {height:px; margin-top:-px; } /* Margin-top is half of the total height */ + + /* MAIN HIGHLIGHTED COLOUR FOR HEADINGS */ + h1, h2, h3, h4, h5, h6, ul.sub-navigation li a:hover, ul.sub-navigation li.current-menu-item a, ul.sub-navigation li.current_page_item a, a.prev span, a.next span, a.prev:hover, a.next:hover, .light-fonts .content-heading h5, .light-fonts .content-heading h6 {color:;} + + /* MAIN BACKGROUND COLOUR FOR MENU AND LOGO */ + .logo-menu, .navigation-menu, .sf-vertical li, .jspDrag {background-color:;} + .sf-menu .current-menu-item a, .sf-menu a:hover, .sf-menu .current-menu-item .sliding-element a:hover {background: url(/images/nav-arrow.png) 0px 5px no-repeat;} + '; ?> + + + '; ?> + + '; ?> + + + + '; ?> + + '; ?> + + + + + + + + + + + + + + + + + + + + +ID, 'pyre_font_color', true) == 'light') { + $class = 'light-fonts'; +} +$page_for_posts = get_option('page_for_posts'); +if((is_home() || is_single()) && get_option('page_for_posts') && get_post_meta($page_for_posts, 'pyre_font_color', true) == 'light') { + $class = 'light-fonts'; +} +?> + +" id="bg" alt="background"> + +
    +
    + +
    + +
    + +
    -box"> + +
    + + + + +
    + +
    + + +

    + +
    + + + + ID; ?> + +
    + +
    + + +

    + +
    + + + +
    -box"> + +
    + +
    +
    \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/homepage.php b/src/wp-content/themes/Broadside/homepage.php new file mode 100644 index 0000000..42b9006 --- /dev/null +++ b/src/wp-content/themes/Broadside/homepage.php @@ -0,0 +1,18 @@ + +
    + + + + +
    + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/images/1col.png b/src/wp-content/themes/Broadside/images/1col.png new file mode 100644 index 0000000000000000000000000000000000000000..32bddc1a97395f1127c985f3d9946388de8c55f4 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^Q9x|N!3-oX-i|E?Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JibMl^LR??Je*OLX_s^d{fBW|B%a<>|fB*jZ^Jl}RSC@ba zEInNuLn>~)Ib+Glpuoej;nS9Xs*fAqZgX*174C6;<%HE?tFLBljarMK_E(jiuwi6l YFsNkOntkhWD9{iFPgg&ebxsLQ01q5a6aWAK literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/2cl.png b/src/wp-content/themes/Broadside/images/2cl.png new file mode 100644 index 0000000000000000000000000000000000000000..def0bcd666b844611491759ad0ca5ea27c46f4ab GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^Q9x|N!3-oX-i|E?Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JisS-(LR??Je*NXkm(QO+fB*jd!-o&=-@pI)^XKp1zrTI^ z22`TZ8nOsTag_x51^mdK II;Vst0QqEPTL1t6 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/2cr.png b/src/wp-content/themes/Broadside/images/2cr.png new file mode 100644 index 0000000000000000000000000000000000000000..2aed4f91ea7bfa6be42c47164351ad4215cd88ae GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^Q9x|N!3-oX-i|E?Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JilhU4LR??Je*Nv+x6hwHfB5j>`}gnf-@pI)^XKp1zk%|X z&#pBCQk*40e!>5tfFanwLI^16?CIhdQgQ3enT?DG6nKs}ID7o~tA376FJ^vK>|JAB z%lymhLN8DHR(m1CM5@*+s`nvx*DV21Ml+qsS;fz%XuL>4nJa0`JjaJ*AO!{4iwgb!;d8UIq+Z$3%0AdD>4uJ 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/background.jpg b/src/wp-content/themes/Broadside/images/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7393c200f029412836a1d2a63f4770a8bab58497 GIT binary patch literal 56711 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

    7wkDkJ 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 KXiyFQ>HL41Umw8$ literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/about-background.jpg b/src/wp-content/themes/Broadside/images/backgrounds/about-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..76d796e5b17d773819a256ec894417ace30aa0cb GIT binary patch literal 36991 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�v?E|BMn!Iz_tDBN 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/background-image-600tall.jpg b/src/wp-content/themes/Broadside/images/backgrounds/background-image-600tall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c0801627b8ce7cbb9335295cb7a7d105fc662186 GIT binary patch literal 58265 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/background2-image-600tall.jpg b/src/wp-content/themes/Broadside/images/backgrounds/background2-image-600tall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff6f962373bacf773779332fc0e6bde8f038eb46 GIT binary patch literal 60029 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 al)JDW*WL5NbJtwAI@J5~`H|26oBAIkPM6vM literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/background3-image-600tall.jpg b/src/wp-content/themes/Broadside/images/backgrounds/background3-image-600tall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cad95a9819cf2f3c220c75e27830944d6188c522 GIT binary patch literal 65587 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 Vw;KKBtIazmefwT5&x8LK{}0CL+E4%h literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/background4-image-600tall.jpg b/src/wp-content/themes/Broadside/images/backgrounds/background4-image-600tall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8248cb1fb7e5bd181949870354956b4f75099d9 GIT binary patch literal 71300 zcmaHScT`hP&^BGVByOs7+?>sxyLV6Kp6u+*JoD_o`G242cuWmV4C&|@=;+*O z7u~-dIsh!x?Op^OJslGr9UYQ(Ymbgw*WDkDp>uyjyF>qPkuHIb{(psm)?;9xwY28{ z3L^s}O=u0%f5OQ8KXUFrVf|nEZ#wO1W=2NlbIeT4|If((KJx$X{Ch(OU}dmpoMxm4 z&@lk$83FYF2IxlU=osl3|3^2Ps{aWCBNH7xGs`(vHg>R(9hrKz*y z{4qv;*6~O-3Q%w%CqGcqYz6UzGXJu?ksOtK&SGr|Zp|A|cCas=@zUBrMqJk!DD0Js zW@F#(h7w&&luZDp&%KKs_=pO_pf>Y?4*Q%qaFDipoI0HAe5FIsn!eIKdbf&fF+SN>@JlkhMMUvW&0>9Tj3CU&qkU0oKKpJ+^n43xz_~6<{){RmB z=)7fcC)i&BUZI#SjL?HFAN@5&Lpiu!oRf6`71yJH&|JEwp_x z17s(-&c<=OP!KUdR{bl*`%wm${18p&<3c|KJ@-~mKhbzS_~oL!J2F^)D#x<-lu#+D zkkYWLTaC9$yj3!`-1Z5&2bi^7(t|$!qHOs znl>?ihQ)F1A)jd36TVcz=Df%*JAEkIXWK1$^c&1TMijiuP0ZW1(N;?5eOBL#rFO87 zn-8hVI?#`CQNe@?p|*(lOHExAL{!~kh5}7&&(2+lkFlJuEpHfUB)E+?>k{^02}DKk z7~am0?NKgp>SZq2F}+_P2rx@=@HgZAJ}I5jg6mfG4BamCafTN(i}tq}mC3v&E|_ZW zhb0uM)lx%-t#%(hx0U3Y zJg}nuJ~!IX?`dbeD&dGFj=LxF9DS+)FukF_v37b{Y=v6D`}&(-&c~Mty%yD%BENoD z&Of|>qheG)*`60|Pj$2e0WSWa%L_Jgo))m`F1+haul3wE&el&tvN(~MF|I|4$Reny zqQfAWa32d`GWPEECq(ro^sT0zAE+w7(gA-|s�qpBuRV%s#Ksa01D_;qWl^Zh3XQ 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 KP|0*}r(!rZ^CEw$#E*4u^{72v&OAKn> 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 g-j{lL?T*1{?hBm6@3l&jfuI|2zHv0OLWi^Z)<= literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/blog-background.jpg b/src/wp-content/themes/Broadside/images/backgrounds/blog-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f36b338fc47de0475a7a77c4de5f10970f277845 GIT binary patch literal 18847 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/contact-background-tall.jpg b/src/wp-content/themes/Broadside/images/backgrounds/contact-background-tall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eeea4f1b715d715bab25cfe60fb9054d5dfe4ccd GIT binary patch literal 28624 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 BxQ0;2 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 XY!+)xN`}mNr`_SD6CW1M|9$rV%K5N{ literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/img_1.jpg b/src/wp-content/themes/Broadside/images/backgrounds/img_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1256e5ff16e3cfc23be94cf7a7cf9f2f9ace7a4e GIT binary patch literal 30334 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/img_2.jpg b/src/wp-content/themes/Broadside/images/backgrounds/img_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1226b38c5fee8ad6b0b12b9abdfed30bcb4e4368 GIT binary patch literal 30939 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 D4RNL8 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/img_3.jpg b/src/wp-content/themes/Broadside/images/backgrounds/img_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ce461be6ff942be18f28e5a88e6b627eb910888 GIT binary patch literal 34474 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 IlLjdN*?izYjsO4v literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/img_4.jpg b/src/wp-content/themes/Broadside/images/backgrounds/img_4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..decea22beb33a895b8077b32302c011582bfd15d GIT binary patch literal 38482 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/news-background-tall.jpg b/src/wp-content/themes/Broadside/images/backgrounds/news-background-tall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6427cea7b6541d037513c60d442f277afc31bbad GIT binary patch literal 22648 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/news-background.jpg b/src/wp-content/themes/Broadside/images/backgrounds/news-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fed4853bf638b295c1d6786b0648d068aaba584f GIT binary patch literal 21763 zcmZ5|3p`Zm|NnE&oEbA?Fc{a8p)`|_=%N(IrLrl8R1!6nByB~T%hu8v5nXq-3pUA+ za;ccEMCEjs-AbjXB~xh=l6)hP`hSky-}m+V{pWIK<~Z}5^L(E7=lywqKF>40H-6V3 z;oR9j%tjcFP&nMt_fDkm9lL7X&j>>VLP!R?x{$6%_{Np1Q8*2Iuhy_y$+{&ke&_TrGmb`@egczhNv~ zh;X)%!YpIxVBbxM3IZs=l*w=5^6Q|JLMi zZqy>m`(|DK(j+pix`~$&ptHV@HPu~B+|P+(7g|tGDw8(~d#`UOam&|yt^A>6=jf~C z(civE=Xa`-=h_sDckFVGv^L*Dn?(^#0p=J5D24n#G~w3 z##lOMGIkw3mXD--F{Hs!G=}LS@i-dk!dtFbJlsBP#^m_~*x_V2srA0Je9=RTe6D~L zQQm>?Bk+MvLUmWAF0twV15rZmZF1;>D$;uPtlLH)l<`DEBSF9SR${N}G0E zX;UzGZT5OnXOjM0#p2fVEo@(ZP2RL2deVnepYf1)1qyq=D^hQBOxG35E3o-2d_4o~UK6Z?hvo(FtJPhFRI{e(H@g~wtm>0B{f`7}ARWo{#9QdXU;TU7T} zYGt`{)NZvdNxERK=%~6h?dVaA8MtEz#G<%p_`!DJ0wBB*jiP}yT)1FHJk`pZiel}+ zcQ7E+(w1`(=Glk~wS{At6L6^TIUhp*sC$#=6-E^uJ)9!l_gKblVk3RB@D1V8Bdf3p4a;D)1f zOF}l+Ya#72QcBfnN!fYcSKOnGRrAEom!@%Zrc;-H!F1ePxof-hv*&TQVA=EXLsQo5 zZj`Q7Id8%-l#P>U3~N3W@*{pL0b4mZ4c($v(i7z~;^i*oa-AuF0Wng-DC?T)8MFQY zMSxg55|IP|K*|Crqz?mwkZB&vHK|e9I*bL3_M*7jKnu`!zF4HeaV{xDB=fBw zJeB#8tOhw(F8qvct7gcI7z0og^S6I)QkjUFuFxU5!_X+0bi8fTLx(?>cX}K(l1^Mo zi7jtu6OPAPu@wE!{E*LqtRLLyNr%YM=M^qjVo};4I=mGX2%4+q&gdrj7FrLs5r zT?>3am_i!VD|GAjG#@wAujfSyUT>?=k1ad*NagJ)G(=L2gs;lYsVGc5fzp|RQZQ|~ zB~8HRA|M3@3dmXkc92pd85|6ER62$gmb^EPFz>`lX(63(g`T*TI)iR%rR$lak7OYd z3Q4f;zt;Hg3m#cQ>dCCd1Y-NlDLDV;$Rz1Dnq$X{L#z6+SxAhFwF-O4V+99;?6(T- z;#L!mCQ9=Kldx4!-8AMZNiS~Bay@;N3U9xxu%8>Pf53mCp~YOM0S`l=$bs@t5e~!- zvfZvwS#$GS z72Ua#s0u+8M405TqP&&p{ZcCOJc_ZHF61LC|9x+CC+|dQ_4p`S+QeOp>G+s69extU z@n3dJ`1C>HN@B3KPT)`;{3z9X5;}d9w%;1hO(@lvr~3NKfnb-Tc}}T&6!ucCzgf4D zeJMSzf#j~=jE8NO`!1!9TA5uaZ{r3(N%1|;jhk6(bE07TRGC#ltyLpj6CT@z^)sGt zg*-7b010U^V+^ji4%7()1MC)U3J8$Th=Rx}6+J0NF9|f7_xxz13MMRQ^E}&cP$vb}) z3#pLx$Q=3Tdh){P`D2eeo+{0G-OrjSGpp#je0Jx~VtsuytLB(wLyMBgGU)r7GT|#f zacd;O5N;L9D;vTsE=c|A2Zw0C`t#uiAH$TM_os{1N3N_mDD1;6PVsJ2=JD262fgNv z8JlHozG6vbety_R^=RV~LM`;9if`c=Ncb6xf{<+>^g)D*$B+JsJ~nCXVwK0;Y{l%u9*M_!$6~iU4Sg#Jdunv)eloT* zz{Dp}BlFWh_2zqyL$BpufOp{!an#;g7H!X{Nf zbCmE{BA$I~Z4>l)u5l%Gcqyh6C(X!=wt0SWzZHtY>+|KdAssS_#dRH&srMaum|aqN z-{TwlBwL=Imb~YsN+hZ0#{Ec4-h^%L#Hi{5 zt28`rfCjff7U!O%dR?%2L}sZxcVRA9uaN0nzZS~od2bhtMDG5bw@NAhgLpJiwZ5CE zTBI=zVsCF^jR41D9s$u1(66gp7*pY-8@@Nrila(4^FT8q$yMa2Nf<2!L*--M;*t5= zH9`olySUz}6sh%b)ea!^?O_T|6|NIU7yx@=QgO;GDVvFbAVY?~g{QNnawH{%lq{8F zqq?1+JW2yY;f4`)xF@7i#mtQ&1go3$;!oxo>8;FjbyXRQ zB^x)fxkTqYTPwnMIh#jKK3A7K>gaT;+D7;~I!uMZr^L~}VlQG1j=X{$+>Ie!}nyMKg;vo>eOy}jdYaE_2Ra3c^`EF{GcNGV~yf?z{9{T~4Re|WO<@HN;j95n`-J!lt9 zIN@d<0^CgNL!27e*TD zfn=Ess>Pbp2c1W8fo^aqVuo9Hc)(4mkLV^#C?Fwhf~ex+LWbLf|9u0XS&84oP5Gw( z7;9Ktb1)Iwg-FD-HT>4AQA+^V3-R&aGpRN5m*YSCU!TZNo=1NSSp)(zg?CpuY*owbNM-}gxH}O)F=PCiW_E$>yNY1)L zYa^S1Hsa-M!gVTcS$0{xGcFJXV-9zo5wit6CfCSZ2gz8lS`f@(vhLlGeD40A9E91$ z!M0->+7Zz#K+OMof&I+BQOFKC%I$)+hrf!0B9MVLaFGl9{>SQIa;@Es!%hF2+Az&( zQwfd&Q;rd)!BWX!c*``vYH&DHT2`DLcr$MW$((JGBADt%H{`}>A-6*lyD>_ek4<<=yzIwT zv~rWG-O$m=<;xU?w~6XyfAW$p5*j)fReVRt-;{$)gQ)8&Q+qntIxSi3Si~_xw>HSS zNmFZkyd}1*^ z*@{4Rvec!Gtf<|-N9*=1Q|s*nc01j~%;&pKn7`3p*%ysfwEc+~3`ymuF#q^%i_nt8F-wDBG0@IYzRxJzQ9);340 zpbCV?$#`)yRlI9dZkZ3ja`j2>J}34a&z(u-kESbTY(}qDS{CT&lq#Wv({^NOE_Ngx zCb6!e6}@89L?1l@OIC6Cl&LLRrC}M70--h^0bryU#oEg4+{=)l|`&u3p%k~ zg)ln)Fg%b2F;6!X{1BZ{@&4*2UhNW?8ty(yZJl859O>9Ye2h&YG<~tsU*x8!qE2h% zX6z)oj1uh8QJ1!>0r>Sj(8c^P%B#07-}2P#p8_oJ(#E<`!x=>e;{p$kI5oME#XgH(cZ<|2j%WzEJiW#o^OPRBPHt&| zpVXta?_vFO*Aq)R3aFSm);`K%IvWh|u}=JYDHbXpxnhoG^7cK{bp`l~OgcQi!7>&~ zrQkDUrFUxhw)nL;%J6KiTw)Z2?InYoTZyM_yi^Ttt93yhT^I8}E^uq6e%ahZxGxRc zr8^zvm~64O4jB>A_#Y z1B>~DUd!F4BRJ2$_lg(v$c=K{scNkejjX*?MWfb;XH?9UENzB&KVHew8i9ROTf(qV zBmeaZu;uU_nqlzlLjSTE(OQ%?0*h1tQD3L*;9@B|NaP?qZbkW&l(ZxLT9n3<@D*L; zvCa6cABAV0Q90-5u~RLnnRoV10^?HsFq|9v0I>TUE?_a=k$`=ttP6jA;wW+%yfK7A z<&)PuA{XhZBpqAbD}&Jg611EGKnrq9QSFBi`Re#nqg}83^q6!` zDpw0TbEu<^qx9aP6|=!T(F_zCjorpyV{$69pwCRBfhTK z#84a>gkF)7c08dRy;Nx#pf;@+v^7khKYpg5js7;GdT~M>@3k~^sn}#xEehSH*Ga0s z2C?|o#UF<}gfXRUyrlArxyY+G?mN1ko^+9$*|EZ`dU+VSH_*oMZ}`G6v|p;3`-10D zoQ+Rgg7jzj%SQu5f*1q?47DhuR1_M7Clp~f`|yM|JgN8??s6E5@i7<*Xawi^l|O`1akA+|YH=meA{^Y`4j3RU`|DJCl%`2kHx@y)hm^jK_hGDkJwG%9vKB6jgWr>X=18ns%7T+ znmGvd1Ec}zo!IR@1QwxUlp|Mb@1rDgZDe?cQmg)r5X1VN163u`Sjq;CYb-(__>fv< z&33#S~#F!JPG51A(+*DZ&eC@~F z7rL_plPZ(A+mU47DAmZAzq%K?P1k1uCA5^}?pWw=`Lw{>Jz)06r<}!G@;8H-SyS6# zn~2*C9BtmJ(0godBpjOg`Z}JFUNE%0PJ55|754FPI^n>|71wM=zvr;L}B zqtxC#NLh;drJ3(k+NnRb3!|wDlhyU?8~W$OE@Y_34+ER)crR6e=#iv@*u>N`NquY& z8vw=)UE#ZjprFe%$OLG1yF6I9bbTgksL@Y8PpQZ-j1!r z88jau{b-wKkh|b9O*}duQVz)LVIUv{q9(Fb(ND$q@=i+BMt8_@TiS&E!>%z6f_*cJ zku(ZgitnGK4ewYi)|B`+^yUfGUu-jt+>yhS>U`F(?R?$oNyz_+r?utj_X9x7qKKi* ztnpWZSm5vmLqXi56Uqt*cmLNNa+?8_wM!A6RM9D_c-&5f`pb1C-q_7rOQFt|VzHZ9 zC*khvf8u~j``6bUw84=7J1WM}W+0>!yGd00c2Y-e2?vQ9_HTqg&f_L!Jvr^Fmh3F8 z(Yo1(l`X(NZh+aPD`a4=jB{lY_R(I+`t(44{DzLC5151XsgL??hId42L; z+byafLxV7P|862?LE$0-kc9k=fEFF5s(GM{7z7)pLg2(-t3ZvYp=LLSPQ zgut#0H$X}T?0j3n9KzTfL^VU!rbrGU21^AHLz-X+;uEQ*X{%A@Dm(@}0&}6%co=0W z1G0floWiB#6G}eEBI}(%Ise z$Gu|z27g-rcHdW#>4I+W8RPo#4ZZh&>&Goifl@9G9$Xb)Is-Q0Q186F~r#BVafs1c`mahOA$ z&2z}FGgo-SMm{_bAypZ2fq^W@wm)^v$McDi9{&5#@zwCa$M2(-7)4D1LZoNm%<KUqN!(TP1 zv`iu~_c;kkD0EUk*Rt?3ioPR1wkri9lf$TYKSY^mAKi1_%|xwb*vQ&JIhf`kmq`3& zVM8PJa{gvKA@F@sz^y{kS@XfdSOI>+J*xFg810RT@WueLdV+=;z>JytZaG&yw*0C(m0Mg|ue5?B z(mhNp$StvDB97eoMi-s7CVFRF9XC$KrVJ@4?f?T@itWIjP|*vn`nn-!UK&W)yDFoKeWJ8%u-Q#6*Vm8F2+Jag!HUN4!@VyvHrhLoo=NO^f6~fkVj9 zPXLS$^M3mLC63V#LpK&S@)x200@l7sc>gy|U~fuDFBP*5jg(6|ikMt2Fp<7B@cdz4 zk#K0~x4a*o8GV5m*Kd1#pm^Xny!UZ8{<=XGRK0v-J*e*!xl6I^-Va}J%af(4W*;f{ zpmtDfA5lLQYFI*!v|}avSZc{Fbq_z@3;buq3Zy4ycxz#!NR@ep0gtXsMt5 zgSrr#=zUd8sJm!yc*8U87CC;`Rup|D-30W;V^Y@^<>vk9F$3t@`x_lTF9dnwpEZK_XisI%{ z{vt*8C)J*fy#>$Hr4NwRK%tLvVpT)g{78=jy;ru8PH}NNS+1v8Z{zHPHg|D0(9Ut9 zh)$3xc+6HG!@Z__a0SNRs_jB!yMGK1e6E6=6_RO)tlQBoCjDXZ%8A%396tObffxpZ zXz-r&QgdM_p2NKB7u-VSb)FZ=O93y5w2mPq8*9K%SRz)q%w*XT3O`x1rYgbrwiv2m4m(tGwA8pIB51{Y` zsmaN15L;!zyn)JZP-5YSE(7`b1^ei~@e=+@<#9bXh!bjJKe3*dbY=5`bJEQAf*%Oi z$>~hq)Q3mQ-Q0i2+(Xy0A^V(T2q~<5*K0CRtwr$$9uLvCKZI`lsyJ#+3y0SB<;`Ba zB{TM~ll7w|9gnDp&PQ&V)rp5AsV`lKK zU8j7@HN^WQatD=B&WuF)0B#QVFqQ9l>ll6p1tna9_I_1OP2am^Aac{=pi?UI@lwt% z+J4Jh^{ffO3(LZAOUwJ$e1HABV8L~2*}~K;l%p)ed~62dmiG%G8!Q$(xYdCI zf%M$}$;|1B2~R9ks@Ez|YFdoE+NwH!oAo+RxI)Ei#BaRAvOhiOqVEk1f@NKQDWHxD zO-$q_Ci9_UK^+wr-g)dJ{bk*JsEWZ9%~;h8hC-l>b$4JOo_p_^H$-95sjA`F<3Cs< zuEZR(b*ikz_P)5(ru85;#k5Llbm*x};BY2oWoN(ADeeYt{sr^g49o;-9c-QF0rh!6 zf4a6Y9#;nla#=28 zca8z;wY649?pNHh#JxK|fzIqG)No;(dlfD+ElQ7r-4@C5mrSPii`-5OB@S*UmEhOv z?Y?aKS_>-lr>h|PI6SBVnj-g5g??`& zK4z{#ZP}+#&i-nMGNta6F_Ns2iP&~=GHkmvSW>}z)^dXK8y{^fmZF|tzs`Prt?QzKd; zVAV4C|4_l<|af*t9N6 zmc>)q6mv6FJUoQ50y`IQqfiEQudKp=I8R(aQYf^W<7CIeh}~X0b}tf--(z)Boc}}> za$XziwPFEE5F4I*slNcGna7wOOz9;3Fg-ro^ha+~$#XKZ<3AR)&T$*^A$mRit%q=R z^UM%&gVB?`MW=D~Qp{z}N}}`VmD-}~u0|XriCTyjJ#J-LG;$0d{_-1d;PuJhVW!#u zb2T;GL&>q^L?7qMTYtd{fzNHZo-j8d1u3!@-veA4)}*vEY@?3IiJ`R+Brh*ITmOyB zj5uTAn&Nxrp^yHqu2!ubG^oUWY^9OQL4WfCOt-O9eXxyMuBSuC~}k2k|Dl;jzH z+M2~|&wX{WoINZNYp3=2QFVA_&C?l>V?c@aGNodt^SL$yeF0}?uV43w&&6nt6Y=V; z{Fsp%6Rr|V9AKNs_PxDTsL-AINW-M2^%?LuZym1@mREf=eo<-k#z#19#JxV zu$T6!_TFftgA>GFf%-jz_D|Lp&z`#Ual#WqUT3;Iq8WYZDo^B|I^0Z}Rgt$_>pgQ( z#On(0>zlEa<>*cXtmI&sRPY_JpGhGzd#M)I$MVrE&q$v2krW-mmz2&5j8w42R8dCq zZ@8`Xo0cx4nPf)#n4%pj1Ten;riq8c+J@bf5;(9aOcnZNUQl`l5*+`Y~+n9Hn`n_mnDoRBOt6HiYSr0qH!|&fC8z zbQ_wW42Sf^V~YqZ+8bv6xOKJ`)iq{bk36;3qkAWE{ZzhT+hopbzp9V#=|{IPhevy! zA5}%XPt3?x*u$I_FLLyV_lNRXChG#L$y22smNWatDc!c7Zu@LIab1yV*v1VHRF+o7lKv`hY=TNSfFZAT!j1B3qbbIgQLc){jM6lnMeI_F z7e!Ysmf4Sak;e)_4c@|9gvP0Cs7i%B^46b=ijpr0xReMZf-YF;$5vtX(^eb)N{(dT zn!S_IFIvD|@k8;tPvWd~XFQ|GEHrm{axyBa!@0ZSRL*f%gu;fF=&?XZOZ!mN)@vNU znuYd3lP$I!6x)VdTa?w{iOI=?@Kq!+$;f`*Olp48UBZi8v#E%A(=$?tks&z@RV$r@2vSOFvuSmPA6m~u8RiaT+v zI>KY`(>t4Xt_#OINLXmM{yNLy6kmM*ts8&LID+l%B;^+fg&vP=Qm&3~XaYZ}DF5p*_{R>#GclVf-*ghq{hpXTT+s>A>4WETqf?_O7k z*s+-RW^Q5YGqQ?8Z#Rk8I$Aw{eTTFvrM*bMJ?zI7hIYvg^KXP56h(aM z=#eS>Nb|$&aZL!N`!9n9BK(X3!Si(`%GB{U8o8A%S)H8q3=^FUhfwcnoGchW^`z4A%4XG^dz;_aj~}1mH)YnGd!0+yl6y9MNA1Q+PW)!>?Kk|K znp3ljg%Q2dd(Sfyp{Y6wvDYSjd)n+Gf$6{!kR7eu4J0}1PaZx3UnARB6Q+M-VPWGq8n4&( zFK^Ticu3W&MxMYh?c=|oxm><^GY7f%$lhF>0vM-XfZ8 zL0iLG76MJWULy0Ziqk%vGkwx5z3!kNJjCNj^9{&*&881!-xTJhAaa`ot+q?KzZVk~ z+t~UoYo%kf#BOtVjpHLZ|P|YhW)QopMxRKl$h0`yi0fp=@aDAPL#8S zy)5I(Z&XAd_ukcOvc}nq9o@D*3ORm~^>&NxXVz4UK}G5xCy!o9;{TdcO-zmYlvK% zx+sVI=`&s!Jp>vZ}(&V~vt7QUeiNkW*iTHYFlbz~{>s;b5zl)#@ky#xan$PAYi8w5g3@i#j#XWp zsqg;Nq?dDc&xRfP2e$1Mnw3{^cf3`bP4>5vy{NojR!sbXJGAv4#ty8VLilJeM}FDV zTv8Hk_?xFvL={jqYa08EPh@8eDsc8{{7ek4IjJza{km-Eq4@H)rym2Rfd(=)R|X3 z$F8dIs>wf#wNmrz*%LOS7u_D&TT&w$g^k`-yF~SDcOUCR*Mds94@1emz53pM-%&KD zp_{1TEOjidVTnh15GRbBEzgLu_wU?TA2T1sAdx9BXYRhhYU*CemS7EEm7t)E#SXnH>m(>a~xJw25E zJu%Cmr-}PhMUbOa1+s(~K~MU&(tM%~R_N^3jZL%6IUdt( zSL8IXSH!m5oxM0ryyB;pZvDLt*xrVN;U8F%&5G1}#ZNt*;=T4#_nN;*?siyO2xwu?WrfbYDXgh6M$=Gu zP+$drF%eQ>d+3^;HFo}WDdn||ZO|3wF7~QaNj4{Gyeil^o_pHaYs8ZHXq)DS9^zsZ zmVISoo;O@eBDv%=y<{koxR~R{O^@IFo|M@9)r*B=xqVm;nHjr6F>T$5Pts|&toy1( za!Guj(KM9+Pj{6VDuMC&k#`qsDEZ>^vgC;-u zu-j!EgLDT=IKdtUaf0y&qA|?9&fvEv{@IG8K2vvy6;Mjr+=n$ z>Q^kN!INmo!Sre9C~4I)^P4M{+TfMA_B*1ysx`;PmnL)LyEyU7o3Y(}*rA5IvmLsf z;uU)v*7r$oHR&I?s*3nPdiBjG?{{R+6XZO=*)^lVh z=s60YC&qF!YK=@lFQIa-8RlN|yq~8%T`{eGoNFsL{tCUMhS&Vajr_UulXdYj_Q~4a zi&cVT!Sy{Q-hQ$8(y;xxN~idPzE>$fxm_#!a1%Rcn;5Lgm>IXYChJ+kNfUvYz9+d^RMx^y}TWyUKFuas)+zM|C{h)7FKrsBESjwCVXi#bsT$Y`^EQC_M+X-mQ(gyt*MaeLHv*=qz_xy$Yx9e zXlIF;L5RSCt$8h0!Y=7P(nPGS6u07Go#Rf@rwXvpSs|DCiw_xPu_~-0MCZ6m>XRL! z-cxtqJzEf%9&ej?{lKLUeJixb;_=hJp(D*nv|V%3HGlUa>4J~l9=hFD%_nlmBQ41( z&}R~2*787aN!e`pJ=B8Ts$75WojB%vjXyYc&w4Z~FZFBa??tQH4AeJCd0$|R09 zgJZby>d~1X56h}f(X;)Zof{<9#QvwHoOFu+43qqWwj7hKFxR3UKQ+P3wRTU=9~EZJ zTb8R$s~YvQn}`oZ+S9+0eq94V3mukXzu2!-PVMw|{R5XAG=3`#y5#0-!kxLSU zT_5^!i#nne%i_rG0F@ELZyJGfNIT#rKh4f~Y#QdEk%$>?xr)-_?=sX1w%2C%wBkA2 zx^+tyx9xd;dMmoniD#;HU=i11Mbv;|?to%RJw(L)Dl>-M&tVb3v%XiM&jZXuSCbz9 zRpf8usXI4yZSH?U4*NOmqZuG-|2%td;3;jZZ|q` zrHhzy(pLdv%_>>Ik-5-NJ%C$iR>wll@`AHC%%F9&q!a(y z7P~7G)Nyj=9WUvEPD%Z{+>IkDVL@3!j)iPA>UL?sWwq z46g4~*7{#ITKbJl+Z1;Fc(W^(ebtQofIDNG&?bF@p`E?HVB_AS&0CVK2HgsZ(mJh= z9pok58Nwz!lkI8#*mT~j&tc%8!z{IyH6Hd(kt?AJhEjw>d#o)6V_A~Ue*W$<|FRpb z5oOI^Q^G$q1nw!lJX*4ibdG0()`4(5wUe8+l{JOF*MjUIru>Hla+}pKXPemTG7S8I zs`AF7drkBbwN(>+q~nWtiAta}cv0zsZ~C2*I5MPs4(MSL{wMJPTeJMG_urH=20Q_z z#;buLaFmD*t2Epi-p06qY3Mjbp?6P`((e|Z{08=B4E^Lg3PTTpxakWCdeaqP?IJy~ zF>o|czTs6Ba}fZ*dO@>hj@aPCQO)dFTXv$S{Z?C})8+L#r!VU))P!7B&B*8`-hM@! zf>_g2?AnP|`UstwNcw@(v<^bJBMlD^P}UuTLj%~fhMtAKSF871|2+N+f10gq)65$1 zsiE59)`5C9WPbNmk_5vngAYXpLx*sOD>K8nNww9OSyg5qXJcdLH?~(_5U~7 z__9brS7q#mRVuTvI0(P*#a{pRQqc3>j(u0Q9RkcD)XJI~JNHyik+u!6)FwZLS(S>{ zTI~JytI{v_5$RmSdjag8wyg&nX8!45ED5s#1_E(%Uu8!hX~&0OE{p6+@IN7;3g)t* z2u|8%Y1?m6JgV)=?GJzQ^A$SkU8DBmu5X%<>i3`VCxckjcl0Z5a#S;;*6fAnuFWCpzpR=keOSWxJlOu&@5GVBaiyKZ&J0AzE|9+HL)LG;CX|# zg!^itehr=W%O_ZSbnYXd<~uS1C*Wo#m{vip7JkR#91mWR0O61ce@nm3wQ4F7o?9w3 zJ54RABZeris`t&Jh^~$z{hTd|sbS+kuUJy`G*`Lveky0PI5Pp{CH!>kG02~7QeOO5 zbjcPwECm;k+ck3Lv24+55-eN-gAzzB`S%0JB0I`SHGIY|pqDnE2yxgkKdAH=Iin=Y zxUB!HV(y1r+9dZe{zMa4-Jued4YUL4gYKt6;5!;#20r$^%w=5QL9|tiZ1i*maN0DW zekwdDvaHDbug;a8Nm@t^Q8_+9eHCfp1pOVvXUWm zs+s(`A3xMP=s4cJ2;68!JEQz^#W>s(sn z?b;x7PO9PWBPIJ)4s%l+<{oq)O-5tkoDKc>^0Or4sQoNSTn?=4jDtn|kYgoyS6zf3 zT3@yegADX5I!F4gEApmj5`fcM~)n{%M!LMt5QaEm6qgz zbyFoLKT&1>O47 zg2siHTo)9pEUZgIq8?_i4j-I`wf2!_b0RKdOP>CsnA@I6oq}OFG?-+n=PsV{R5SUP zZSol{k0AtSfy>E#FAGX9L;47M7*J`U0dJGLkq`tpyS}hyCC=TwSZ%)*pRhmA-!V1g zn(y=!2~gFsll&tL6haSi{kkPk$?5{NgXy-uO{8o8z7X;bRxJOSZ}A?`=8=81x;W@u zS-ZEtRZzrLReE-r%qZ8&yQ3dBXMjXh+Bp-pWj@ zi0V~Md23{#ho|9Te?;3fQE731GHKWP?}(he5Ff!Zfn*TNu5?xC4ndKHfprU82odJP z(KkZKI+#{$0LVGCA87^|(%x`E^NZ1H?>9l@*&<$Z5b-96b+?Xqarn4Q;?PVx@6*^_ zM&U)+ewFrgm7t>^J@`gB!!KGOS88Lq4`6R)%sY1O5Q?ZCax{)o*=5jnM`<%hQFDdG z=*;;6*{dLJv(M7AsUl~z=PJkBqW_%yf}iVVuO!wyLT2HPcX_d0#`{r`m3z?Pb;PaMtp+2XOmDq1$`O+x5B?cv}yU z!U5ntMRpaWF7yKjmEE@j7(g@7$J*1?f_B;&535CKTX3gmOg+cp9cxB4@&d6DKQoSd z??sl`#Q-zV+f-W8O^B8e0TB5K*OCBT4L}pXsw7kr`?VEJM&kB}a2?n%NX-5bnzmJ% z9klx@G(*|aBbS9UiYO=euO3d__#ZT98TuJ!8{EZ){x!sR^q>`wWF1ly5IMHhaQx3w zyh_UMsAk;B9+`7^9U(wiXQloll5=Zf?oQ7)o>u0DYs_^XF`vhH<$ z)7SyhUCSxMN~V&;*qTY1LBcF?G`vKe1(FG=&@lpuiJ#>+pVu9=kKr44ZL zhJn1p`KfkVcK8xJ1GCdQQ0$@PKwN|X>b#YT_>As$K@klCC=_UP_tvK0J@aNZb|_en z0Xg_Y+*ij@{&7sO{EB)CTeS|Ea)RVgkAO9%hYZA-iAlE%x;_jjvMb@z;j&t(BUfR3 zDJZg!3ma18S9e2Aa)Nl=GB!k@TE2i{65UAvT@Wmq(PG2P)<1!-Lb7amR^?SK2h3Kz ziKU$4XU0qKwLm7`!}~LT6Ap5#KzlNvwz`-pr&d^7yn#~3z2@px?vKD7ym%jdvDdn= zEs6tGH3rY&5IZGg2ocm0s8Eyl7=JRW$|pgsrfuFVkN7Z;8~@{PvmHJFU6nz7qdq^Z zRro=Ag!b!F`T42*m^l8R3k0sSd}PKF1Wv7wF?MEybQM*ah1ry#7hk-cBV0kNXx{l;s`4g1Vz)PH(d43iY;O+Yhp zH`Z(A1REWaaf0x3Jy=dKhv9R)ma;1W|Nrns9?|u!(F{tDG{}8S><5*yD2+W+7yKU7 zoKhJ%kkcV&+$S3!kr>X)tPp-x=%}pj1YKZFEnJy?Sme7=K9vjS;|lwF zUIummYsC(s1?1Rms#GO^aT6~_#g};;gSl$t3q{rW%e^-YP)x-aN0?3 z<|xSGkel6toHjTC1Tzo95oV0fyQ3LJtUqc2s9zOJWXvCGPZ3=`^pXH-b>&yZw1!S7 zNuqnr9|sgV<%0_QE7wI=u6ZZ#p`fGG&LtrTRun;23Hc4p zB>3=uWoWSm*W7quM1bE_rLd`uvw{4*$gHA?E#*cNHQKi5Y_||9OPQ2arNSV><8VC(hy+ z@&9VL_Mj%NJ-lbL3A;fhBoVLp+MpqU8sVlsMk>07U}+){NPK{$VhdhSK#Dwut0fx- zd`)dr1fuxpVnw54HA5*6QQ6X30mn8X7OH6Dz0gvsNNEM>wR(T)oja5Nb~0!8H|P8w z-}jvlGeVqMBW9Q7qZlv%z!3Yti=P;Be;w;A3pmkQ?-Q0w<*SvCSS>eo^M)~D`a^b% z^NVoJwf>Hcyu>cLWR>GtLPr^11aZ4DN_<4Q0LNW4JgGhgG{<*?qV2g;&S4iO`$Z7B z;^~IR?0Jt5U{Tb!ymt_1=Bq;kQWv%>AIOhCoH+<+;Fd&hBLT-X4{c=~1W}HLkpFZ-PGMAb;#kZt!lKhErZb8k--lPaDU#vT+swR$a1H*urx}W5TN* zVI3AH5t~FTP=Zcs5-<3{BR|HnW>e`#@kX)LMKMyA3HuadFe#tsZDujZl=wzJ*p5SQ z{5@-@iE>V37WmkwnFwwwivLoq91(O*Ff&(n)EeL8_3Fw}c)tedNv`?7a+M3=WEClH z>62m8XJeAB?D<3D;@6AusyndLJhOW}QS2bNNSy(0?fR2*s=xyCBS-pX&I!m z2pag4`Jt}h^`78g6acVjddM31LT3&ZH?Lw}$sBA?Z{EJYm?M1|3__sY*m23O3Jnji zpma}A${k?uW*6eKIBCC4+OF)73{WNB)5z=@PS73*V1hdoE{c;ahBz5_A?;9traoxa z2Yd+UAC{^LMXxdeVCs>N=hf@x9-d9;$>Ryp(7Tow^L`&9$`9W`<(I zC5jk=9gxSU?Flp|2m1`S*&N)y4J|=8uud<&ub;-`3BciL0NH(m5$&zMD}Tt_w*wOI zj&VG%1XuK5cGWp}Z{8VviA9Unp}}~U{K9!#(r#oJE?=Jyyke3DU{)=xJ~%-1KgDN* zbZyPLXXG)UfuJp}9wJ`5j2(Y~RS&a{f8yymFc>bQ^<}~Q$MzY0Q|`W7tB=oKaB{A< zHz8I9LLT6RhwfwPCdKD~3&5_f+9MYb;>A#B6MvT^mE0SZrN z56C%HEN?c==#YYfzX&g3Dk#UCQe`92$R9hw1J-q zIN*%%+D)wCJwE6zTGWGgv&OH;qZtU$4P$P3#a)B)^Uq+k4_AUR^(|(PBYjkTv*{)F zqdH+4)YyV%GJECY9xA&C8L-YQsA$F=^^Cp^lTMIklY*D2feFf@;BL_@PV&9}25i_( zsZl@okd=5>xyXWIu|%Q^-+UX-$KMPRs!z_r{fW#LeHV$>HD0R64FN~72J9f~u#1yc zFZ8jCVgx$jGqk;#Y6_Rsr*uvI8+DGY$q+gTmz+)0%`T;wKrBO&fjD30qIH8RD)87Ui&z6Oq8v+ z9=TtscT?GqB&XRZIGE31npcIZ%hoF3Mk| z^Z6ubA9e>jZ4)uZz4tt|I*2d$<#h-a=w@@ux*n%#!dHKVUBDPQb$cNZj#yA z7Ym7{jq1ckTA76wtIayHYoD+JN^=BkX-_S{5=~_61%B%fyuK;Y%MK3_%S-p|C?uM^ zSyt%^%D}yCMk2^4(ns)`vJj`_z83`n!Sor+)99HEy}2rAc5$e1$_Bahc)Q}dU8S-6 zsyrb^@FB!I-3s`(6W^X=Gn0zNC%LHjlRdRDx=P$FoP}s?ZRPT{rO6|QEyI^8rGlEW zx;2LEl0uPM#|mhOXQ`?H?_eL0Ok@Pv=d6$^5PGdBcLERgAgN6VjSXU3#B7 z3Xx~EDQF~BEIpf_|S*d7lBCpC*0NnKb91B!8r zO4pS|!@w!}iT>}-2o|j@+v_judVA_U)sN2m6gs6^iQFcGY6dNPG zJ!U%ef;~&dqD5}m>O`c0POt`b_0yd>K3A-t1jD7?msoEe2=ulypCn`Nu`3wgWcj=y z8lZr%-o-*)PY@i)i8W{POR3!GD90z>egaX~b_o?G=h4#2oa z@TUoW#MlX*mWbG>uR=0M{UhAOkL;QTWW6{X|`FcO~olW+ljhk^q9EU495&%Ea z{$YzK1C`^6G0E}y1LSv=NN!|j^pV!SnJp;7Hf44UDTsS0s=~TC?z!-LE>Lmv#z{5f%d_bFMOLH2d6td4O6J{5oXn`z#pbM=dD=*2d8#U(yb zUtYHP1+s0|i}APSoEeP{`!%urMX1Djpv>6L#XocUKJOjHyW2|D-JGi20FO*7LW#?} z(y_n|qk@-Mm4z6S=V&yv!w+)j{pJ%Y5!us?X e{qe6R*}u=O3;VD!5k~L>Y}++v)ivhj_x}a9U3EMF literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/portfolio-background.jpg b/src/wp-content/themes/Broadside/images/backgrounds/portfolio-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06333be423076563b4d2f756ec024c6271322c6a GIT binary patch literal 91411 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 VNrN`kR~pQ&=m|dnWrGjK{|DU~{U!ha literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/projects-background.jpg b/src/wp-content/themes/Broadside/images/backgrounds/projects-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ed92a3ae7de831b48af5d3827c925751078e619 GIT binary patch literal 64029 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

    pVg$Q=vn%RA_ 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/img_1.jpg b/src/wp-content/themes/Broadside/images/portfolio/img_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1256e5ff16e3cfc23be94cf7a7cf9f2f9ace7a4e GIT binary patch literal 30334 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/img_2-tall.jpg b/src/wp-content/themes/Broadside/images/portfolio/img_2-tall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff6f962373bacf773779332fc0e6bde8f038eb46 GIT binary patch literal 60029 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 al)JDW*WL5NbJtwAI@J5~`H|26oBAIkPM6vM literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/img_2.jpg b/src/wp-content/themes/Broadside/images/portfolio/img_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1226b38c5fee8ad6b0b12b9abdfed30bcb4e4368 GIT binary patch literal 30939 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 D4RNL8 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/img_3-tall.jpg b/src/wp-content/themes/Broadside/images/portfolio/img_3-tall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cad95a9819cf2f3c220c75e27830944d6188c522 GIT binary patch literal 65587 zcmaI7cT^K!)HX^9y$3=OPzZ!h5JWmkZviCqDpEp6By}gUO2KYoU~E7^Nku{7 zN&Zm$+o9ml3-j=gqM)PzP*6}fk`L`suxfh-xg#h%-;j?`{#&F-qM-a=qayE7QIWUg z&HpiKDr&NkH-P_)n&y9u?mwgdU;FQJ^4T=h)HHN70Gj_#%m1G8|G)F^4Fv~1l|40) znv#Qpii47xgYw@9#ajvrYI4v2ZOFI!pHWc*C}}8Y>F604|IhLNn*U#;B)8Jg(bBV1 zP*PI@=xAukcLSiLqM@OppafEL2!j>mwc$FJoB+4rcz2qEyh>yOZCgIwV3i0L{fCvq z_MscPGpkl0ZV%BTMF$Qj9x(fh$Q*C@zum3cfPg+TiVvb~{b8|xDs+o{EguVoDV}@C>IcT27CewAb(sM+g z$9dB{-qY5Z1dRv4_qEc!&i_i634wEp6U0%eX9`Jn1Jps;;Z~h_W=_Ckr*#JGThi{$@-|m#ovkU?07CbE2wVBxq33iEJxrw zfITt$6$rU%a5`64f;>^>{S{%S4sBu0(tBp&k|qT(!lXN%g(Qw0o;Of%NP@Df=8!xY z_T4t&tU$qw9gC-u*71~HhE7%b!pH?2C|E6CSkhp2j?i6jJYRIMVi5Xzr|x0Xu%Gho zSAn6J_H?NF@&w_^-N5HGE?ZqorxP3InOr+iF952zbMaD1lvCpxO4SC!p z*POEa`jB;nn&%cO$ZgB^B$}%Nzo#uekf!6SXZE#U2)l)HWx}NB^gNhs?5QY!&7M7# z(@sjkXCJt|oLT!Tr3tCoTvECnqc#=BPOKFd%Fk;D)9#Y$S{ zz8J0-k9t2uh5yiV)sYH4_E%*w3AixUMG>|%8H;lc7@-;4tm5#^ej5RZ$z3=7(pBEe zQC`~x`Ke-E+7KqcQpFE{wziJW<@#PXFB0-Bn&k5MYQaPjG{Id%&MPoY{6;>*mY+7{ z?o$86i~K@ZiU)7S2VKvzYsN27u!oQ_I8pzQ>tI+hL4AJynw*721B? zVWx8Cmez74=kZ!_renelu}3ICXG9;nj%#l{6`Kh?t|+a4R6`#q9MEekr45ZDELB2? zBbvRVBEK|Z%cvMJ4alw|eVy|<>%z~!is{tq4L%V4%OuI}B95W*Ga&qghCWT%6Xirp z2hKf)vGU*YWYEHl*FP7}!B#LP3J(`q=<}|2E#4F=7i{Q-sJ`2>)pmre&tQ$Y=XC`g z3Zy&e&Ec{Ps0cO-1%}9~xs~@DBM*mg#WfN9gk+ONdA9&`h5CgLcdR5i=mN0qrClM#-CE`ak8lXy&P_Y!Q5KLH{qdkR6x?B!;3&$U5HO% z7Ye4zWP#?;zp#-UI$Q(?O2+YxZy{2YR%B-<7w4E-fxzW`1LgIR#@XxXEE-ED7h`=G zAll#a9|etWlw$B_uTJwxuKwza0l8BdhwRcP-+Jq5vy%E+Q8YSMR_Ky9pY5dxx+Cto{cD ziK!7fW16w?0)|1o2l`pTBj#UVElCPm3;Q4yyGW&@FsAGBh@p<1bp@Y!m9VC1lD##v zBmeb!!!6|R*9j_hPrCNnTXHuBOz5-iSM9OUgAYf)dHe_s2T;K(Y2UGVB?b5Q*D|t! zgrxx~FjuytMt>j7{W_ETjv4@j-q$eL6NW1$BX<&{A!LkUrCyV|PD zg)ChaHoDosFjdzmi8Pm=c(*tk6S(Bl3zW{3+}C)3(?XzDm2mh1Zl)+Rti_X)D27w! zYQnEx6!1k0AipVGC%-#nv138oh0xXwmvC8hvdjwy|xC;RQvPk5vA!2ZB z96O!DCS3Z^HRq<8&pnBdU*S-jy8=14z2U+d6N`&n>F+b(XEHPTI*=+3R4+lX?NVc$ z_fx^_^_=HnF!zy)_5o($CQBeT3O=1uVNjh3#j6vZGi({I=Qot~0V`jOh!n~T$-iw8o6orTh4jT?V%NH%!2pll zdVyAz<&14^!O|*YEL`C|^WzoShKRgsp?R|ZlMJlXVW7En>(8y#W!DHj4euxGK0xPe zvF4L7I=6@Vl1;6{k^zQ~%xmn75e!17x27^Ep-sN%Vwg14>5D;3ZrFGSrVrQcB52|T zkrj}jleBl>x~``5_O>OR70aE~_*EG-_UIaC^&WPFx(x7iCZVz*#X+;H;(=jUlQzm= zse8T#G{AO!!YRhDI$WnLA$clg$WcdbyeBg40p6q~?Xh2=k<^sqcYE=P092k4Y-R&8(ulh$}!ziDXxl|uVucJ$aDn^_B zfn_rFr*&6r$cg3B5Na8J^Ko=I$>ItWLGswGKN(TpzYRSeTyio6(PmqA>m--+zQa1Q z1sUDHD#~H^qrO~h*eb9=F;(`rb9;^TXiCLupvj*3WWTOiN7HeNLxBDw%W}qEcarwY z&2TMU{`E3yTG>!|VG~0VOl2OoNTuTRzNbe(?;nMn!9$XhlONkoI#+KY$@Pvlk-6If z`5e}G!_4BOJAsD7KWwzYB>U11tWcCeD8YXaEq2QQ5VS6GMKdF`^BJUmOs%FBY&cc_ zWqJmx^n(Ag2^zKsdvvBnE~Dq*#t5M44=REF_qqM4j|GIz-5R zk)IY2;DBbVYPJJS)H3cAWUIBB^3$CEy+%{$J`K0&ww$IhN#ucwa&Y3`DI&kS`%?Ir5U1-U%4!9_`lVR^(f-7iMamfNVJQ3Bgz6TTpCxv z1m!sOq@&YNX>MRnfaf;GcEMO=kHO9(ptu|0-?kw2Dp3uIEhzb+YrV+NQEoV znau*~!7-7DjxE%uDzm&~x5ixFNf;Az+#$_5HpcP&)~e6V#g8jVDMW%_ z{CdmQC~i7GIF#uXIdGk^={Lv2jur&|Rs?}poQC<2o>>kf(A&;U2~lNKBbdNB`$T-w zBLI_s;83HRkq@+H&;TvVt5*dw6^Lt3 zqp0~lH-(wMx&)D~h(dgN?{*Bm&Ivs?ev@yG&9u~>kCk7Z#y!h2u>FEaQ*`1M058_9 zDaI!Xpv&`{vzP*b`3s!p+#heNxwRb0k*ly? zk6qi2#BQ0^MqazormMs$k2n8E5w<^S@41}*sNUScvS{6+N{x6h`Vt@Va%Y|KYW_H# z7pv?n(Q+e`1S?_gQbD`}wN~FGnPR)69A0&6+;(RP&eZF+@Hu#Srbd;0tM~Xqm3ndKEJ9ZD*VK+9KeR0~_U0;W!eEEnIkvi*2l=v*I)EuW>Mffy!qIPQ@uu*<#O?L+Jxw=Zr%GY6AA#$qZd9P_ zH@P^~=i>p6%YYLywi11^lewjbkk@?GJcMg+S<5rn6_9e|)R>9kLX@v@uwEOyN967z zGDdU))-3n5H63_%Lg^#g?ls&{71B2|5|Oc8Y^GBj*Lz*Whm3==vT83laH`~$oC zHdng!FLS{a^J<(ARMKAz zCBzx;T-s;~zcyB7%|x3TOGchnya8us zG&?sLOT7FxkpSnHi&ZOz0+NysW2ULS_>mdZLIne1A(;1Dl5eZALU7eIPdk#S2$n0X z0e96s2gw2!{sjXv`te*hP;bneS>Lt|nf@=LR?E^**aw2~L%7ZH<%b>5K0ueHN|ZxP zidE(B_mr)V@_!rIF`@dFVbaALIsW&=8cV-ATTlB@dfaJLLfS)MRJGP@(+_7AsV=c$ zx9w{Qby2mhA8P#Z_6$kFn7m!LD7@`W|CBxou^yJda#hwep$G1MO#yQ*eD{0Kjspa8 z4>yKh_H#{m7j^<{f6Fq5#z&~N4QKv@8X6^ukh+gkp{CgATT;ElceFir&zo|rd}$L5 zOxU3`nWK*rrG;YE+yxhi>t=U2M&No9g1W8lTLGaDPAgnxFv&KP3bk?=t4MQBn+n}D zgH=0Sz_UY;`6Q^PQs8c2Be$O{`2i_<-r2Bb1^zwM*AzM*;A}~LBG{8`6=@d<&s2IZ zwXLMhyO{aJ97F=VPkHCCPkZolgul&~;fsa$PFski>!g`Q(cm6d=i`iZ-(RSMRj@?E zb@Q+8I<0*#7~jtDiRF80%U#7AJ2pt>sl4;s9FAQZ6kCkGN4k6EQ6C15>>J=>gO;xbaJs6|6-ZdToyqI^+kSuJDg2%8p>hp<^Veut7%P_%Djud{i4-duEs8pBQJ8@K_a7WKiEy1@E`Q4vxoW7k5(yp zdD8clQ88s&Rp>hfKaflgD0jANU-x=egOMeG%bKSAU#D0Ms&egm#kd?RF!UdG-unS) z&J&`N)ve4G%9MLOaB}hfsLkV4U*4Z5Sd^@* zhhmD5goYMDd~)_lkNxR$D>jJW!a~PFVMN*^8rF8f9m_Q@x6giTEItKxN>_q}>n3gU zQ9v7szED&HQ(=_5EE5Wzto@XrAog5e!N-j&Or$=ji-;8clrrn`xS$D*vd&lFCx|oB zF8>;6qww7Aq?WStLrNum(0$aK_$dsf_V|eg)$P7l`{ByH*)nD&OSoC3@(xy@JKgEr zv)I(sn>nkaSJmjlINd}Ch@p}N$*Z{8ONkbjEq3mwKV}?P%}qOt)C0OoO6C&~LG0IBL6el^MtR8Ge-0@s`$v(W>xe9va*C9)N){N$ z^P^I4VT_HB77~#EjZLk5xtkZE6O*oDse zEQGeWf6n7(9Ju$a=|i46&{xf_;mmC%{TS5gkdv2HR(UXm7Owd!$p{GtS=~tVh`{gK z)XQ<}0?<|cg)L{}(oD`c>u@pmV13Dl=}6Ibx%bV}FzJZ@#<{uU@dA0~ppk;eb4w_> z7;%}UGT1MUiq*HM=9=24<4-EgOjW!d%f`r%;noOnBD~^6=UfJ4&R0zJ{HDG?vIOaz z)WPMBGsp=%f~EVJ=u3BHFl@o>5&)>jbDg8?c+S&#GW@;cq}bUse|kg-e)UM<2K*nz zwXRv#?pw_&91m@S=ZCQcBj-(MP@}>fT{a+PNq9?Wq8{wdnGo)fRgj-Y^H=EbGY_zg zwCaN|DeAXI5=uFNsI~*!0qJ_Q8!A)mbvy0okM|so3PbT>;)Q1gs-O9*jOZfo4@tSO zM%aA%$iSjuqtrsC7EZ68s!i%!U}PGv8Cyx!XC=L~#{y9bdG0etw1@2{*QZ`OEs40N z^)|{>LajnNi>2a@IB&Mib<8u7V7HMp6{oFpp;%Q`F0K^$-hS#7`J8{K3THR+>6X%%>u+dpa9=&)E})r~NN-BeX_@XiIJP%Aw6$KAtE+CaNDx$Z)8!!Qlj|BF@d&a%OFO;yI0*7Bo-c#i6SQtI?5Fn>6ulr z-*Hm5>{;{{iYd0Ph>Rv`!mc(Q`~$9+*UO%ib)j~&&i<6cN;rGg_FA<-JDNl5kca0V zg)g-%KH#BdnbkS`_>sB&K*VY5>suLBWeTB`ScOqjM_lB27Go zLo^ddTB@sy1NA5}Q>E6e^JVAyr-exp?E3sag|w{?oHr#h*(T!UDyLx<)o@QR{`O$IF-t8za&E2AK>{Q$SLpbj&>Qsx%(46d!t38hIT|x-XF7cKWHN6_ zE_qKYj3$$_B00n5hp2`v>j2qvi(Y=_Z=S)70`X8X9tnJS_n0-eOIBX%8JZX&J{-Ma zHr?OqGrp_W11UQf`VY8`_VSjr1^?DT{(M?E)0xt-q7O`CzvQ|3%h=}1KZ;_lf=s81 zpEq6+NbTdjZ*)Ekd~HT#A(4@1GMj@8jaDR*o!Q^|;$4gHG>!#7auh1{B61%@Kev$D zWt1DQy&&XZ`)~G8J}ElBjFSdv@Hx6X4aS^pRDHB1dx-& z(&3*pg|fN7QWKJ4<|01fO|3)A8Jh=AU(TC~S;;(n0Ul&5Qn--O&s^?F2LmOjqRUG2 zD-2~KLS=?SPVM8};j_q6$@X}@2r!-b;s<^fU`_7bk+ixJ2A>0C+e=CAzLt-1p|Ulu+I1qD+?qQv#ImwVl^-XHMNGEUcJE=0~k7b2@84 z&uq9)m{P}!Vh2X*8zQ;Ez7#tSyE4eoD+*@S1c2=8MO63Q_E5THR5(iEo)>~1`1!%D zLnoAbr8#9gUfra88veLDV=6LaMNnHXeUovQs%9Pr3}X2sx@YCI>-WhQfu^-}l&QM@ zDX^iWbyu8e@@+)tbC}rojwcD~bM5`mkF8j#7P0BZ4rLO>9Ad>O+8CFhu; zX;XInw8azBIP)an(b4_JyBVip>x5w8AzP}({3R}k|CAjTZ1~?~Nc7*9+jNz$8ultB z?8|*Ax=DLyA)&HPe$RQV`RUUIz|_|lVta=0q-N}3nD8XHdtF;oXXZ`TpL+=spToLZ z!X+~^orDN{%7q5Tb-E>_1`%k*ZK+bpKKV)8JgC2-sSVgNz-MZXPa;uGQRrpP*T#Fb zV&eZO6so4-phD%$dMz7ANFZ;M!)bd#Sf=Y>Kmh_1qRT{1_WA{Q*MHXeM}Z-L^QLUO zUCfbNzLEjX({q;v8|pUu1O-2@r%+J^9dNvlC>b8b8;KO{I&abn#q#avn+K*1pJSpvj9hr_l-LuG%Nn*vdzwXW%csQ z9!10mq(Azj%vt=5I3Me7W)3#xX()*5W=xr{lxtFo{c8KpNFilTveHBU zmJ>!zVUYY^h{2y(<(_Q8`&Hf6mi3m-8q#?HlH5Z4sD|40A6g5J4;|>VQz>?=ONP#J z@RZDc_AM1jVG3;YXo)SmkP-u(ZM4IzNvi(dOT{XU^7YdfLb-1VyPXtu@f85P`1EFn zq*bc&dyEt9JN?W}J^JLOm=8)X-y$kM&?Q$UbF`x}s+cDpzs+P{bT7lGsu!OOIkqGM9!!~~DFbd+4lK8=;HH5L9zLkTN73JrnDxzbXcFh&4?=EA*`SG%rS+M3 z`UP1pxA7mWZ+X+bY!^(+j1QE%FqVaH-gtEd&5qZ(p&CkR7uYbS^Bz5_sIHWP=WlG? z3CNF8=6r-FpJ#!b-o8<&vx0jKWh!$(;P8-1TE9~8c4()>29G2HVlLoP7M=Jjrs=g4 zXIT5+Cn0RyTNmGc)P&I9?xYd19L!j^_EBBdGC2ucBcxk?=w0pMHi&*@r(VEZ|9J?a z-iMkgNb6=}^4Aiz+;eWgh@-u=<+;1H0G6bKeyZ^rF>q+u%gppSUvZfXlW?u5=Oqj4 z3^L?AmwC7LO&#!~pF#<38$lTgyI=EV)Na}CIcMTdZusQ)mPxLM0`t^)kd!i*^$8s4 zjyQNc5pR8efRTUHYxLusi4R&9KUo!>W7@Lp>AN`YhjwifPF9gJRpkgBacT|`DryG) z%Kfqj91iTsb)PV{ymb5k=^dl8lS21*pjxH5Tc`JWfdL7uEzjQ9m62|FDJG7@*N1$aF`ZC(a9Ho7c3f0H z7Bc0D?fc6Lw~V@aGswuTn&;|7qd_8&9W*h!k(265NRXPN z{p@2sYUw*`r-SbtgoU*R0@e;>DhaS2@Ax`StX3d_$`86YoO#fQr{!nk@%VsNtd5jB zMZjJ{Tb)P-(P_roVFHh+tE+Hg7fk^qN-~=!b#B5QjNjov;`^k`P??7Pzy%Nf@CFx$ zz#M^3jkR8nzZ_LrXGNe*xzgtCL+gArv=>GN6rX2&$*8SXAPgt%oW)7&mGc$*BVru__WL__L&`I4*4>mgjrAv#KD{oo1MyiH!V}dY$iixH3mj6i_jridapkjKKZba@?g&;eIw( zDrU=sWm(=f!+bKIK$}5NTCN1p2~7T_Pbh2F3NkO#PIuQP{M9`_b-I)ek@DO4yMI0q zOMn9}zMWRNBO}LXe}WzUA|~5gJkUpt6+J0OI69_=p??%xR?MyARFeNFrZIZ6j2lN4 z!@?gAog4D3o7w=W7J=`P41PR#D*6{K@3d+fRGa!aVPD(pE~>YBrO`qN(e~=OSC!6p<7y3~t{z3~Q+7 zuwKm~^4G|G=|nbU*WV{>xcG~0T<0MtDG8d%@(Wmd;P`HFE+v|q&)2~SZ{TzjZE*Uvcf<2WTN4( z?H!PHRFC&fjDTRvw)P5s`%EQ4B2%4uyYp^u6h%kOhZ2TG*`fmeKOe1!e&szs z{3+>U?EX+fL^^|eV*)qxGcE0xN`X$nSHn@D#g-9Q;XwwY*UrIgVORdZgj zBMvL&!emiJwi!5Nm+qeSlwC+Ep96K>2L8YXUFP>9#pH^j-fL^t z7fEg0pu+0LPhkz|J3IQ8#SAKg0uwxGuPW|k?L_#y9QRPk4E1Q;_aJ_B0$!lgC#LC0+?U%*;19yDYvPpQs+N71P{uizV)2{dKUlfw) z4G3Qb3$RM%5vRobXU~3J-uBb>kUZVcx)ZG4~b^;hRjPM|2s> zvsL9y*{)Jb*Y%!H$i0fUk>nwC3M`kV$m0XM{G5Nt7pJ2;o)4Ci=u9C+a%L+JnG-$@ zN4FfkK2r6)7Cl@1&6mLuS5(5Y8V8z=e-jQ3Q;)p&3Yb4X=*6xxEt*eK0DJXmnef!hq?O7p)c<@_xzoHSGC){)C#MeqZ)>g+m3|%V|#E=4o33@RsD&LFA2P~Q;SeT8QTxx;O6==A47Fm zTW0!?x@>A)Wn)y4Qi5dE^ga&&_qQ;&u}4I^x#SZc0rm5F-haguhxlsi>O6;46s3<1 z5V1@f;X=-sxB_xM8#(^s3I4cpU@5a4 z$Pl`f1x!@qgG-uLow7d|`DL zfj$jOHTq=_wkp#`ZLWf@rLSSeoCkH#7nE98@BahEtcnB@mt+|+{9EXM-Tp_N<6I3y}Mq!XWv^G@LTT_n1v`D3^njeoag5Re^|^ELj3 zX{O_S#^Hr=Ug}In^jdD-Ufn%<}j+&bXgI-?Yo4hpD%UdOq;^!yO}u zMn%{eS}IywV`90O136mO@sOR8=h>eg3sEwYwb8v6Ep{f6X?C7RW45mU+x1F68p0iv15QF5jQ6tA8Gdn#)Ry9rqVC83aky)@+zZL5r46gVIOb6`Z46Rw3(O&g-!~XhVgBaV*~Fh3p@gv$dMjK^-IV1n!Mg0Z zb^VHJSCn<#I_{ly85DN_&7WIBCZd?_;g)rzS{|_RipF!~H>4%rubB zOAuWlG3s$K%B`jCy;pJX-EbSno$z^(P}YH@Mqa=GDVciUmk2@(?~dj9C4y=JjhWYDHe(dO&rMl;MK zpSTWGg8qHTncX&1;l})9ac@FTeH3{m|#XSqEqa9xuu_4)`0Q5ev+H?q)LBLk4>_|aVaBTzXbGSTdp{5 zAdL5Sz8-YZP914d!}+Px@iOU7nlYkJoEbb21nj+SB=QU&8fRm+QbTnD9%+m-5-++F zvtn)Ht{}^^5Km{N%k*$dSjj|x)f@w`7U%eRzrv=ARV**iIjdg?C;zCDM<%V@$(SO2 ztZ&JrixHe>7~xlEY+P?4b49ryZ79FGcF;er@#(9K;1b{So- z6zJjFKQq>`6pJ00FZ`Va#&e+yS2T5A-X}RvEG*D1`W5+`Gm5`<@08|-=vV%q1_OgGN~QWsn}xyX zl=puc#nmDvM|tra=-E;^b6A7MAo_1d{v~eqrYu*mrtX|tT#EI(^D^D_+TouvL9q^} z;cf?h%dYS_4(ldM@UnBn>xrtX>4y(pY{aKuBKpW~2&_oClgb7h)GS3^-tp(KYJE?p zA`9`&Wz)9tvelZM71hCpIgX4CR>8nnq7$}I zT{v7#s^Vs~w0EMkq>Yiz1PmnO$HX6kr=GGjIa^DmH9~k)$#?&R+ImSVE7DTMzi7BC z)x@0D=7i|Ul|Lwm9c5;fxDxNKR_ro~2~|V2=xg;X)wYC{d!poqhXA|elou_2Y&~$l zUgwdOK(PJj$eZy|21?|(y#;$Jr;yJKInPn=y-917&YYpNsAUUr5PReH54Ks&fQCQ*9?S)QWNdkp*ZtA4bLCqcnnzrN1}Ft;kU>hPNvT&e07R-p|lWc6g&Fm5?? z-qjQZF{N(lGu2y^!n+&X$pxUvCDv$w(}q@+ICP!=&wMmm?;EM)&!Sj89RJ+;=}Fpn zjie-E3)p~fJ=C4$vqnG1u>Dtm%RD(aCi4t`0tL0f?JEX&nb|)8l+KWX zeyVtk=mEJfSP0sQS4!~@CMWe(0gKV6)?fC>G((#IvVmI^b3fqLq6Kr3F5|GQaxOOe zj5vPwd?a(sQ%BD=;l0lIPT_ph51F58jisrw4$TgyV$81`d=f^wBVM7E*JZ(Y!CC79 zt)V*?S#8HCB%Fa8eO`ZDXaK9z=WQRGv{;!?3YVIXEU~J21E_|}v^4PvbL4U9MWlP( zqT9YZ;Kp-jdTDXC5OPs;cR$Tu&(nsCh6p7ypi$d&MZM~THa6J{#g>>aQgvX?j0!5= zGocfC>CURbMv8X4YZ zY#GWM`Q*N9mLLV^Se_}N=`eJS-P$3(^yfLWAB)oyY3k^ac#wUUi@O6RyWUL0(Je7g zD1)&7_$fht_06dUnhji*@;P1|w8AO-G+y87C*Os4et|W-R8a9uG@L4?BZm)0txzD% ze$;Emy$~mu(5rx)+2|J)8ZTGKOvudBWm%^iw<^Lu_-EXfo&I1xA9GGFH0uiG9&AlK zmI+Mbzb1~S4#-C1M-qixNw}q&CE2!Ie>hs}{j`@-D{HZ+Y75 zUIR@&mE3m1y<<`iJa6hQ_zF&ES~x}n9}Fp#nOLH5zb&l5BE95Q<} zR>_uGooGaxi~Qqk|=I<~{cl9fztU>R$J*f&A#M$hI2#%_|NmCEx;_fVG--SuYQ4^9!! zy;%^dCJybJ4!CFD5JMf~Q)$FlA0U0VS4S4sr)Qse)X)RV-6YN9KA#p!f~v?I&N$lc z-A|w#xi}kj<*CK^=?wPR`!iB(+aTFwh@aic{To@SD#tM*0&z9Aiu6>*td{3@-K|py zmqs=Xd7DG(p0}CLv>X_?FM6-mBQj-f%Q3#Bi*jFR8(=UbhFM2*OD*dgrD66{$l|Bh z99wsLom!u$-5%at)Y=FByy)%nR{lI8Pp6B1+@5n z{VG!aJp!n%9<9tNIaDGrANW(I&~nP1mi>vg_H8KNvoi=Ytq4E4_|E#Id$HuwLa9WV ztVFq9ZNRPGnYG~JtoHobd!{nkXxnYLln^e3pv)%U*nm&@e-?Ec!S=N^^ zW`8T&e1iil*a{co6AScn=?(58B2-e!W$UCkA`iv>QG~J_+Ru%I)p@^u_a+>iNINoy zI?K!EM}+lo=oZ0nlq^7!_C}4!{3!E(^L!z=73umHMP3~M<{0)>>pI#P77~wGt-JYF zlTaDgVj%L%IHYdUx&4okrWxtj;H9u&P_318kj#S$UDhY6R#Dd{UHvLP)tGKUUb#FD#Dn|Qi8&7@zD^N0X@Ud6;d=$KrtLVG>0YeLd&Npj{5~8l8_4k4P2&-O~ zWZhgS&-HW%?{@m+DUv6WAB=2f2SX`WJ2_`qLlN~ns9wCAyUSm z1Xo-%fW`J9f0)!_(vCJ~UMFczZ2JDQ8rgZg14G9AidM179v7X&iohbb6b-CG6yCla zXwa_@g7b8|MxlOr)4-TfRIUzc037EET6P^cd0DV$*&WOQ>q8_jpDl;z1aOOU#HLHu z$tz7|WG=hO%g0J|yNa52wS>Xyf~0d9*bg>{iN2*S-k*nCtW{w+_tZ4Z(qp|AVb~E@ zuwOCRDG1IF*@aW?T#IIvtN;B4wu#_@BHRfdyML3Fh_i)_+bzA#TRmG-c6E{uvVXLy zW3gUJ;B0bsVK!_BvV;Sf5kCqGNo-8Cej4wJyrEF_mKzxPWR%(5<=Iol9be{qqwUY4 z=>|?K%=tA&ukbSN9W$@L#;e-dDDDl{>zcndBhx^ljY<}*i^wG;%pU}inb6j|{$r%g z;tdg!RxoVxpuK3+gW2&z=n3FC8(x=^o`4*=n$8eq=*U=v0G>6tCR};r1S|#C6p<(2 ze0MejXbct}9k!IOi2m1FJV1$&vwRX^df#epQKjFbx( z5Y$ z5L{;n*x*t_)!dTyrP7sxl;JJN{9OOOU!O^ckWGr3C)gMJ4DYew&ry z5O(ng&Z={})D=`C_Z-~JGD{@vt7Jvv0Y|gQ@8+8g{CzHD@LpOiuTQ9R<)VTx1ZuU% z-rqvLKFWU)kC-S{&ZkdJ-E6JMDi%h^F8oBCr!FRrTVgHa3b*W0#K&vE>F6EDDX3 za30*xV0*y>x@Y!Pd0^Hs=V` z+xZJYx~ACd$5K`si)85ZVLfd$S8(mZg)+s<;*Fl@*(JN%$GN{JwgC3t!szdEC+ss| za?Vc2*@)hEe_!Z9Dkn6F{y*JE8o&7*JdWj^;4OsE3;w1yx)PYI+ArZd$}C-eGv!FP zGpq6`p0KmN0h_+ZCi=;sC@L|>mrdl{?=ito!nsYKDk;PAtfx@7;wC@$?0C!AmOJvN zguwlZyM}+Q1&*fgN}a70BpvQMr%RMRRJZLNx=yY|E0x`EH}RPL>&aMOuL~GK^41f~ zzUCL^_(8RcZ$vcQeMIAaa0SEjC=do2#WHsaS^df!%#C6F`-Cjr^CRo2xW`S~;2;>S zGYmnvk%8AsPCvI0%5WLwk!1Tjj;pP0l?YMd_AvPMs&M zO|ipv4dBh+x4$0uzUzY}4h(ohdR?z#qbE#KcDm_)7pjG;I6}P2A=4>isnO(>W|?IO zL3w-oa!b3N_2}iul`cD{O0R-W$&rI>gv@Z18Xf)T{)j4#z+~9AjQO}z+)y0Yy_DhtSxwS#1JL!rQg`mIux9*`1vGdea|*UdF`-v5i~xb z+uxUYiVTx~?I^2%W%5!9+9zUUO_`bM{{0xOYRi>;$vIVtcq1>9!-B=5QxNSYv+?9Ob z(jU>tNlPNefP96*yZOhzkmK<*W?f@cMt)Xk83}<2ZeNS>rEGaY)y}Hswo|q5MoSO7 z17@lmzMv)GX-{qqzC5kE!~1%FS8MXFtG}HNKM%*M=au-5x4J0G>zOM##E$K?c>4=M zuUp^1(yys8v44IiEzJltpGXehHppDrb5Ohj$m3bpN~jkE|ER6jyfs1yTsN{t7mmDY z9XdE%56gG{TOCoTBane|$&h+bGuFV%6_lx3!ZqagEP6SzE4AifVlUAas7@AW%m3hX! zPu3N1wnq@avQmL#k|rRHs!9Nn0|%((n8VG&0MiElH&an3{^sTxvG2oX=E8^&VP=ntgdm8B$6UuVFdT_oz^uwyq!}sp3 z)vY)^tIp!xh-m_1$S_0USD}(M$w`UFyVKm3M15;ytWV-f^0h(t0auBB-C4CD(<&Qj z;xEHUR8TBDX6twFtY%Q%iC=!5IhWy|9&q2^z1^ZOz0hC-1;oUg&{EiW%s4sPO~3zk z!BL+Vf$t9Ec!|63U_sQ`6NO;ISX{18j9 zj+gKk4PFd%x=Io~_}G9#Gxxma+Xk!qpu+(z-8y9mQvv9r=(Dl-bavG6*NRX;MCbwr z2ck?-SasNEzW(MzCivBZG}Zw;^*kmqDx`Y;?Y4}z4s~s5%qLiF>r+3rg9|5e1*u-r z_YlF%MZd4P7yo#^SmE{2;dOL?Xoezv{l;%=g401=@X&h`zANq%`}0)-pT3SGLfCMk zwX{&gL~S!QJ>w@_7+HQ3tCYJrje~y|S-&+^dkSr;HP&#HcaGL&VQp7iYr-9$)P)qA z?n>-VCnPbipH?(bx6!_dZPp@C`&Y=53)rH3g8Jt&mmks1>_==?{2gvqQdTL;zaF(Y z6|o3>9hcltCpL}rq7a72bD zNwS@K*Z~OsRE$N`t;waAC?UZ*;=NAGqMm$3K=IN}hb@tHt5mkSkP?ixo0FE)e-M__ zHs|YqV<)WEQPlP}Q%q!I5cMvwPNnye``^U4_*(*ZNyl6v>fE-WfcEbeVqoEa6qc$K z`f_=K2$a)Jp%bZ9xxhB(*ivcbxz+U8p8$zxoSp3_frh?pY!B(iMw3cC#;jHxQzRKNL?nlU)y(NW{R#E_MyDM_lJ z%1ie_J0*C9G|})K3V*!_Dx)l`vfYI6Sw&J8=$C~I`MwdD^0)-;k1x_zx{zMwxgU>q zJc_1youx#UAPquKn^J^~xq5SXXOlIwk1AhX{qp`#LmR?(&_)=-5A|RwLW9{<6W+m5PNZ7dh~#5a`!t6!_{cQv(L-!mEY1U;)!1s&`F?=!tLq{xqN{5wbKTx zbjgw?TC2JEsSM?&O+uA^4tBLud*uZ_MBd6YsUF|W)h)ESD%(I_a2m}% zuv(<}bXXevM4+kl|6%F8!`Xb_Hm<1JtM;f-l!#fS)UF*{>{TObYn3XB+I!Zlsu={a zL(P0^)U4W7ic(RDSv3>mefm4z{~U)uJdx+V@9VnG^ZeZ5Ix>h&!0YzyarGMegSL``*u35%{g$IVS;Ovv zG1D)U8bB!(FJCq;yNxnrod%2{P+`#u=>s)wLMET;xWdssFD%UxGo!S_8=K(FRK;&g7ynwiiw zcQde2(6JBH6F-(-2KS|WQI+*%vBT0wZ@~=K*u53eH^ExKxJ;UuK`1P_lkXnf!12@p=N|CTJ_0nm2bk1RW(WarLd%Kekc&H zv#k%P(!`&G69m55qyfD`$urAwajHD(FqTZxa32uI!%IuT(-k1#NGqt<1X%b$PL3LI z+xyl(^OcC^V8!CI`6B)`Zr&Eb*^fQ_^OMb9b%KoUpRy|SX6Q22b&dhjTRCigF;c)Z zjfo;-^ltYXDq8QQTFEB9?4D6qa1oBdcd_{>T6j#~xs_;xr7`IygY%yCKFzaibdc!? zSWRBLA4SXqDS;OBntW^pU-Er8{F9Muo>cN_>9AH#pv)Y+thU3e>`LsW5H6ZWeFD;u zQ^K)$u#}#bsAYS1E?HP&BuB^`1Ph43_kk0ppxUrTDbf<84iB8o)yQ(~Af2S3>KsY$C$73~`>8n+_7T#SdYNwvJUalA^d zX=)OoN{GzD+_f#OkD2BcE8iEScUx7Qn^leQHIa9QNQ4JKaD^FBzCcydbHVpT*} zz?{g*#po<1&*j!jh&d^TvFTkzE^Rc)ec>lh0D;St!Aych^lYg%%GP=7@#cn=Q|I@*BdQ~c z0oOBaO5~YFdOPN6fJ4tZHuIqKW?l{unR|cM3j;P(*&_GP+b7~) zL*m7nTv(+mis-4FfY4c)*P+#w3(3Jb?S!TkyFO02hO=t_DiNwDlXYA7-r;pGpm!HK zV;(geRrfn;pg=D@^zXdkPi;IEcY_b356gK>&trQEV_A=);4GQoZ?Br1!AoV4%r_60 z;)DN*Eug3qmcuDW9Vh+P<_&V*gn!C_p5ZQCQ1%y@e?CrsXklic$X=B zu~cInQ}al9a4atLlk0_Hfme5<5%UUpxqkVx>?}((U-KT1|5u?ymTDO+6loP#BsH$r zzE;uOdc4{R3e4KVvtW)&V`}{v|1A&5X)ovK;f1B>?UG0I^x4k8enw4ADqRyTrnLa` zcd`=xoJWd_^pY`+0~t&@@me|dSx^4gKUh=o-@U9As+vq~0@wJA!e9^AnTyUeSZxX^ zbbD|I$N~tHH$Kyaiq^CRb(3jF_@Klqjgy@u#^&xqGg>5$etiu}#; zfTE_2^j2G|O7MO6TQ8DFY)M8uhOJ}zj~QRLr8+Sw(E93a<^aiU7d{DbTr4dYAHW_^ z)1)80CL(3=#STPk=w1wO(2sp00b;t6CPufHs?C=W#=n(XrO9NqRiAMuaO%rQ)m`3> zrT3|??M~rv#UUPgd>pzMCP%EPN~O+Qbuz!wvO&To8au+O+4`Hhjf2Tj@2>Ab8vA%hNS!G)cOwr0y+QxWH3-O!Q;3QnSO6vV+U`n{%ok?ZmwU*+nnG2&Ua z*^Y{XC}V#58BsS^Ai_DhlxoFIvfLx2M}C&nbN=Eoy&i6r!}pbemS;&T`H>PqTaVgGbwsT5P`Y4wmI{WD#pxb z^?}g=3CMj_enZU48+~}<3;4PUA%iLTDu$9j_jI(woRK0WKiQC}uj`XM#3!i>EcHKQ zsCVT-VLh%h!U#K7jjN$iaLNu!gn7*)d7${OKe#Pxp_pr;mZ_O*BH#2&$k^WA_phNl z7>#6tg{Pzk&>AT_dQt1_xO1FJ*{YZY$Cq$@o$4>$=hgh!vSbpXh0~Ef}5t1>uFI_V;#GHh)<) z!zoFaQ{uC!VF;DPSz5Oq*9RoTS?~(YB!ehP1H++Arhoke2cs0NgN%LjjQ&G(-ve+u zwD17(n2N~!IDQ>!PRD3z^`nh3PG{jT21dnm=qhg6cIK_m8erj~Cwh$3+DTKjEBSsV z9`KG|6LI5^U@S$v^5K9mN#CIekDZn3VNMuTe8j|Opa7%Gxyk4pw3rfVDj<(G;Z@y>n3p48m9xiDqI;XojSg{V*+c zYH?F~d9-7mM_hVcjC`y;lKgupc6Ru`K~BLsX`mYNA6akFec$|Y zFoXyLp|7;wbD9p5*w<`}CQE&%XyP}!VyRp}BtNSJZ11PG%)-z7Md91mFuX1YNVntK&?FnG3^vP2#Xmak`##6lt zk>{mkyab{nO5&W$j7LMBH~gCtWEC(mGa0O3eqDiV?n#TOFk9SAq=xMWPGtOj?i9c_ zpnet(m+X#vW$@Q6NENDbY!K>fq=TgMkQya*l#O`DK9a#khaow_=9ve1IR%yS-^wc ztw-4yc6nv)X(L@}dDvmyq(h3Lb%y&|p>MDG#4ZUJYF$7Bd|B z09-Wgq0LAs;(G=x5E&iBtOuody;=d;cw4=uL8bbMmlvm-o|xeEnkN z?JN51$V(K$?qqs-OSH<&zFJsB^A}t&^iU`757`&;vMA2y&#a!)qh&@PFTCMph$v) zm8s}Y*x7H~VH@qr=XqP=d~gt`|>iO`R&co^wf zm!KWI2cz(@hX}t|nC4h2|-pTUeRPspSyEeBDr_m>LHb@NM)D)D4N4ftBf z!+dk!=DiRtSNDn-qZNCe}Df!v{Rg$JWM94n-yvO{I(s&W@G(NKatS`icZoEhFqTU$hwF5mi(34alcj91{4LN zr-fcyo|J4QN@>*1N5!+7y>*-0GZS6Se*c+zA|KYxC64#6wp!!ok$TQsRum&8#*tH) zf0LcUOZ9@q%gq-<9RU$xZbNuKY3p%~`WZ&dA61%rcmw1=@Ft%AN?7skBksj-Vd9Z} z0$-a*@^w#rcGT+Wj%xfU`jUtrFY1PqL-E|MBwXcwpKg#3^^lOlene()CvZdVhI*>L zA}E7sVi6V>l6ybxI#&Of%GkiA*`5B1^x^eBkE{_GA%`^yDYgg3n}=*3T6!dUWF_9t z5?qTJCi>x&T$}gp%P^_(dXZI_v7BrLCNsM6(#S^NSq|w>Pum8V8izLLx2W$+lYJbP zJVWF(49mlWtDzJ6QoKt%&eUiL&o9HuCOa179IJ3#Ug!SpU^r8nDX z_%sy^`wLuh0&nr1g^L0P^33EQ@t#^dGnUyT!Mmvmlt|2FycSdML;X^Ucc zMSu{~3MI9Q#o?wqM?QM`4S5oOq=sStk4Q#|+Q=91pNQMnL{g%wxnW_+=TVO(mZ9z+ zN``d@_tgdgP=$uo>tXr9)IZ@+qThc0$hGVfHByr9`LO!gf1B$!NanS7rL{5zF^ z^wBenCPVh~rCk*1?}ABzgm~(@zr1OsHVb}D)`b)MsBd5iLw4D*o`C|nH$TJ{lH*Ln zS?5KI#GGDm5+pRH-+;2_{8J>h*fSi@gx&FkJ&CS(IR91{xT8obY1xv_fAd^L^vrX8 z|6HPO6lpUDf>s-umb%?@@IBl-%KZY^V6Q-Fu}q_uEKjw<8ygLW6WufdPr#KlVc#um z_0H{$M90)+nI1tm=o7{al32Gl*8WHJ;J#bQ!ZPbJTT717yyR6Ub?=O11cQ}@B@qMl zcQ!a=Rz{wKAIWP(-E4ZC|6d!p@N%+31M+2|8mo}=g>4Nu9AaC?fWv{+G=DPF%f4E~dy^cCt>cCRgEEobej zHzN?zp2M_*pdNtc^rLt7*0W|Z@=>YzHxuu3tT;$Ib+~@<1&3yv#T|UBoLyANfft=C zf8hG^vs6>2|1a+=v-y?d35>DKU{g45%XUKRuK0#A0nE^pr_4OfMAVYHg%YliDKlU@ zd&w(EP0JC~#^o*&pZBwcOy-?sdejt0SUN{Il}tYLf?iy1&|O+?&`oN{tTX}<^}jy< zKJMp$`x1{!$%+G~GI{^Jh72a>f}!Jm&lp2-wxZ1Yz;N=a>;#Y8RQK^=<h;62!_#XU3Rqe0%1PMRh23=o}j-J-71yf$9Jk|9Kg@%pqTT^ASC* zZBTb@rX`&3OCo8Vxb9ltcZ2)j~l|-Wq_Pm5fGb z@1j=dPIFC>e!AcI*2;TP{(gpwF=o4ovYhhVW0_7z9)!Uk$L!ofb^pu_1ww=A2BpFZ zKi6I1i&|#Ax8ys5vK!f1VwW6w(jOXm)AuG66&B%Ty6%un)jh$&vtMK+#Q)9N(>*tn*%YRkMHg@)}Sid3lWB$4U!{iQM_hfmuut~wt5nb z*BRXJngcJkDPsir5o(a+41!-XW9w&o0fbwQxaAN~u zNPZibwmvtb70ybuxKM=ZJf}6MPGj^MFfp89rLqEOb}w2vww`|gFG|-3R5Oevl4!WB zM3x(|qzVf&ByOoaNzFq?gY&un?eVQNRYs!wAO*6=RQB(Nd}!Zb)B5&Q7hWPIzv@ts zS>deLI3V&7g^S0O6xbh&ljzwAtIY$oE!qLnHwmsZyGX7$sxaBJ@`!0!_Mp4k9nZbG zO^W@<{s}3mH(k87xVuw4TGppL?}z5O*^|$-XXG%ZF}aTG7I$#@L18ny3ti%trMEjH4Fhg>^XO0Ah_!8hPTV@*cYo^ zPy2^%fAJUgdQdH+b>Ee#$zbPS;$66bMj@E1-*^!6fN2<3HsCckRw*FG4Pi;bW@|qv z+Y+s?cwJ+Qu-hhmP@nMBkhV%hlf?w`@U(rs1Kw_1QZu!2(_jI@Vy~lQT3|Lueof|4Ne=|3yoW)3wgr}t zlxH*mwJ;T$u*LM^d~}MF46H25@+Bc#`$yXg9(@2;@&0bkN7*2id z9{1?=Z);ylZyXl3{Ahtp`VP|i?=bc=KXlaPqH=z~MCBa+5V5T)C6@4edwXPfYi5U! zRg9cmTPMgWh49Kxe0TIe>hJ8xvUcK;qa@YG_#$fvBT>U}7mc#&`vnWNPWF^-Ok9oI=J_^x78;TR zAmk7HFTW)CL%~1zTneRn)QgxVTerO&OLd?nq+6`}eS?;9$F8P|f4+ZDwbu=653Wm9 za&1nJ_q_j)BFhcycD94OUm@=)9#5oTkaI7g4z7sS`SmQ9na$R%DdR+8b5t$^8tKL! z{8s32)0_&dUpT7%5^U|#2|(xM2$j+zPWU1v-t7+gM?ThI=s>S4V@SOH4BpSktOkek z2k=X;5ni5OTUsn<96C-P_}K_A9^n;&h1>CYdCSXQ@_x%LvHH)Q#+shDNU9y(7x8JO z6>M@0HUyX(e`?4QINRnp)iSfYnc~g7Fayz58c6p#dr>u{w-^(!OE12PU9mv8*T|AD zMV#_30KI8b>u2AIU9a9e6H&7qmnXA)oJHo%H4#0#a1!~jYD$u(n}SC9O2g8HvV7ph zY)lwtTh-^RvKU5U`ri6!I1`$fAt%q-(thnWpb3Q1q~99{WHaM{O{GF}w)1W_u2q)%$Y`j)p3mwhgR*&l|^alxhJ%LpcV&ZCrzSiGdHKwW(gtd0f( zXzJiq@3YqL9*e|Tu#s<_i9kQy7K@0YBOhK}GNmMXfQ}ZnK^f1s-p_(5BuOSz8fcEa zb^Hm}nh`EAGq!$08)aA1Ol|!v3+w8>CY-S~ne_5m>AP=MtGUS{-M(wHH5_-nb#Io* zJFYZApZ~9+Zh4P$7W}JlD_J?ttmd71W_gdGw$Gpg; zg3NVklu5W7y<->=WN1Zr=v-BbjrD zJ;xV8{w=dHX%Wm_j8dCTN?`mvT%6MtUBbbn+4)WSW{Zt7Pm^U!6H#tmo2bC+&kG&U z5&yv@xH^R2|M1)xWMMy0`=hL*AOM~xGlI{DyAzZ;c}z6vrnH=^&Uy`|eHwXABIW^$fk!9Q?#npIwc zcRJ6ok=IT(rKS&SQZolgl~oZR@7U7lKMn?5($A|j8xlUr5gNj+e%(k^+J1EK`GSSL z!1cfJCQgP1MC+&^+vaF$&I~&%U5>>C#r6~kR*121S+ttK+HNkSWK+ZAv5RRaXEC4V zEV3@E$a=6nuIs-?JTA4AB01&U7|`(vwQhf)ef$_oZwU5S;fL zrga9rdvxba^9L+#Och%humaj>ELRv&8o0EkjZ?V&@ zIkrVKv=Zy36Q=^6WQ>CYZ?ql*btlf&+(kD*BX-~JyP3J5mV@cKJ@tS51~JWPho3JR zYD+bTOn>)v>g;rBj=^59xl=*9^oBs#TMHWtVO!1bpnvS7RM)C7U2d`RPd6*HRjb{H zhnU;GBdjNCh8A%3kqH_Vk$uv8s$9KuPagrj6_Cg-cP5SuwTh-1y%HwZaBR$w{k$+N zm(%cBn442Nwf;?1fm{+9jWnazjmJf~%0sGqj(O`a7tk{}O!B@^XZ#yll+xf~hB-K#^**0c{qS{evQU!6Uba z=<8D46TE_d$Y|43()jwLo`inE4pJnNkdQh^~g<>iX z_~iL#JJzQkg{?-tNBtOk-Mex$((#cHF3Qxy`1Ohkmd24e=UQ^@odz`C&DwYvYPZF3m$suxLnuq&5qmt)QmjqxO=IGWD7ocO~$w zfYmC8rf6#VH7sdKY&OkLUhL`Sn3bf>%SWhsy#3P{>@9zS$%}0H#s1V-hxe!|vV?Wv zntCBF3*a=7%w_5q6Ie0+K>WwJ)UFx(=jp#<%ifTgR0k?rlR)hP8-8$>zBD0MQz@)wTbgJ2w-`c#@Ks>B0+)z#2=QP4lbn z>8vr41AeT-miJs$iv_m2q1jjCNi|MQ%gjBCGN*;XEYiRj<^5Wv%>zUL2d@kKEu{xF zM(2;yLcUD&QdMZ&*8=Hpx@^%jg__d+!HltYFn^V^sY0H68~u#Es-&Z$dr`6=>k;An zUZSG+J?h))4~0HgEBJ8jFl&;j1gq*z1Gvx%u(>$LCJLv$UcpRcO$wFt3UAFu`2#lv z-0Ft!Syz<#=O%lv=-;1Qlg@5zwG=X6o~F#A@ZdK`)27wy)(cn#>5B9{QaJc&NkrwS zgKYnvmcUm!cwx@UcjY8N@jt40O~;5A<@EY=AR z?69OeU#e`znmIxsZi7A1&h^viayl}>cLSrg9WA_op7YyE;D4NU>Ejp_Scu88J#Vmg zolsbHq@b9|hx`WRS({q>%h=!5Wx=vLca&~xgGQK(*H$CO8_W`e<$7n%-xE4w6g0Zc zIf&xM%Sxktt^kl$A6|EM)XF81>7ka2LN1O;@;0rdAG6qi751t2Xh#JQGFaAFWF}vGT;SR5?O1t8|)?<;#eZ&K_epr+i4A^Eu$=hMlNVINhsSG+`p3VQIX*BX@j+_wd6zbeUSPr zrcrz_?XaF0dST9X(vqvc;Hx!SoycGGn#YKRt1LOwCN)-UT1%-SE}hA>kIQVvnUV-1 z{k1VVg}>#cNTn<#**{_{3;BXn0JE8Ux{I)TO;?89*t1FlL7m90`3}i`9S;+)#ldg6c!<{f)cuntEsMV@S@H%AVl*Ks z$O@8-M?5RY+z?2x3FpmLAp-%aCm)0U^4AHy?fGtEJLB9T>%kKh7gj`OH8mCQ{9dda z%P|-lkrRgJYR8Buc4b#jgCAP*!#~T74iN8q-capGo14gGA0*w79#~qc>AE@IR#R~+ zXFkEe*jtQ&iAu5TdpX>6)DCIo^H*FmZ>CyG_1r1xH>7ZmG^RbV-BO*)CjZ$d^9d8& znwq><-gM-{cySR?1xmga3YePcIv7;=DXPMt!q-ZQ46%IzbK6n0?G;rX_|K|rzsVK( zO4b@4tWaAW#qR!kbs^GQ-OA<8+(hA}wTL@jlkv>*$7-O-Q3!1M=s8YFy=1}h@j7IWkWc8gE$P-%@WNMBCXh38K%qEx)JF+o(qg6Dm*{?t5 zw5?l*h(^*=xQF^!N4v3IQFqb@GBEa+0z?Jj&w3@pPF^imyQPzCX_abE))NVnP^r0y zg2&o=?_JJ#i7OY!K)r`WT6gapYjE)^tw5Q~#?~9c%|N8i^Pu*JfooY?=BnA+z}UrF zTf&%-Id3)64mr@~D=i-+8Sw78U}xRIY(X4+?6*pfunEb2FH4?~wVhTknEo@*>ImoN z9t3a;CYR8QCEIii*G{JdXaDu1%;{42Qf|`Tm{IqBBH?y+yzMnn5-N_zC^4yc76+d- zNi*%UiM=^{TvDy&pusdljfj)u%_XHL$+7q!1>uB><SqhDLWKDMiwqAD)EulBxas(?5Zl?HcX?V9orwhhH; zs+a{U)P=qjvhk4kidhysMe79Hs@=r&542h%pQJkjuvT4IEmN+$P-O)XGdWM9WlNmt zh-{+MVv{#x2fV8@67~{FuVa|yaeYr`L~=494?Z0B?f_J&qPy}8lB?^ z3}qkd>o)>Spxc(^99gq?3fO#qOVmQd$AX!rS4?+v_RqxVeK=gFtyXhF&Wxe{i!~jQ zki?A8y#73AN)g$zQ&B&@^+%mP=BzXO2gZ~0?22JqvQlCnV9dI+{bpwf^~S2?2WVyn z7+Y6zWrPSAxR<;FERxbU2ZJcdQWdSe|MEVWNqO$B z`iK3ty(cAEanvmuc@}PAk!Y|zO{BN2xKtTF8MxmorN^~;^d;^fPM0`n3eN6pBe4%|kE(j=ocM>we@aYv ziCZ+&w4nTTZ*0|5k*wc*Fs)DBD5u5JH`K{SgC>*ICVxwGA;Oqn0M!*p#hUV)wpa|# zH&)Q^Huo!jxwjo5mk0752rM?x34! zK1+M$Yfd`T@CDsDq5{EO<3EulZ*hF$w#wlqW*FaHi99M3TF8`qt!Li_6_;lJ z!O>RMcJcXvqD9VFfz6>$RzJ$8Tjo<4gH>O)y@qsmcB{R9IQez}f)>GNR9+&ZRqkee ze1NUGN4~}|-ejVh;Y<&#DfxkR#C88>o2xl0gi{y z+V(1FzJ7P6X*?)gbfN+;0JAz40hU2f7I3(=W+{YvR0Kf~+6d$@?dR>PE9MIX2}$dc>+O zHnM#1W|Zk6c=}%;0y$2UbSoi|@|ORYDymwM-;`SiRJnM;o*_k|5ty5&ZCxh4r=}Xm z*-g)^aG`KF zL8E85sk`I#NNhk{3?f&8*mz`;5iAfjDrB+#r86q`<(KcJLR6Cm00+y8Se7ExD%tYr z9q+UN^bgMsSEg90=2?oAg!0aR`N_HQ0d=X*K|u7SLh3wQ@vNeu9W_T(YJ zbw5HqT{&{mWHYR5mNx!5+LYuUe>GVV~{3}tVX7W0KLir%-y zn1I?ej}a9Ad?eN>s<#RN=?1vA&(&gW#mD_N*i^06Q%kc6I2UN6xe#kG3)Dvt`PksbzlO(N#%kwkz>wW~S zt=nP609s8Mzzx*P3-dU&Tp{83kcWLBF*SSa(t~0Cby58G;z97`>Rr4<-QTC)1_dvg zU}At`^#Wq!U+wuoU!a`IkD4!eC{TTq7qT{~Bcqul=6+gQlHi*bDE66z@inOV)1Fnv zuz6u?fHv5|BUEE&&iR&V8*iYz-aeJF*^PzL(*H;KZIKR^4LmFYh<`Df#m<}d<_ggO z@;6L6`?ay7e&bLu=kYUKK$XkK@~X;hHtins`NQA-XveF!mrW=8)z?Hi#dBYOtdwqX zv)Z5XEQKTSFv#w{BXauaSYh9&3dbE$7Z2rDa$!_>Z0A115v?C*;^FStc-j6d(DtPG zt(WCri)A2nSaBMD&p@Rk$QF;@RsqKM761j9rz-H8sLE)PrzgVjYU1dcs7?9cQjT!% z=&)g%2p^<9b2NzS;aOSrHNl0bSmMxmRfd7u^;oY-q*aB6xyNvmMCgSr!BVsLmgQ3e zFWbQ5h^T-8Qf?g z{WZ~f^0%2#wC5HUkRet*zpWnH`qgQk%&WApUlYmWAr}hYPL_NePm6O`kI-@vdOV(& zUDre-;b)gm2>X*EMjx+2SP6 zz{58*;XxOoe>!_Ym9=3nx3}t73y;RH-dSF3KaB9i)}QROW05bfiC{xlwc-6o60K;9 z?U2*&4)0eA@ILqs?B%T$mC8#RDbIiqM+hOR_^;74(VK*Xqc9^mc=|PwuG5vsS&_Yp zs4w~~EC;!LX^oGNx#AhG+Ut4H;5&CIdoc%moViPmOGyH4{6a)Pgs~$s?4CK!v2xY( z_(+L!*RLrA1bnbS$Dpt=oA|%cQ*uyZ&Bt&oR;$6463=%iJ3sJ#4AHay3a;86J8Xt$3bo1^zW z^AqE-I!@)p72y28J?{{UIDL9KWPzUgdrj1E419rJ*F-hfM9aXBPp>Rqpl#5G5k?^m zjp1WgB@tSkpsQ$n#A&LP0GLRj4`zO#ANg!?*WRPd)0Ip?s4p7C3|NdFw@@U;bVk5jS(evgA z$c#t8O0grb8XM*Vo%CyG5qA0>kwkB73?V1QduX4t%ZRL=qRX76zu^zy;l=Tsw#9>3 zN5|wj$1z)*)xy6K)L?=ml3Zb8<~Yi;h2UNDYg{syw~Q2~RpIt}pfvs{$5gwPQ%w?)Gv-NqFuh za{IAa^-*|SdU-&YoH@<`F$b{33IokaI~SQcLmu#C3*MJhB>sr@!{W}+RD^FZukT(q zb4VY2gv9;y^-J@*FeWTKBwPhvi$eO1UCr#IPpx)`f4{1@IzCFDQkjjIj%e-SsU{GL zroxc;%#&}WM=D++d8PQO!#O%Q(zLkT42ySYfafP1Gi^_2Q~WS^ZyB+3O(a))s*JyI z*z4`w#rxP`-HX>QRbtEW)&UpdxYxD8Cl=_!v)XgVxP1SvR}KGlGfS~;WsM-brTV@l z#gUOGrx!p1nT|_pGW2YjQM3%KJ~br}ig0q#GD~Ne*Ddlz2Xj{t*KBqtQ}tY!fV1?T zUUhR}2Q8otb`Hq27k(m%%V#-GMUZH{*Lmd_OqPLt`N#DirijUm-5R5%tTj_9-EDlR zoIe~-DQnNrJjEGK#Y|0Ur~jr*Qgt-o`;arto_91`y=366P)1=E)S3SbBK^L0v#h`a zJOF>!YfJxMZ}#Y-js|6cdtd(33UF1Dpr14Nqpg{=(}%1lq}jqBHGgRPq8@rxaPYBC zCELVlf21A!O7-0s2BTu;vi3Fo(%sY!B5C^1@$-?G2~jvKbZEW8lp6CE1MLflOqJ%= zjn+}rQra#R^2Ze1c#JZeV4nQ!#e9&;JMY8mKoPAIyf`*^JA`9)Aa=@=D)-JjU-^%= zoqy#y6$aJj=sQTgnv?J_nS8IIt6T9l1LJ6c7ILNkXX%r{U&%IOEji*Qn}P3Q$&={{ zq<>`H0h_Fte}5yn=e}w|rS>~D>t1$%r!~@7H`7PIWrb5wj3;D+QtX@;GEko$%xkS3 zNQ6qQ(%v;idDf(wv|0+DG38Xu+qC*(zERNOp^!%(b3_)c+Wl+&zz5lgL`bq{nJ(sI zuPa5cJ)u^)kAiS8^Q}<)8uaKjb1f^wd z=+cUbgWt%xO1~w5Ic&Q?g?SVIy0_!-`r#I=xG?d_?6Zq5C?EuKJ?8wFUDv3c4BX+! zSkdo6YtByj#^=K9?j#L5$)M6%13Ct=v03@VQ zTa+*>#|=k)Q;?0MQM8dk2F3h*&YjdX`m8KJjd5ii%4)(ho~qDcZ-g00UAA!+%l5NN z>XaGK(WVQ@b9ChA0NZ5z&D%v!HC_{4fv;LGu3GSb5BKz{8~v03+*?q29x)HBTkE|G zo{M6?=J^`m(C(A|Atp#C(4gm>n@!xNq|~`{8AU! zX>xQzXx}TI#$Od+eOwhJjHU#q2>yWNBVVN6PYMkPW3Jy z`s0< zbVMORWp5hvQ>M6~Tpu`t@8Q6Y0n?VZSDo^|%?%XcitOs#wS65L!R+HW60sd22vBNX z7soI8MWSjwm+DuyzFrf(*ruEJ2)HJix+Xd@pE{DDGdgCx)Z7j;86uxOHoAfsm5Ka; zR?V1{9%TV1e&{vPF%RI!-ME@xy=eS(UVN_H@E5(SoOmfkxVt0K?S)72pwU*Baz|0= zRX{9nrFK^7-X0zF&c_-CebumA<=fP^0LzL4${ZI)@D(D$-#?fcxV5zHwTNV{f_dw ze2O)~-9ug#gn07Iz*Xkb+rsh3ex27um!+5TLAdah_j&(}mOikG53-P`!UtMp^X+}^eAYohX+ z-q>xXt0{uSu|zqcq|>t>I5N#~JpPwWvms&1E!lQuIFW$fSdEGNY*$`q4TbOFmK&$x zUod_Or#=^tY=BA?zY<7LzJtzfTf)x)rRMo;XgK^_`@^N=(lvbK8_#OUYJLqqEc`<;#0IS& zfH?j%zLhc%<7LJHpUI58km+Wpr13V%g zh=yHOZ5VW3srbRd4bX;jNS7%Ygto1Pn#jW?DSKx+@}=Z>^;-#NRJ>tQgYh6%$l|^iwy~*7(77HmgKl1bq0tX|gO11IBA*?d1!o6@yl({`#%fK^)eZ)F1tEoca z0cfAbKS<>4?JMbn$uI|zZuW;BiwpY}y67=yeQ%T-;>hE+ z$~qQsSJSB4>a`vA8gURkVwR(ceu+?Z+4VaW0s`+e^lJ%(Szkn|R?$~xx8MFTQBwU) zTI?PoqtRxqi1j;6pDNm`gqjs(MICcsUZ(xGzZGa%2ghdx=s7O{(u$zDv@@3_f2}48 z9WBH>%|h<(7xHzQWwf;NVQ7T&pvhsEnegl%;OZVIjiQ3_D-R%va{J#vIa*$=Z`8lO zl17CTI^4Jp7zw&}7v8+f&)x4K38q0ww^cqM4ikB6;vZ^hNF$(5!g`O>BDC)#k3_qX zb0;UY>;-f!Ob~APyRTHe!(eAGE`20UvueE;cYzg_EX?EH1|H4feXlPw6-#i@3n@^k z)%e|@0+x0`$jenyXma8KYM3-%oAv~ytx83o{hCSsKhx1iP)U(Sw~zlK=EVFGImQAB z&&f;1HNDZ&wOU<^k-i;%ePgi)>CPiz73ELCf{8Tn0i4Hrf0FH3DGP?wC4v@4S*f^i zS!8iR1P1>YI}zTo`2iR417|Sy_Z;(TYCAE4V#g}Q5=MZt6(7I%wQCFkS}DZB@1*$F z&iX;mfzv$Pa5cAHdH-!Y<~0!;iREnfsq*x*7L8v8(rvp`ElzEN(Ix-|KUSYpXq9=~ zGL{j>=GQI4>OPPy(Glprqo(-Cj0$_NO?zLHb8J^t&$h_W#8*s*<7hbFRX(6@+7TSn zz%@)=$O5js}V)KzW> z2<96HVh7s;eCxIKM(tPCX{!vs4GuzT8=6!-G#%?BAj%j*=!{B51a4^;ZG3!{TuMma zbF{dWsXf^*vA}hPgatVom28K(;>)pH1vGl)s$OQB%u>Q5aCms_NyFPY$3#8}`V})dtv`(;_-m zOt-?wMFP3SOtIr@HkoS({U!*mRO}~ z#NNb~*sDTnkE*@*o|RD49uYNa6YH+gD%BdHN@;1+3W};x^L{Sh-}A4R7ZN$I^D~a) zeZ>A!0V2utk%qgxX3fxiCd$R(qsv<`0Z`sT>+)dhs#@^o6#=lY#t!c_NBnZ$Xi;rzCA5-UcD6aKPkg4egXP2?|q>4-v2;^)tvM00-fc@in-zbVY6t?9kNTE zbIf65-cfn;)+%M)oB0Se_|cOi$@-!{N22c{>@0=Mr}&q}fCnlKtfpr@-p$0p-)S)E4hq;(6lH-J{Gs)83e=^TgJ3_rr5cv*~=S z$%%W%!-Bhj*EMVteIKv-{!(KLvWu%Tsi@w( z^m{f__tEf01Dsf-ho=KyOwTep#;*IXb)Bll3Vhk^7xS|Bua6m?Rs-IyuBg?>;GG^q z51}pAHTvUOBy4A|U#)I$akw{iUUm6!xEIn2yOh0rc-RdRl{iQWBWtdAjx2s4uyfYhNe{_6NVZ{GF$pdn>jrzW8t7#q_^03_6Y}8R^LYpHjZekt|R`HS$RCX^}g$;-4*Y0 z@R$B?AJk+3_~R)ihLpo+}-t9)7DMst5ve2Pxg7SkoiZ z;j5*?VKZX1;e0f8nPhdcUuom^&401Q+DWA{D<^xO{v#QNz36D|!5ka~fBX|-r6y~A zHmw>vdh(~s*ZFVo^>5NS^fe{&?q&pS!KD^W=Ng~43Gnmc_c|srlm#y~_SKFtq5qK- zVg4iGY`w%(05!&!GsoEF7Y7sc;!9!H-<^P|-+v?lyTb*aTmvQan%(9OEJHQDA0j)OOyjxOnMhNwH&VjP-5>Ys(ON zdvCjCxO6}BO> z= zKg3wfaKmsdbF^LVa+!6Dm1OSh<&&99*Cr`z$%@lij75d>Ad_bayhC}!nA>_Dj>^6RJX3p@Mp;#}ZmQNKC(VfA;=^6yEjJMzV8Y)bdaMedtR zcgMvDOhfP*cA@AGw|j#X79VWc+i0cg$%@w=W?zkN?kd;$^;E#P;Gj`hJu3wWe}~=x zBXRP4zW4a&0Y~@0vs0&LjwZiZvSt)Kf6E~y#$>O3Nn8RFfB0I;yR0=|dHP+vi=SR) zq6f%SNq`wK|53MuEDs0L&p`~iKrVU5rortxcs}jgs!JYpR0%=YR#+5iOgu=O+6Nf8 zi6`ynJ{En|LMBSxewAUlg$^RzTs@C82Kt|PsArVP#-^KEZDq;K8P(f3*>+Kj3_XVm zGVw^FhQD2Oi%zNC7lDUH%A=JO+$B>@QK42(yA*8!Ej_xV_6DGy4;JrqwyJh$so_() zjl{HZ`GO9tOLoxm)WY0H^nq7H<2QYYXGTeQ0{?W?LQ@rEt zZ=?HjH)Y$4=#yU6^1fY3&v#KX(W#+E`U*eC0b|;puNlMK{}2Vv%A#ja5dpg!>Mv1t zc7SbP*?j+(!&~usJ6jSsXjem42wHkiq-oWX1fWTgOz8Wru4!!Q8Ww@Q%vm|ZmaBxs z?z>69wXCG7LoV9HBY_?Hlbus*iNCg%97%JfZv&45TDEwE6s+3Uc0(-s8(m@ zEO!44gsU^&aI$`TsuW{4u(tba*zhYT4QZo*AD!BV2R%sH7>&f*4LtkJ&zn(L5A$Ys z9jI>m%l$6$N^X)sZOP-;wEBuby(*`v#UKV^KXjbMb&``F9`r;hT-dP1%%@Ouk5(;pvft5*Nl#vJ6S>gI}0<>V-o(ndlT5 z5TqQB=j8Yvo>q*LiEj6_=(((UOD)Cal=qxe?q}|glPQMmMKPb9x_+0# zv<+B&QXZfBW$|tuFv0MN?5?bMQL78Y&v0h|0f9*0W1IK{amZ~(I)IZ%u0vq^Tru)9 zMk-Q#So6H&;NP~~_HmI{|M)H33Qx)n2i9_QIsBm6fd(e64C9(`T^C1wVWTAqu+|3^t!a z7Xm(paXCnK4Zx*(i<>PzJJcV$aZ=dU{>$G((6@LlQNJ;st`*#H7pp1#byZ!W!S+e* zCThmV_pTV+v22>oZEvlvsu@_!nnNK)icZ`mZo(jV5KcA=L8>YOkwsY1$4gK7L5=M;I)C`2xo3U@NXbO?m*4A|+skcr zor^VJfw*@jZFBN63&oqBcA0XxN+{yReHCsX22DWilOeZm7r3m#+gDiao*P~?){F?~ zEXPk9g|=5lDOq;Yg3{EwyFz|;r|iNP;sa(juE16QD!2~B%6$&Zpjc}8HdX%c*^m<0zQb9cD$kjlSCC6kF<-oH1h@e zI;DuhYS8)+o=r>gh$As>M^8!jd8sb9w?p@W`aoo%H#pT#$dhmf;QK$SwAYH9F%zW8 z9H#^f?GMy4WVZP%*;tq*X>uGnflMgmyLus6Aq+W>c6C!EESXT9k^xeOes%FP6Ssin9Iw^cQRX5V;|5S=Spy5N_ z^Z5Mnj^!K=A-UKxCUckpeTSvDXf5=7SdbuWV_(N3OgkBt)3RLzfr|R`9or1{q4Y?ra5^;!BAE;@I=krYO2;s4Sx*&VO^~)H+5UG&o`8bmk@^_<>L zr--Qob5mE|7SVAh`wn`Ix(}HDGyS+$Yw$nnY+kkKZhyFnEXntu^C0BpTl6)73LcBM zPPzaH0Qq%h?NTE@Zrp$+vRT3GaO#$U<~m_$!OS|?%3QS(qb4R$;1)f0yi1Qd!FMKs-$Pq+81)E)1poEcanCdR675Vwn zXj1_kEBVZj25Iqb7e@2tYq7Icwi49p zGqw#|4Vf}*Y~rt%8S4ZJBdxTaJhQ{Gq?d#>0Ov{&Lg*}4Y3b^vZggsSDmZ}8paCsq zilI%%^c+?vktiQpPus!E^q1ZbGO9-Y*%Ow)>M(5<^~nr9#h?w7-HFr$gZZZ&l?Vj@ zxf;o^dxd97%dY8vNYpTu>Y_|BjzZz+Nb>2$?U{hk!v9DJ??FA|_dF@-?sG}ELC>PI z2*(#peqQ`F+|Y9lgHB?Kxg~IF)FV~FAnqYi$yJtSHh$*h(_fr8EwhCvpIdIh9#8qCOu zt2+DPX}LP{*lzvvR=a)pF4gos&pSY}0p@|q5bXr!IhSDZ+aRHJZXNWEYsE7yh*M@M zamJ7JZ%dTyoRK5#I|9##amsZ~z!-Ys{w*CG=F6D}g-?k({%|0Ml^CZo-pt!Voba*H zkK2=@de8~s(Tz`^eh_Qyo02MJyy2-7Tj%m=Qm8%0$_Lt%k$s@C@r)R36(51@uStJ0 zDK!!}{)m~jI5kptv(kz^9EIayzqPUEKnx;(xpXDo7x=-#@b;VVVA%lN(kuu11)MNj zFSpQO00fK7Rs>y6!xkD@^=9+U56}EvV~?zhfjQ6zrQuAhT67 zn(XKH))4qLKP2f|!g@o6oxnuHmeregd;SZcL5>Hei%)7_VPa@S#EG8h!AaqWz+bSW z7E7<894n9?q3|g&*dt|Cy3c1GYYd6*wX!qB*viNZO&o*49%g~uY8KrGye3+J&P>+v znj}cZ;c{mr{xFpZkx0dN*<1;)U*K|k!nA{up%l`ZXiB zDBz+5fn?UBUZ7{Hd7KkA;XrH!#h}9JzyzDbqa8DA?NEKU_;04K3@bOoW2o4eemltT zHY{OgXF#mOU+XZ|cLIZ=%wt953kCZlBWDg$0GCKroPh91jyk}GhA{&6^_&j7a@LXf zgo8cZXa{kODOmOaSrTA&|Ce)2gq`Qz1eNEd2q%|<-Yc?_V%^_k@fXD|{AXrb_H|(L zcU)Q{SxS%(^_rT}y*aS3HB*Y+|iYo%Gsu@PxR^71n6*Xn{t%<&0r+?=eM zv;+X+;_!Ax$GBbYKrDhyc0wGVm2+Jz(s4vehg1e}c9DtBcgPTZJYg;ie_MRSYUMsi z3eUCSi9?dBc-eCf{1<|{Ss|e?tYM@?YgSCgxqUoQZ=I78alW{JkwX&EYdKTMeVvV* z&$ZHjTfAD;A55Nqi#ZWJ6G_+iJD_Qf^o>$5UslTfwPpRg>P{{jV}{w2|Ge8|=9k*h z*eZ^ljH3Z*AMCa~;umXoM%?<-=Tv!mxJDRvbagmbVsTo@Q;GY3+XLtyrYS=mD1v<^1dI4!Bcn=-W@PR#!W=Nr_7a zfrRl|if6g+p28BTZgx6*B~QwDE5p}~zv>vLJ$_`YI?b5(3}r`nAytcJw!0eiQWQf`O#@ybQH_o< zPX|ot)~GfW4DAKV^8)bifXd>1Pc4TO;kS|OCz}FvcZ1DuPN`T54fUKqYnvQed{a;S z`9NIKYwB9YZPa9h9Oe=e4q(HAy#er?HS{-DEml3}IpSuy3}~ED$)+r75vek1S+^rf zX$r-9;XP&ok}GBko_~e^Qcn5`E!JDjnbacal)=*Dm@B-pFEA^-*&zV{=pVa5Mq-U}Jd|Xtv$k{#McVx-8`)HSa)@vi{yL%$2 zbyGj!&8r!W{9deGG{sZ`3qLP#{b%cF zLp256n`D)REy;l5A<7WpV$23~-;VkzOd};clB38HlvvXs{sPW~*rsY9pNkdA!U_DnNS!ew_&@WBe{O=Y;>2m z&nu#h)o>03+w@e;y~rFtRTK19zS`dT8*kyUyVl3%Ey-#>Z)4FFq}@IU(m;uyNc5D- zSt?!5?Wf-m(VCrcB0O5pDzWV{u5fC`QWg*XYH`Ujp%;pi<7ISQ+kzR003Q>T8Wl&A3 z#klxPHt%4}3o*;&A%J0A*RWJuU+1#WKyocc=J|Tv;|~*%(q5+dahX;im=;3RuvGC{ z&ZNls?e7`MEHnRZy_%zxew^K2-(57W{}9)+K%?no*c?vzU;r1lrxd~$mQ)T*xmZfy*kuH4JDbemzA(+*cy-Q{ zlC2DZ_ppk{#ZcYaOjq&_N*39l2c30R|42g!v*x}kPs|L#js!(WEI*T#d0v-(&!hd> zq&>)Mzt%IX-g-d?Eb#3w&JDkWih;vB=?O*teV``J8=SwiY!p1RoZA@x&$!M}#1H#2^7PmIdFUM;pur(CaQuMGLD2Hi%~am9VGvn-t+>2c*^$ zfmtzb?gYB5$M(J@c?XG#5qI|hJgbKY%UGaV*?XiP`uO9z_p9c-=q@0za3e?Z+F{3{ zX+>yb5V=#QNb{RoR;Za zhSC|Tl`Cq>k@)pp?y3CC^*@pixvJboO4O;`BV95i4U$6hgp$gEU|#Zkx*L!MFWoY^ ze2}>Rl+u+oUhPTrJZ!=6)F~^YLc^#nya;^|83L$z@4COixkdu{Sm7tNHQ_;hfsq4N zz6HUu;ixYsj{f2;Uo9(5X4mx#cd_6v#8o>5|7ix|bBbtA4v`~o(=@rAZd2pd2wJpbH z7rXzYc>3eOz@sq_6N5)%C*x{IfwA1FJ@k2s663{F2>iEpnI#2Ur8m+{u1tlMFDy&f zK_2XR>uu+F`tGQ35Es6?o`Xnsy*Y>eNXz$9->)~`NQh^gJ)aQAm`LL+@bLrf0_a9j zAeL3>raC-B+cCAz@Nt~7J?kq_)2;ZU;U_X2|9*OIr*!-B&VgwgBR?rSUl0u5q|ILjDxN9g?6vQLu)<9YFlQ#ZuKEcUl~f@bK{Npp97Pg zBP_^6Lw^nxBZ}^d%(I8xskbC1b32vEz{Hx7 ztjHaQj3TZf%f*ga?zHZ9Rr^m!Am8mLzZ$)i%(?f^touqnIw2_?s9{RWPhO7BvN3h; zPWv2j44Gkt_Ru~dY{$Cz0F>?)zYBZR?b-Xl!c^ww?WsZA_XZ>vFL(`fq2QzwT|x=j zjip2*iOUzN@7Y%VFuNJ1FDk(FMF_Ffl9Vhgy|rDF1a35-{fgh&XkNHFibf zkF&bO9R(q);x=xR-XW2_tF}SM%o+^}9b!N^n9)O+xO!60$p3@3tNGr~HK(g5nB~cP z-TVH3f~cM_cr^OcsfaNAz&T&k?8fd`zZ%qZv^J5s5~$ygFms+hB*ez+L(At~cRhe^j7t z@W-F8;aYMbllPb*qwq)C?kGT+la@n1i;`lzxb}G*)D1G(XkHV^)Ex%zodEAA<>5MO zhwM`;jAZtW-qaJc;w*@>N!->Ecads|#L&(WeGSPGXY{o)%L)*a`F!PQER0bpsG>AS1&5m?zuP;!O zXg76v(|H8kETG6F@f%~QURYPp`j&D;XN=LQ1-NfyU`+u@1@x>}=_HR7Rwmns+QrX4 zKXyX8CPPkVmct;QhvkI7wgDLX*((Z~rPA$W^+S%sJOU39OIbk${{}Jg{R;{NssH4X z6rm;Yxki^zPW`ghs4&ko#B*=6h8>j#Zlj=6bZH5n zjV-wm{im0ehmN{Tvo8-WSnbUZ0IbYS<>8yW)5I9Z7r$~#+Qn@OJt^r%|@*0%M%jZjfpRIfZK%hbaGBQ+RJqhmmcXRc8-F zSnHPX!$OJ1{>dTYRLj;){YEQ7+J=BJ!P$GL#4VkFI{6yg#q- zC(0F=hz&ySq5+)CyxXBa<_}suY_<@$QMDY3>#zYW=8_o500BV7>YtW!pqXQ0^l`}fqB z!vTg`y?_~8r2>Quqwo5I8`?iwLoJ#Z4PJuj%Sen|t%0qTwK6})|4Wum9Zj$Piha*1 ze$@08w>QtTyd|Z+!ssXg25N*<>>zL+!)SWmWxl8vloG4l)OM|*PKgKQi1LNS^{&OE z{&fS+C3U!~67$T7;;Gn95f-I56a#I??fVWzTO(knBXSp;5U-wzc;=*#c4U!KFZtAM~G1DF;CIcXol$Sm>G0jkm zS+?{jR*T8F>!Fn^Ft7{Y&Xm2UCmPUFmjmQkPylWzPWovHzbUg=8PmpU&c)VF^<<5>(q`_54695l3HBfPTwdKX)Rbr{6#Nqee zmE|x$(DB?Cpvm3k=d3xk92*nRawTf0XmVA9`KJ;0b{v+h4Z_-7h6gp1)5Z?@?3ay3 zcO8hs3yQI{4rw*U9h^04b7z^mUvP#k0*8P>NaV2j>hjT=@T-Fuy+a4?)fH6|(qHI+ zHZJGUblGzTJ*hpuCs`#*GED$>UbN~$#?uL0_8fhtgz^#TDLP;DtAXbD0_2$@n#LN& zAD$LJe-S`1;0-Q56qM<+=}q<|ioWgD>E}iQQ3Qo(esf?`m}rCi9Oo*Q$%6M>n4*qD zMZ$3*sNdr&RffnL{a@qj88u#Vr|~FM3%`KA($aqH{YzcSXb4437`eVD(moZ*kYuG; zzr8U(T0C$YF6cjn>sx(6RCQ*qcrHk-2)Uv@b%tTLyDjj2A7Q2$c1%5vMg!v^Nh}sy zjkjWZx9$xc5Y3Myo7mf5FWJ@=kL`;Ztf zTsRGQ62ESfjY&CnvqhhU-_FYo^qDufJ?~ps|N5y%TsQwa?0{%;P%6{Y3)yYuq?d)M z!PR>ttAF@H#kGA{X5!-@gPYte{U$>6UXfAkc^21&Jhv-{O`A*LyM*{^{-SX9Q;m1h z-k`2Wb(srX8ML}eWjd}{*TlrwQ9P81fExL>iakl0qzU8 z7pqp9`8YFk2m?wH-`td2)GF`W&`@cA8;HK9>~qD%kB(wz%$Q!E>yR**0vu^UH4(O1 z{w}72g4gA~4dDjyCRT45M3p^yQALob+C{D*WJKVkDJbvQrb{D1&gqIa0XispOT|n6 zF*T5Xx%@yT{Smi71`e<9COi<|YGNY1=P;MK?*Qy7a3}@Y7E7zNy%UWaf#+}>)Bn^G zba7KZ%v0R`BIQs=3ei5$M8NsdQ4$q_i7Z^c;&>B2|zEGteow{#FNu!qjoW*C|mzJ--!H zr>rE~J{HXDonr2`$5LK9b}A25%Z1nu$G+UQ zNequ}P`Ms$%OAuYES1XenEjd0+pt(3D0rI|@>tYI2|!{$5{;ovcv?Toh)F{Se$TadqTs^T4`Jq2QNY3L#i1sk#js=)G8Peay@ID74ygfUB@ypik(MH`yo79tr$MlHVq} z8tblE(J&*xPV4(F)7M%z*H*LMF8>s@K6EeuE&kpx*7!+3Ek`PWGEhC0(Ir}V3yw?` zH`h{hleeuRqb|$O5u(&B{zvWpU216OS68Wq`(O z=T2I5bOj42gveP69qg^`CT)QwdVm`fodU3iX>6*N^FstN(Xi$s<_-MOpvRAv8VYU( z4iAzkIyq+mKSR1#-&&JG_5kH~jS}EDPI?3;wm9Z@WTH|-vRQ-2(yNV($m#%?JP%ze4 zpVOqAw$~bB*gTV-ho==1bJll{89-}ilryq5J%gb9S4XjA;bEE1)SJ3bCDlK4$+XnR zy9ba>?_2brin2Q*U+nDV zvuFz_m34u9xxU>@j*&n?VVFeX9OA6<@Qbl{8xPSic@BwNd~N)b{hlwY5xU*P}YB0lxt#l#e5wVPnPj2zjHh=i^@mcX4pSxciR zn@)Z-HR%Mn>F-C7{V|}>=#6m%JK`q7BYNQAkC=|}GLn0va*_-GjI8KySSh4^uCr2i z<%YgbVP@r&AMC$QyN$0F7S>ZADOU>8v#8gRM(vK`pd<(Vsv@4p;fcnHds?O)W5QzO z7q^G;kGYnMAVEOfmHFNIk6+U;G@d5%BIvE|;_w~rh4+1XRrnscXDN&sG?dJR-Wod6 z>7Lzq*0eUN^?iq&x*MTW0MpZekkmnMd9O>+LH2JDeS&Rw5F~u#_yTTd(qklKywasD zhq*gemnJLfRcoiM;2ShjqM75+r91YjmddjODP}E`3X2$#Vho-~pQIXMws0A)jH2O% zPEVJ+LmJNdWVNvf*Z@SOaQ?`t&>~9N(1<4|TeSv*&Cc!9@^bk7P~`QvF+ckQBEUMu z-9WWZzdt#h0fL}135x_-iviS(JaOVy2z>zMv#SeWt$jKNsT8EWnA9CP4nt@Fuk z&*OU{Lt;8l?&=86t9nO{1MB7e*))Phbt_@T{gt&uP%@d3wktDD_lLXV};`@VmDkpHjya9l<^6Q6DJgrar!!a>twfg)4=FY+X z%5Pf=8274(=>M0Y=-C3>1xG4gN#ocA$~4u@>gBgJ#z)y_`F3VeE!<$cZSrhEcTT1| zDDz2QY+;H1NG4E|70VVVN{toE=4G`Pj)TQ21wD3zS-)BcD9d3P2yzST&IZzPhWbmB zw%(*X=$%(0M*KWzFg< z6zqOWDHZMq@^b|quG028?O6tIXn6hmfqZw~!yU{swgByym zZ(22{NxDv2C5|w)7%)YPgX3he=Kz<`n4LJYyIIu?7K4c-|q#Y(6_}t7XPH@hBq-&iU;}oIC|g17D(zi z-45GW#DG1?+PXy?Urqz~36T3zLWUNn&~IQ-4MCj2N1>2v0WJRNhJ0U_yVi3ZZOkP> zBCX^Ne@|g!`ePlKnq=tW_hG`ygCVgR@u0*d==qf-n!%ZNM?uZtD7Z=uc}Op$3xIGGrop_*1oo_5n#e`buwCw z`F#hie@?08-Xwp5vUo#&;M;@FW_5C-+NH=DHo6NT;4l(FRB6L_;8yl6gbk?%hoIZO zjW!q3;bA?ZNDW8O$7gWpApt3FMQat^L_o6BRx9=tN_Hj4MBcW9S`>D%aC_;rfL|^? zhXiRSIixbC`!C|2>%VO9*gP2Pw*}x66v;~6%h(tW4M3f>DMM=CroN@A6oV3pq$-?Z z0wP|1c!R2@O=id1b_k5YO8ak@3O(eC7i#V>3IqQ+$uc#wt$Tl@BT*5C#=At=5m-n8 zJ8nN48){PK_q>K9`woy!0g=_#7g9*~SgX)V$-n(6s0d;M-+jDxb>s(x>aljEbz)q! z0D@M(WxI^Oc5$Rd=pa5b ziOe!^oIVXB(bI_m_#b=#vcc~q`Eo&+G*1YHa^v6!H_}ig-{}ZbB9({wuBp`Y$pU$e z5C+zN_dXDYTK(`=3*6wa=S@>s zp~eIvagj?)lF_W4l=@N;!Rh&1vfjG7(d|v99w|l2BZpl}_)$%hMpnzN#!Fsr^9mFP z)8YE@zAhO-&A%@QlKUTt0K@ki$gTkZM)^C=rHDB*-#QQK8~k?&e6nNR9!pa2=2A>z zJrHqz_CUs;OmtcBN!?#I^WRqLkL=A9#IhS_h;@ryF48$eOin#67RoFAX=N_^YPg|| zD`@dqtR`$5ypA;s)d5D4{mzr4{e6d*&_Dr!&a@83ui=C@sdqYQ*?@5K6rQ8$ zEh7$D_4b@pBMy4H(sbrUb-@DCWFtb(BlTCbxMci#ed-+OpSCCVDNpyzDfn&0pl-~N zKxN^;)llkTV@8380GTHLZ%2th%I;Y;ZbF?ZlDP*R@E(Q`X>4waf7Khy3^<=V&3A!- zl*ZYO>bs@EBnJVLfDZJ|XnJjY9q}@Va?nu!6d)>SYbk zWVLl;W6%_>6@8rmi&`-`YD^E_n`a~2c8j6Ud}fGGQ>lSR&}02XG8mmLedb81i$bDb z0a*(43!DN<51Je^Qp&6J?Vh((uf!C>9yN|hNA;P_%+^TIr=$ip`dlwri1T97bdxS! zie|EPYX-@kiP(90ksf?{9m~Oo_3@An!^t6iDK>;0(el#`InGqm}rSwQz$%l^tTYi@%@gYy`W5ZLr3R5RP8ymDPw zU>(DYHJ^!==8_snD7OdJr8f$hXs`J)fW$-A%ma4kx4NrVq}|G#BRk~TM0Y@Q#{MP{ z6!5OkY?ixbBR9|{ivzbON|x>M z{S6qd9LTz1F~g-?m$x^Vr6+e1M+77u0;tWn$q7-Acfhv#F^Kt2CXnG%35R_9<^?$S zDj&{!U;#a3S9bCcmB;HEE~_={PwFuJQ#uPxtrv{pBWKaiab<#s-`xbk-gmhhmxC$Y z-_=>h1v*m6nki!Sc+_|&%g1!U(AFNLt`==*PCNFL;pWF+QZBt3>V!&9e zjUe9>17gmRH@BFG&*(xpzrF?u;?-$t1-dp2}Z z@dIb$H_5EBdO<DLBKZ&4`eoRxC5i;l1|-s zBe+6E>}K{x{D=9W+R0@oPByJ%d~#4E944;zLp$U-z;Nfp9;-%Y?a5foH!ehAUBhaK}(Kl6%Z@?4mV zuU9(~4AuYyW@MsCzUE@^SKLNbuGs8yIFoi|LX~@V1v&_l44NNEbd55*F;6*pf|b%z ze+0cjr^L%W!AZK5$b-_OfsWtFXh5|{P?MvUCwjUUghiSt#46}IlS%)VtV1+tTC5E6 z%b-ZSPyOLN2wKjM97j7-&D|Vj4ec_79tg6E-z#VsRpEcLr2-KKOYsV{FtX+8NZy{L<)F*& z|44eTHZYr)YIm}2kGj-WczC77`y+#4{r%SXifOA>8(hW_b)8pHKIGtBA;4n00p68_ zUVYHM^oL^gyN#Tx@5;5>K$5>d-4Q@iW~ddjhiiNajRM8hh+k_v-WQG~rM}CKs(s_W zv{m$Vhmf&T3i>?XTm%^*-QWTOU6d3#A720f7~7`BNveF@RqbRxn|HZ#p#gQ0Ax);znY}5 zCxS?(u_PcvCC`)ASsX~b;YrKOsk7hjtG?cbp)AQDmWt1y-9}Du#i{wbM2>HC! z6@E0v0}h>(->>9n18@s~`f3mPhYzVNm?}d@DHpF$Rz{|clNOZwGyiI<( z0^MLl&Eqk2ne3pWo#um^X^(w$UW`8c_E=8nK{C_7G1Zy_;99}KjB$5^gryGKbEfMg zEp|i(`n9;pie+d#;25(1+Qd%rOMSgwDheqST%jH0_X`jzijweREK(L4%k5XL>S)+T zR5k%Hdwl0nWu;bnKA=DFobQzTjI%deuU`>|A1223+dWGLR!C1n9HP3Xc*#p_CvvPD zIdiYUhJ2gr>`w6skYd|@iqhK?e!{e}Fnz!?p}uJ`vxK|?Prt{wJx2U;*amYTV;MK$ z>ue{LVL9~{n=;blzTIBxnn1bFr6*6&=$0F&4_eiOT5@Q3JiR|CXDl)I4iY`dpZ(Wa zGp~2;BRItLYwPnYoUg>bEwTcYi`sa%D9|hUW@#H6`n&HyKH{u&{X0k>p%68}5~p9Y z7XL(|K}dui9jZuK_YwSb9~Frb-bl+zr+jk>g!9DeZ%zz<-g?3CABn$SH5&`MeSSZaXo$Jm#GASzaNd&H_xJFcXAvMx0qrJofiurZ4$4%V}uw zGbmi&b@WM%pkm-bfn=(UUYH@2!SL;`J%?Q_0R?0%H8mhU%TUZ;qGB0yCom{ce6;v!T$3D5QE;d;65W{_Bc+1~$HsK*kLwSZjRR--7BN zW03&Y7Qg{XG)#5GYis+g>3pC-JQ7OAzRmN)TW-pGQR_Z?a|bE$#^l*2uXJRLW!h)0 zeq5imh^MXZf$(D6h7z?LUq5DR+gyyaN<(|(u)j-hfo=FR@3TUuY|jJ7oQfA!HZKbv zWLhl@`Vgt)Ttw}j`PTCAjr+a$hawLM4n>c13-4*zc&fXjXCAaeAk$oP-Lo1VH`^P~ zjUHK&Qp_}94&wpwIyN6|*OZUKw|vV@GpKKB54kbFd^5=XC|eQH8woFoF3}*}Fp{dx z5iGc1>XKEL^>UYQT>sVv|`uHHqD%?3-RZ^)Z(#Nc3-01P`bqQ~5 zhdNNZJ132tU3X<~!SOZjjMPAo>5nQe{4wRKa8IpN{yNvTcDaD~`E8GRMj;A>M1RZz zeaI-6xvyIy5erAz-5skkoK=`i*WPbHY|=ng-I#z2+<`Okw=wJNh3%bDKje{=-m8GT z6qTvadl}ONJq@`p84DHF<$31t_P=9RnFZ3>xZ|eKLe-~7SyhEJ01>25(;?R82+C71 zS7Zre)&vM36^tKnXU$)}ydd(LZ9{U+w!p!T=FmE$A!qQPX5Vt1y>@7LvG$$krKzmD zST7HhXWE6C1#|9$1gjPw*)^+di)m~S#M>QO@w=t%38ea*2B1V@z5Io@Xx`e-S= z=@?bpLXYGL_uPeI!PVtv(riV(4YS78w$T$LK&=#as?qb?Cc=lqj-dE7+I+^vd^9zjlA(zx-r0O=x%G4KwqC}Gdbu;bZ{u#j8+kN^c90$;Ef`^Y z`&Q2GG|(8o-Te&@x|t&QgW0I#C>5JqMAHE2HJ=*ix7dl0`!i|lUnD`oxUJXu%O$aQO`m=%g@J16-_If?_%l}tpfj=|W6iP(B{YeF z#w7?E9ytObJfFZ27FZb7y6q`OY&`Ati5aOkw06PKM2TV#3F1p z_BVylo})cR+SR|OvBumFf<0lN5k>f@T>ueQEtr~lUu4SvftDVvt3UM*<&sr}v5ZwQ z%-!Osf%X&ZqlTL)Vq*Km2#0+#MQa-Y{Pq0 z{}*|a0=!CnHd#H!p9Tqh3c-->gYG#u!G~7|E23-cQ-P~gCgyd9|nlqz!)Lo#=?=QC+4yQeBGi|y&&Vrc?*y; zg*z`RFT#5k?Qhd1HE%AK^+VPzietMi*qX~^&qP2u+<02hIEaafj-@Tk5c|Q>c^kH=+5D@kb`fm;lB^e2X)@0;sFU>m2sR<)(|)Nh zxT|Ax4j=RROIj5T-caw4p#o@PJ<*%;g(K_%l|VA7BXuS~kqjiuWchWqa{KlTSl_|* z;ah$zFw+iAp8KRum~!7y-!=OcoLXCRmx@YaZZRXxewlaC$hIx|&{5PmEx2KnTR1?wIuCFu`0@HjB=e3@2ammM#i)`mOf<6WZ)q(W zi0yQ+_8?@Srbkh?!)ogFhrb~>1y8Eu3gb`sa`7r!n8UR~j3r)KJ1`d{z8A&P-CB1E zTX+#M40qJ=0Zt_y56CHauVZ@fIM7-qI~pkS=s<;s@TNO|2yOgz3Kom>L+7*6A2@Qx zaQ1Vj*1BCqO-hR1{VmKl7pLd}976b$emK=SU;?KjtT1W}4A``{lM%9e1KR0wa=}1! z-xPz)HQ;+zObszj`Kjhz!c~R1TlMs+IVZw&ps{3u&MOd=%F^Z0UbH^S=OS=R$NuR5 z)pXWjO}=l~SCDR`Ls}YSQVxR#88JEs5+gAQeVcG;z*D!?r23>awHd0 zvIEJezyNbup4m=Goz~b`U!KezUEKO4@r*RPA(kw)8ksUbade|I%}^|1jPy6{a#hOZ znhk_xha-I*x$pbi(?fdnK>f_-;m2kjZH#5T*h;DU4A3GWhpa32gApeCtZyEA^yHZ3 znPflH65hG>JgJIg2BOwo??u3t)LNI4>rakgG7F#1-s#cMiC$epym>CJjve#p$h8J4aINnhgjP}52 zwvJ#A^k!yB;Fr!-#)o3rPL?5&x3|`C_H&&D95;&JoGX52LLG-)t}fdSG=Gy=YX;6| z*Tau)d2epl&16IL;-!+fR`Z*7OW@xxt8ef`u(c~9bUwHrrpk9?N==KId@30G5m>$V&w!hM9n7l(*txq$x%8HR6SlWy-vX9hh%lSwGeixa+A3(!PF0~51 zEAVTMy4t`Oon&Xl_0PmTmUg>wv`?6sOIH1#`22wIhF8^3K|qC`=Sh8D*pO=} z-K7!B;cAN}Q{Y9D+2+4h+H=wG9R`O%DasC#v75H$UO-(JcCc&X*<`rd_(sfNp)6p# zu!t?Zeo}w2UgacBOmb{OY+kuEo2`4wT3fvN{wSE_HJV@`{~5o|wUN#~L9~6i{dlku zlrnXl4gfBEq^n8N)5KX-NfVt1>k_k-${Tf;k0t%KkOwJy61hcw7%qSJ6^HTcdk^H> zf$q2i`p^tz*44h{e|z05NgA3pDS3QRgp^QTc>fI{t&%XFujvjiBMv8$U};Vu3Ih64vEu-2;W~q75O4SvsJA6DNyAl z{?ODoKS}tSg}tJ+l^yZs%y{k`{)Hsl-9C!>+FFrUYd;;*&dxy*Jb?muOn1FEy`58M zDdMn1_a4b!fNXH76!yr9d-tTYUas5>cNcf7_Dri>ZqJBhk@(tsI%SXbbC?&TtMwF> zK%;2Y(DFV%CHO!vAhj!lQ?{)}mx3=s0h*J&p($3900J-aZmLcv!#LFO zVOVD$`~;kdlL|vdccu zpUf$DLK;vx)G7Cet>Uk&{k33^js$v-hyK+rZ`rz#`@C3-=|@v=#D7qC;cEC_#VQ5T z)dTpf4K3>IEy;I4h)6{w9=QPGUC^t-w||siHbv_^EGZw&%?#Dgc|v>=Z4c5Wu#O(sLMl|LCLRiA4pHsdtj+{3k z;hYn!#R_oeuD0c>A5%XY1u<6X+Z7HT*fIV;(Wpx$w)f?l zEz|2Kvl6$4e(|q*(amIfY&Szpfd*aVHNOpqx5hDq123)L@%K%VbEBm~dfCXC%0OK|AW#2UlKU^sR)P8OISkYHWm9pMjXF>9qBQN|+*Hp;BS!&muao zlOv_$7B=_iVZ~}8;9CVU93zm6I<%`xSXuOjxar1{z1iUJ1P0I)M$^)qb*Ori8@a0m zG!=Wv(gt#_&(|5V#ZcyB-#X8T?`xE>^64v!NV^7#*hKj$+z~{$|+ft$r4!{}2hzR~#{b6iHpv$BAT|X<^I&7JV%f4?HR7GxVP_$;Spr z9<-0N?{$8@Y4qK6_4512?k2^C_oN~Cp&$xWV~Amukx(lVug!uv__9ao&g}-DJ*_PA zsS=Qy!uh-fVpniF5RU^u%%CXG0giZW5F7od|2xyZdM-ixktua|H;StZ^_yyWOEF<4 z%e(4RTsFJ&x4n=|zVx+I226sim9m*+vHEibz;rsO@;r83XXCP#(@ndOcFX2qu<(~) ztx3X0@(wMzO;6Lmr%Bm~2{u#rp!bS+n^FXXQ1KlsElEA8V1iITZp z;O8qLiMB!Ix^Y5DahSBN2X~O>%~Q04WFm6&V*IZ=;YW=teF6VnQL{a}k)0TB7qu(! zSJN@-WADWMwVy+1=^b3qZP(PUN&35smVdGz-HNx=#=>z_mG;muq|_rge4^Nzb6bc5SGZv;N6Me_+M^|vkcY;Ao{XtYwUdpX$Sk=)wcM-iU`x$SJew&pwc2wUa7-gD)>0(QC`M4p(j zXOE#=tS)dTV;OYG(}*^tl3r@*qZiaNw)U6heUWA1ADbtINivsK5_Va*71HKc*w{6uYy;$3MA=-;CDsKBAbK5oEeE>AW-LCik#S1}ew_q6#u8@_{;1}E zFUyjP7OPC{h>ZfDg4w2}p=ihQsa%y|+yP=X<#b@GVzGXp8Q-b-$`!tB8g3fUl1^qG z_d7u|g@dKoQq{Mjt4MW|+o?JmQjVFeJpQ`Wf!$n#8HBlz?D9oqfj6t%0X1m zbSU`B7f(vyLNTGWqjmuSqhYo$6Aww+{;a?z_hV?Ly_gSnTFJSfz%_q0*QcorTUJsd~@#8jMOfec=ar0Qfh1~Mmf(?4fdD>4qrgSJ9O;wyde#C z;I&F!v9_?xkv6XHX%{8I0NcmT>sUEUKR@zg&Y!HufV)M)rKM!E!0S)c^Saj#jq<~` zlb+Y005YIXOL+M{ZD2zgw8h5l;7`dE*C39nTzHBF<}JaejNd{Esv1oH0fq%G&(ROf zo;fj9U(Q+V_5-pjH=D|RsMelW=l)GIj2RR2W8hh2Zzl)1F)}wtE;pH|Jo>3lr+&Ke zEptwP8NDJE3u~xkZ%(sPb}{4?FmC%qG1j&5AmDNWSUhco(*l+y%f9KRo!!42{9nXR z5GUi{mHy;ki!;CaH%$0!3pMlXwYz(c1=U)D1!u2PE)n07aV-Kysl!bREzgbFXG86+ zHXZZII^8OQD*BGEi^O-*XT3VtWqoQlVY;PkA)(oodBL5Cp$#<(vnN8EX1jBs>wMF> zq~VUi!;j=t9Q;!nM268r$tB;=Xk^uM*N;FslDjYfeR`~P=e|wvu(WkN zj%>)P{!(Z;gI{oMtd&cMZ0tD+w6<9A_)DzmY~}ZF9*l=A2pH_HSPoCP!ThXYdYr3J z7b*xH3EZHeQiHwQrLpsMYM{>90-wpW>4ZPL2Nsx==`0se{#S7sVPqv% zw&&Fk#-T?!l5R3}M1MjI)m$xO^vjutZuODIneMF*U4K#v@SLaY*1{z6s(vfwpVh`( zAYKc1oOd}CU7r25e&>0_F1k>m6UKVDlD+-c+A+aQt0yoX*U|{7{^9I`PcP`je-VGN zt&f6Ei6@SNb5n!8u<>dTi#A`N`!tX~ejP4*Bcq?3a)4vuc@l(iOHh=7Z%US$-!NTX z8s3@q=PorGr@!_4s3A!O-!u(Fy%}C0Ze^@2B$(I#;74|~Xrck*Qy2sQ>%frB8wwEu z1*T2w$yP8NOZ}|`NPCK~u1v^U4f0{DL%bD^M1-lAo#qA;Y(qSm3+v@a%j;s&^K-sM z+lM+HjDA}UG5o51mgEId{h0t7(|SJFz`&y}ckG38!_P_7q?C>QbFkfrDH&!AV7RM# zj|8K%Icch7o2C?&E#SO+&97*_?9r}cjT5kQfT`3#9km4;&AU+#i#zCNg zgK<;|T5^HiJi?+&EJAX{T7NCLE+25PqVzO=6W3o5G$t#Q=@m16m;;v9=c;-PXH&Jw zuBHi6N+c(fe5;1wo(Q>0F}^klA8dxcKYKCzG}}z2eY^0MX3>V&>wnT+UlnU$rtkzo z=;m+^{3-t}5|pqPTEEIz#KOwgvnhQwr8WMpT$y#1FrmY*2CB}gVKdXyR10SRA0CBX z%Uy0x+FMGU)-)D6Z}Z#5Omn3GpE0U}s4Dm2QcMVg$0^=Y*Bw)BD-CZVZVv8jlzt+R zSLuBJd@;}&=tZd-+z_IJcyga=&*E3yK0MXF{oKcT;1wl4Ci_Wijc3!ffCCUMzE~)+ zLC5g_#VlOuePzGjz#VsP*=i&6dIE8Z8m;c^T=0tS!RBsj*P#EOTeLQ`TjYov!Q4-d z^>`dwBIf|yY%G-o%ZgiX5Pl?XH&Z5NxZv$Fob(zox*%>^BL2KrXX>cvf!UohqfQ)p z6~>9whQtroVW7Z;Nfk()J~E$4SnelhW}|bVB~uBgZ8f{wvkY}%5}aa{Wk6(WCREyg z3y<$LTUbonIQ`0OLylHaK9W z>t&hKNp3RZWZUvBAQ+|a%eCukZ|z@;CC#~OzVjU)-uHe3`c}}$m4?@VY>B@sGKB35 zZgBj2>0~Zo4c%h5dm)u`L&x;-HxH)rD!qD=f zvVs(*wbda%OWLnQ$`JxN?3Uont(*5;qW8obIAiW`<+hnko}uLZ<|x=_>P%}H+GWl~ z_MN6-2&Kn%pQVU$wX1XGu=mP;EsOaTcTv@rtik%I>D?UFUWYEcJr{Dg8_Fr8v%_hz z$}JPy9wc4SPsuVA)2^{G%+ImX(KygVO1Yy{+X-orsGDKsvku1C2BUh_9A6{!4(sMd z-P%*?aCgd!;Bwyk26C+2Ateg@%l;_FU=Cj2S@fh3H+=$#+?VM5&lktS89>_%h>uw+uygrRj zPk8z&JPD>xUgHg11#R((KQ+I7Hsscie@`_1)j(e!DCDi$bac*;ru)mifQ*&pPb-gn_v;llO~zsc|p${Q`qSu9s8d z=}ur;YvFp%yl^IMq;2ppV4ajdys#Adu?|1_a2UHL@$KwW9rAD9RGvBXO%XKe+`v2e z&!Bu}q?6H64hfZ0i@K*{3^#~Ftbg&y^3oUM^=q4}B}vZWW9ke)Xx5clf-?u~IKlUX z{7q(Uw33E0(Q>B(5K@nhP%|lr3i=YWxr1IMIabQMz0z*!;eA@A9$u?N2}%m61zl{9 zXIGR8scRHu+-4Zqjj>&DTQRV=j4l;lhaJKEEvn%&dcHl!EO zejNyg@mPZXN;#wXrP#Mq&Wp4MEAvoij@7=w(~a5 zARi%A20DdG=PEBfJ9Qb{Z>F={wf6xaBA{ip`<7+e@_hCq(kyGJu~|*w9h?^VHC-{_ zzO&K~T=Pq#V*s#Gu%_4#l+n6sSV7{F@$_3n)4AOTgZX@)VEern2I~W|6Os(_cCT@%-nNx zBoVhXEa~UZ^Aua_%4f0@-^THv4!6ydY(yW}fnl^r>d_VxaJ$-lMNo(rv4tUgS$a{!B$ zcu5#og6JH1vso-H;*t8VJdXN0~=J)}dq zW|Xq>Y_rQ;Ueeuq%}}0(Q4rqZ;Zdg(qhm zH!Ch2y?wzR66>?zA|Qu*Z1KOpNA0Ac$Xbk#Z)yx|Hm}zaD#_R3bD4NcJJeTwVM$~M zeO1%i%P!m?@V@zu$wSZw-W`6%cAdA(xn5kD99M0x<2MEC)HY12JzGx1a{X}eYWEJGHm{n{D@ge#}NiBh3)z>L=EUg^+(vYxw)>` z<=hi8TEnTt?W67%`zax{%BN;!cL<-N>Kwb)XJxE(&lSr{#Z8SqVs|&Jt3=6X4&P>c3!w%kuMp_>4*es~Yo+v&M9n(WSgc$KcwkwQnrf0Va;ooY8j9Sb<^oCUOomgOGT+jE1EMV#0;b_t#a}4hC@ze}Xt!vy z>)|qKJ2ey<18a0IX#+>pwzcib6Sob;A1cMIlw;V{a&3IYWIz1#C3%3fOqwsSLXnC5 z#yVecJgC50ie}zKo!3t$c|CP7qo(Fm)IY|erv^oD2&LsMBd%(E=f6=Lrr)q?f3zAd z{YW(tqmnZZ1!qSsS8EpHFGB`#Ge^^d_CztY(eMy(IWQWmP9mvX$TW2B@qik%yzac; z1Q@j>M=i32QjtpAt|&yxep)FyF+V5Mn@hwGp!c)WQERvFHIv8QTKyW+Uyz|@Upo^g zb%9f-8TToK|Jn-+II1Cp;u9$~4}bf$)%Jnqqa8_c+(dm!Jp zrQC2sD{3}nPg-)e1q29YD7&c*^W4IE;?`T{*7|j1zBi<+NX4?jAUAk=qKkRn{c_#X z(UyY)SOycUf9H!guE>lUPe5#goP}_|JZ%ZStKr(B4?uZN*5ozDAN@b-Il1aF)e;L8 zgXDV9Z{T7RLha#u&+Ce|$MZObuJWnAGO&$}Z*ab-=8uTL^C%0mdaGr(V4iayxM>eW zQ=aBYJ-;exAi*bW7X@NsCZS}96Q9Vc&rgmPB)&J@nMHRbUIQr263%H|rtDw)S*JCV z%u_@D50FeQjBG0b9+m*wk*$a6{N8?`p@kNc#0=Tv*?2 zv>Z2iq9I|cqtMz6p9L)HFA}KB{i+;u>Xp-dzXL;Y8fZXe!=b!R6MlFg7&@~Lz=*hS z@D{P{d?&eV0pR5@+ z{Fq;!U@M0zW@!!BRCiJS0jM>*J`%i|ubnvLr9QR9>UZ31)gJ)PI1hO&ERo(Tr;iB5 zggPq5T1(ul9Cp?bLIl3AnBl1b1_JTm7XvvMagj2 z7OEOR=%CU~df0mLu62um2{jXuBh(r?Y{{YR(0mo0*FP^N_$9!ME6Lv3<+SG+sRdhA zPuiS6m5{*wy0}kQ6VY-~JTIxyCV?+}r;rElJ(8|wc`~q?D-+3($`Z-=^!IONW^Ycv zqb5&E_jUsOMJ>pt1AcQBH*n5V>Yg;JE;-PpEIzoiXSv3{aAw8uh26`p%5L7?7taxu z{xW1zK1jZVaN*j`F{cL8Qd?cW<38L>>%b2D^R=#Vi!YT+?cI!4OZ&WpMl39*&)Pn+ z!2b9nJlFgU+D@Z6`fTI*nWesg*lFf6q)Snn;4oej0k+tpTX!GE@INs?Pfsc-Ni~J* zbd=lIsVEg&sW8I1&4c5yA$w+>XQ(anQPUuv!BUet`BMd{umO2XMKIn?OXl8|n52DY zs@bq&+$J^+La!r+vz}2-mt7g@JuET#J4bhhCmHXhLCW%wo|bW+I1H89o zU>052Yoha8s>rYSD{+r%tO zGKD>d(L@j7;|nM>hR<#4kD!!qf(L8LrN!jd4Y1#2laq~yOi{CA5*PiOX0r>{%G_Y9 z9OB2AA5rX5v|_;UrN53Hhh)yar3$41!XI?~=yK(`?7^};Q^OFS@lq{4?SN%z%;fVD z$p?jIz+lKRqeg}J>Dl`l6SW4Ng2qdCGsBFInnOhZ040HCAsIN4kY9{3bcGDcD9<)N z(b5pz4-1?0t|?33*(hJ+Y3BKc-D_PRA1JldLba_Q?>LO75;#7e0N0_>Yrfkz?d!#> ze7hy6-5v~RY%b^^sQ#&*RDRqDbrNzL`<;O$ySw@>+sG4UW<0EO(o7^lP8^W_UMUuv z5XQ>sTXR~8sewP{(U|+u1d@CpC62#_);#*~+%)K!|0y)oo`a1($)&#>M60uaJ8b2LK6W{*KuAVrYaEghfs0PWjdzx2f;C2!N=3IB-&rVms4_m>6=tY@AUqRC0FO=u2Q+9`Y#J7Na{0 zXn|&FW@&93=6P28JIG52^MW;&;Qe`_&1?{!y9HetqP?;Fy|eHZ?E^D9*{1kqzzG-x zhkat5pQs8>pn)&f^;58sEPN?S%`TWXk(ajVKANvI@~kV5Xx&_8KpQsrqu}aUR@I~s zspaPvGG^G)8m^52{Vk+dPUZuqC3KJ6)|6^u{+6Xno9Q&rj8cW6Za5uKZmh#vyX4j!E*H{sT5bvsPyy$K zy+soqZwXa(yy&WB`TVYA*nO)U+U8-gtz%T+Ybz5-D|xW^QA zRvm~+`33bdBgy->coz%IE^gX1NS8}%_ezO{2i92D#GEgE2IGk@n1*%YdhW+x5^PcC zIRpQku9nzjGQ;IiGtx|4>rlcEojlXA;FB7E9Sf{V8+sz=p8*<4ZV;ccndzMOLt}wB z>Oa}B3X1?|BkW@v#Bxsj8H;YPPGWuM@NW}a$>lt=Z8A?lzl z+WN`wC!alg_{OEcs`Bs`bFLWOHCy~A;4z^NY1;)lHdGMm{r`W@iLMTTfEdyxO6sq< z<^WyrJ(P-VO!(H{IftSDFqc-IrpDt>CH()e&@hiUPHU|D8pZ?RSKAMOhhkvkK;3$D zEV^9wI|G_KVri<%TAXj8?2{?w6$k6-5v>-h-}?EjGJt ziN80ck+a`PnJAI(59u5*H1cf7Ez|gZO;8*3?}fh^nam@>;&J0QJ>sd8KN|&TDTXpd zWvsEgz>9|7N4@|miK?%&uO|*5Cgza7Cw=c*D|Ggq`l7gKC~1_5b}^cjm45`CuLBXy zb@gURryO$13M6ShHPVEq1D*sTu9>*>%i!&}MaBfY2X~2VtcnW zNs6zOo%azgn|NV^s-Erql3Wg?h%D1@O{bs1KBFCchM&kh0WZmt4T+ui((&#m+G~$M zeyo~TfI(X`-9a+3MV1PZhz@UKngD5YM3}XaTn%V=8Etd>)BcH|gA&2bYL1R00e%br znomsbXlzqaKk&o9C!`^kt7AIAqL2CGBsf?1c=lNXhq})hjum}kC^07F2hVs!?}P)+ zjREeEx&)@tjc5!y!=i& zMk|yQF+xwKFTl^I16)w>Y)@V_=byJ&yPjb7LMDNc)mmevGZd<*(d?AOF>j2pw^;Y(5xg8}YZ7PBl)$bP zWBiI6k|=-O1i<=cXT5qemNzN~@b&|B2}TdtMMc3Gk5U2Pmb>)bYDwrj*OCmWgQxQ_ z2-j6MM(9*#mh+#wy_@7g$M5=S|Xy@e^VX2b8|X{`rnfCY4aBmu$mE< zRB@61{4s0wqI#2l6hTSjJ}g^JSNP)u5Ivd)PEAep?;0wS4BOU>uLr>I*oWRl*sl%% z=YiMf^xgy0xMMq|CYQ;ydt#CI%f_?@;@f6K)9r}s^3&uy2>=V<&NT26gl*g{_FI#Srr z$ki^+p`iu}!|plb;b8vs;>xYg5!Hh`(laj|94lY@40>Wb6J(;%<#f9Z7&Ld71@GY{ z#-i_n;PuZd?aI;MaPCJTr_v~yC#?2%CbeZ8kNiFM=r|*MzItOOl36uHKx0v zOzXo&4Fc!DmDsLjhIyJ6K0ib4F2?QnCg)KSjj)xuP%FGE8^~1vmaAuA8Z8|Q$AM1`xI=0W${b5+NN9*G~o8`j8}qxvFvPPfOQ{;vS8dS!C_+c`7voupMs zKxye{sx95E<`cdX>@O(w)F1dd8)_$Fun%+EGc%ItTldQ9dS+fHrsZpbzc9m>Yv2y3s0en*@2GjWa$H|RZhuLpqiOay?mr& z!dAp{7l-OZ{XO#DYiAsA!1Bryr*LPZ^0d=9KD zLiB!!O=Pkwi;r|N3$Y9*^iv*wi2F;sWPr*mF7#6gADy^f4@ej;FScPd8UOnu=zmwZ z+#fsjMsZz9hK>B({?5@huR}?xnys0=j^*%CIj$wr5r};*T^KCzt+%^FukKPNCKMU2E&R3iPaz7$$R) z$}96CvdWLZaBkQTwufi_Qx+2SzQW}sPib=-wF8QzEA(`l5_>#gKMhk{fA|_9;kELIt75 zM!uxtX&Q?ZxitM4&a(t!-WSw>%9W z4LqL5YT}L2?5$DOpQ!265YHoFEicwOz{TmJVr|%jU%nY#O?MI@hxV;-7UxKHtzkJ! zXKhaSwx{*GhBXZKH7z)fjYNIyV>YK1U5+q9zhcai+gG)d$cz;=j)d80t=+_;rpwbs$7XQ_(3^VMwCR@^i2 ztkyOEaj;x8oE^XQrqQx#thVcgdP|4~d3rd6WSjsI*)T<;;!MnulBnU4l^VrR@r8)9;*jmj~iq`aT{^JYwBE>GW(cWo}eRUNk2#o?|CO!2qTdN~i zd9ke#PFtuY;n`UAg!YqM&IB+Nt(2Ka?;(9Z57ucXLd*zAH8upJ({shGZRkH79d`kc zThntbiRth9`W(&hzxF*f;9g6a&h@5;Tp!N5rXJ8@cN6F3A;2`uJU_81S*dw%xD*m3 zOkTD6mzqo1HVQ=fPLGKd2$@cCZH-VuHpObkB`WpEH1!gO~^AM)qQUaMhD4nQMirrJ4Ke?mAl z*#u$tJe5#@RLJ&n=7&??wA0{1xIa!Yi$3f6hCI8)Rg}ylN5hUT@T7RnLQCH@+JS9r z{PO7Z==n%lLHaDuC&0iscAOoF2UYIh8p8u0&}xYElPQ1m_zH+&K@f&iqHo(KVm`FL z*sdA3AatNTXS_?;i5e>GQ7*=VQv*;?HXMnz& z5{$6p2d-8(nRq#;6S9-xI3`K6Ipq^INw03`zARbC3!A%-?WMOT(Tyai81po`lcW@i z1gFZjlp9wwwmO9Y8gH{N@Csni7OgE`njsDC$W4nb(8NlmFH=@{l!Zo2g4FjAt4~?x zwR2R731R#e9VqP-d_|D=k(glzJlm=_03EO7m65pYpPhS0cVkXc-;{%}F0*Xjf-!fE zm$=$;?(@(J!wWww`*26!wq6G_Qsd_Dt6$sckGU|H-VKGjLElZb^vNXxv$8*ypzTYm z{efT`#$_c^GrHE)^iiqJ+s^AIJ!{HRb=(baxrMYyHx6v>9h-%?4=bfh6^c>|NNx05 zt#p;yKniQ_Y*&SRN>54r;@NmXb{Wemzbm z<9h#jpkvxo=`b%)+L68Nli(pGz|>(27$&!YbdV>t=jQ-MU1ceFu}Z?W4|!0>VDiNH73JOXQtb~2GIdBPbg1t@Q0TQa_yeUCj21h%6r*cD z0*+L%wMu98qJ0JHQNslj=XhekzLIjOYRWbpukLPDaxa!yt&QM(LKG5^__n79&+PC8(f0E7J(Z*?ZqdGEVXm6?zQA}(vx)`?N_2?ftfm`lt#T`je7dEa$4VRP8_J>2T9#UnYDMxE zw&)dr_k@v8z@N$0$)bPPui{#&kFF&cX34e(oprix>+o6?Mb!C^{lvTson4oY`Xgs) zbfZcpL9@@p&MJs1S*|+XdHld^oaoXnH^)GQa5jpka*?%{DDc&;X8pVF4hTsk8;#+C zx~ClNQdjr!D+Y`9L0)V{Jvd1i3Y=ed8e*+PjJr))i~i1*6xOhecF&b%Eiux+&Vto~M&lQ@)(P45V`~a=n=x9tUEwJ=W%uYEOVRgUA%GtoMgQ z=oxJP&DFC!DP;>W4(u?s)6A?4I)2!Gf2J|dy~wDM!)ASElQb#EIaXR;2Q)C*pr=gA zrp8A4oSf5EU2dD*q5H7!(10fI*obb)z*3q26(;(G;%%ClSZOKp1J5VHpd>~aND=#2 z7tpRw{`Bf}G>(d>uDIU}2}25wD#0CycSXDxlYr=(I%(aWgECWm3XzRH_~a0eFGJqu(DWVk9ru4{IiYmnQJX~m-n7F Vw;KKBtIazmefwT5&x8LK{}0CL+E4%h literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/img_3.jpg b/src/wp-content/themes/Broadside/images/portfolio/img_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ce461be6ff942be18f28e5a88e6b627eb910888 GIT binary patch literal 34474 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 IlLjdN*?izYjsO4v literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/img_4.jpg b/src/wp-content/themes/Broadside/images/portfolio/img_4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..decea22beb33a895b8077b32302c011582bfd15d GIT binary patch literal 38482 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/img_5.jpg b/src/wp-content/themes/Broadside/images/portfolio/img_5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1226b38c5fee8ad6b0b12b9abdfed30bcb4e4368 GIT binary patch literal 30939 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 D4RNL8 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/img_6.jpg b/src/wp-content/themes/Broadside/images/portfolio/img_6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1256e5ff16e3cfc23be94cf7a7cf9f2f9ace7a4e GIT binary patch literal 30334 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/img_7-tall.jpg b/src/wp-content/themes/Broadside/images/portfolio/img_7-tall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8248cb1fb7e5bd181949870354956b4f75099d9 GIT binary patch literal 71300 zcmaHScT`hP&^BGVByOs7+?>sxyLV6Kp6u+*JoD_o`G242cuWmV4C&|@=;+*O z7u~-dIsh!x?Op^OJslGr9UYQ(Ymbgw*WDkDp>uyjyF>qPkuHIb{(psm)?;9xwY28{ z3L^s}O=u0%f5OQ8KXUFrVf|nEZ#wO1W=2NlbIeT4|If((KJx$X{Ch(OU}dmpoMxm4 z&@lk$83FYF2IxlU=osl3|3^2Ps{aWCBNH7xGs`(vHg>R(9hrKz*y z{4qv;*6~O-3Q%w%CqGcqYz6UzGXJu?ksOtK&SGr|Zp|A|cCas=@zUBrMqJk!DD0Js zW@F#(h7w&&luZDp&%KKs_=pO_pf>Y?4*Q%qaFDipoI0HAe5FIsn!eIKdbf&fF+SN>@JlkhMMUvW&0>9Tj3CU&qkU0oKKpJ+^n43xz_~6<{){RmB z=)7fcC)i&BUZI#SjL?HFAN@5&Lpiu!oRf6`71yJH&|JEwp_x z17s(-&c<=OP!KUdR{bl*`%wm${18p&<3c|KJ@-~mKhbzS_~oL!J2F^)D#x<-lu#+D zkkYWLTaC9$yj3!`-1Z5&2bi^7(t|$!qHOs znl>?ihQ)F1A)jd36TVcz=Df%*JAEkIXWK1$^c&1TMijiuP0ZW1(N;?5eOBL#rFO87 zn-8hVI?#`CQNe@?p|*(lOHExAL{!~kh5}7&&(2+lkFlJuEpHfUB)E+?>k{^02}DKk z7~am0?NKgp>SZq2F}+_P2rx@=@HgZAJ}I5jg6mfG4BamCafTN(i}tq}mC3v&E|_ZW zhb0uM)lx%-t#%(hx0U3Y zJg}nuJ~!IX?`dbeD&dGFj=LxF9DS+)FukF_v37b{Y=v6D`}&(-&c~Mty%yD%BENoD z&Of|>qheG)*`60|Pj$2e0WSWa%L_Jgo))m`F1+haul3wE&el&tvN(~MF|I|4$Reny zqQfAWa32d`GWPEECq(ro^sT0zAE+w7(gA-|s�qpBuRV%s#Ksa01D_;qWl^Zh3XQ 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 KP|0*}r(!rZ^CEw$#E*4u^{72v&OAKn> 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 IlLjdN*?izYjsO4v literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/img_8-tall.jpg b/src/wp-content/themes/Broadside/images/portfolio/img_8-tall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4fe0a43d505314d5fc5a31c3c42644c8fc5e45f6 GIT binary patch literal 7229 zcmeIuJx&8L5Cz~jJGSGjtkpV7ku&5H2nmXa3s6HqLKIX;NzXO7ONtzUf}e^WafQKN zP$I|;(0heF8vn@t?AhKiJ6+ve1B=BR5&PH&^2z<>?HU4C+Gl`$qB~yRU0h+gDIKvl zJV2Y8GOAZq@13gi!PkTsMkOJ}aoe`zn1*yU{Vt-;g%DDVY0{-`GOa7qJgn#MssEXF zXMPp7L5|J2KB;6hSu~4n%X3BcpBbun&_Vxq5As3BUXfJF&6;t9$NF=I0u-PC1t>rP j3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fCB$ZK&POB literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/img_8.jpg b/src/wp-content/themes/Broadside/images/portfolio/img_8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..decea22beb33a895b8077b32302c011582bfd15d GIT binary patch literal 38482 zcmY(qcT^K!^e>u(gbosghxgaSZNAR83;cLY!m0RCV6pG|>)YydDjgoBgo z|5f}S`TvYS5F0xfA^-sWGhzdQA#5NB2+RQl0HL6>=LOk}9Kha?Ye~}V1tg7=9Bo6! zb3z|qeL@NQXeP^ua2D1$cF4wxDnS3O3jhIu5DpMKhz~juOoo+Y78+W@8fXo4cuU04`drS-xtSbaA|-?EN7$0 z7_fT7&InNal9=qN&uJDz$jvJ@^XfM$r3Pl2=Ak4e&X@}7*EZ8QVshR+&p-^%%> z=If-)<-ZjneCnHwY-2UlSM3hj?D{nvq#d}obfbE}OEo(!x?$~qp+1&=% zC{U!FapkQ?5Y_&+W#Kif4Ft=Yf)y9GM+w*1yk5nXM2_)i*bhFoH2sbX>q@oOcxuk| z_7hOyT}N>BL8Bh zK(JMP`#AUqK`XA?EFe@>c%KBaX|$Wl*V?XsM zxiHJQz6HGO%qrw(gbOB_K5EoZ*5iCPIV0*t?LPw;&C}jJ=?=MxT^I8vOjA0S#XIfe z@;QQF{htggg<@=vt1O=IDBiq!#U`!X@drRbRWq2s%c001qhkKqZE%3x5~<#(2c~yV zzZhHJDIKz(9HJoS#4Cmw@6iVAe7^Ag?y+0j9S`KkHNvl!{kxFab(=X`NvKGDL4%|# z0WxrMOssQ@ha}mM%RTsMYP7yvxT)J%p2zivgvGu;#3CIGT0Aoka!J?)J@^5X9^(^& zO<^1OzJX!$tfnjH7mJVCg*|iewYFW+W0jS*WlHXNj2QHdqkT--!Y45{E6-#a#%(-K zxNd1=N_~$sM8deRyM?wG}{1*+Sw7_sAUUza~%A zeS>ied*rKi<3~^UvwQgUcjXJ(!78HB8PI^ovlWlQ3C}*LCg`_!tTFc!T)sn-2%nh3 z_cUTw*iK&$+oI{TmwAbfyPHq(9{AIkMr$QeGuiDwGBj`HazCSiHA!raDdh#XDeb^&1z+ff%+EHthZuMOoR-5%dm3jqvFCN%f2I z)(whJTooLlhN9z`WUqAz|C8ZKr!FRy5T$C*dZ@uPMBalJh&CcyOo%6SyK7u5o|8NL zVR>ot+B`BTV1L10uCh@m;6*i=UHiL$Xfm!z7q4^rKk& z+*ENrZGIMCWu=!+NK;bQ(90#jd{QUj%4xMSYV~<>Jk*=A^~)Zvl>3vPA1-$^2&OG= z*bF~BzS;g4uoIm2TmO!?6qx(wX3hM`Kg2N7Fq;8-@#QSPiB$4aWP@8MsdWvX?6ugY z?k{+Ds6CgqV-FAK-dnox14pFtS2b-8+PNpcdL;mb6lszSS0K6S zUv`mx#a{VfK`sT~w&x;irC8zS&rv&sh|P>*j|9YotOAnp-Yt2lruO9scn^xbxZNac zE}*sZ(Bj^+N}bm4JMzkUnHb4n>6CF86>5Upt*#1A0Zr-1qG2kzzx-C z;KpUppqvKh`rW9VolUlY0aXag}rbz*Wh<+QoJD0@ssPC0Gj0myoONTh1s zkW@&w{mjLgEcdP5dGlYmw}DPZCzTD-F#WeI8_7k%Yi-D<^dQhXSu^)XcA|OpKO&JO z8s)$KTvaF<`|Z;5dw{=frj;S2QJRI~L}2rsDxN6P1`vz)FV7}nn<#K~MlI)}ua*0r zLt?91Hq7Gy$Z)56<5wRGXmq4YVCySz<(A&f#HO>GnhvUWE-3rY=H#thTQhD7a>-&G zy*IINtJ@`?ueSu1cBWxRDJ1mquZ)wyFxkgNYn*2pg>q+#FV-*KRosrZ7WA&M@R)T=*)~!4j zy*VLGv$F;-T(zs1kue40<~Lw!W1Uu=AG3J+tQ2K*qDEO%24B5Sxpze#PV_ft<3{^Om*h2p_(rZ!z1#UYJe~U_ zbKRUfvRRV&sLwJL2Ck|?l1?_1N9AB;(;TIDwfs}KLlzt`tX68DdTC(04r zSvPLok7~O7C_-N0gb_qX*f!{WNUXCRLNX(SlZ+Pgu%fuw&uI#4geG}!j@d8ZDWIbX4;!Bp zy4~z7)q+b|rJI>_nJNK6Mj2u5zh=wr`wJKraM@>XHC?Y|9N|{qY++;y5oUEV%1<4W zci?)n8Ch*L+GvTN`JpEs9&ytJa<_d7@Q+UdrZ&&BeG{A`NJmU%@b!vXXUJ8{;;>(mho zY$tZrs_=eOP&Gt|MsEVc&)$KtuVTG~PJ2Hhl~>7fJ!YEJ9F(caXOAH|MpO|e91-2i zT>a{w_D-5Tf0supE(UhAyKs$7W@@!nlo8C_U-~(jhE3fXD}QIlE3MOcKM8#8{29S) zzvem_wYFKBu5H$34c_>!j-uEGS_-d51b;S-#JavG&I)!Fr;IlZ*l4?IpDjmQ(WPZZ zkv!XPUeRw6(&oTRJ3l-l6|@!~*yx`-)~#~cNDxt3O$qBq1JEsFe6%gR@o{4JXQhmq zXaNFXTZM_Dg%uQ~Y08n%PtyJ3=$gqxIocUob4x@nnBH~JqNBGm($$z^^+wI!ayEM7m((;06)$+I(oFlX?o@Ptl~6WElm_ z=V@9T0rKp5Zz)*sfumJc(bSRjLZfwKQQEbjJ{@*OcoXj+DMRo^6{q0Rn^``^7jzOV zE|?MkyO{|5?ZCK@a2dMm{zKv#6;?5T+}RFD-(qh;@@Scr3A8sc(l(`wPM1H1*QXz zm2DFye{l|WHCzC!boS#6HCr5!YN47m{@?+CWB40{&~8qaLx67smjKWDkA zvJLjyY$R|1Q}2DKL^GYqyn+r@jZM0OnG6wNXw6aQpdvjg z4xwE(X}p;kXqVfUrMW~B|CpYliyTS^hX<*~`XnYf|E}T5J)NG)Fc42E8JtB=6Ddsr z;^x}Q0E?1caC>kFa4sa=m{kds!p$B{nbpce>O7WPuMAz@oG4CRvTopu|PD!*gQ9JP?-;I z0;s*uG+WQ@Ngm1B)qcvK+16-dR9D>@=wcs2X4{YE$q8)>UX zj2JP<#jz`22SrN#nDhPdEygm_*0)vm`sQJywFW^4OQc4d(HKSAeS7@)aQr3SPn232Nmx58*GK46h1$$6W6-v zCQKOt51YJvF(@6>>u?N5HDUKZYJ|AzOyjLbqUm^PRRyOP>cLP&cz=k1SsM&KaVJ&e zdHauI(<*K~MYi^rM2<+`5LG?EN(3^|kFz97xeB)EmF+ZV>_{qw+ggZ;+5i@!Z(s`= zWQWTg9BS$pJk!ncP43zpF@PbCeXOY!k{ ze&s?1o-Mv!B85|ZSOXkzZ6Ayb^F4dMqMr%BWT_%ecrR%o}icH^f;S_Iu(yDTvalvDWb*lNzVP);$iE-A=H3*4yJtQ83>N90!LZt^xqIAUeTCVpjeToH&t z1#?7hNzfXA`05NqeD_B!vU)3r)n0NhRaS~$<`Z|hurQWK7V}@%Ao^(P!r_k#l%zX23xP`apj9F1v;A_)Rlt{mSb1 z1vyAB6R?^S0t^qhI(8nSX9Ek;$;epshcMjtMzpR!>iY)!u)cS}WQt}}+*FGx>zOOt| z@srBsQsIxhYM=M=%-%^O?LZaP`0Y!n-fM)8WTNZgem*}O96r^I(@vP%wU~-)eDwsE zeHoVVhpa-ABpJcPD>G(lbCC?e(hsxhpA)L@p2=uCzDl<3&AeLld^_yg?h;QM zS#FU(C6wLGQcaXiDvy9Bq8wLP;z%2Xu&tH6#vozmNPD=|CdjE6LmLTLIi*p<-8q}h zZ6MKD=s+aF>m1HrIRqjvd0ju~8gQji`G9v|a$u*mGPqv-OD{_21WZ}M^uo1WsBri) z-XoE+r_O_sdpxoTnh&;&H7lR;kJC{0n1oo;jf}AkKLCW@*|Dwz4HzaQTBLCTc}ZGm zkLhLV8oFcZ`i?1g*RtdGi6@Cr0#1o?tgKjx3l9WB-2M;dJ6%?w2VVRJcA-EZk@p z%nlLr6W)kA;;HSAft_RF#WyHcpFj#KMv^7nBr%)GM`_7)S)-~C=cH@`xYWxlHLZ8m z*+Ng30cQN<>9;{yH$zXL_RAxl6EiZmzwW}a{F1R7_JWI{wwuvW!-DORvu5ZQ9bDT< z6NkS43KXvw)-~>HKy_w%JP^Mg>u%7k9$l7H^I5vPykB+u{nFNpnGbQ5-E`d?_@Vt? zkp@B+k6*^n3a{aYu?3wP5Kw z0{5JfAJRsP*h4EZ5|8mk*)0z4Fd-Or4eDg}ds6aua9?9q^90 z3W*_=a{r-!If}mfW&pT+iIP$ozhn&ldB;B~+@@4YAXHSO*CV~UNpY?CkJ(MF{xf^L zmuv0j@0^_LcuDnAntU*&et(vztHTioQp4;CIYyK-qJyh( zquU#lL!1)%2@ZH4qHN$XVSMt`T&k5W1k&>h2J82^3Gk>Q8S((fGTxKVl!=S5$CpL6 zB6CLtviQdbtOV04a~y6H$l?Y%$H}8oeX{%;d%$%Loj0=@gxk0&&NW2rYlK0A{SLP% zwZksj8`d=ideg50x_;p>D6KR_U7PD}bQ`r&kn{aw9hX15HvY%EXXbaDg-xe6JW78> z>aMpuzj^J`z{Ail->Wp~g#F=H)T<(~{yx{1`LT&f23E^v}T}lVX5_4@GDXMm*4ba6-k4B8l3Y zm_xNVlLQ+)$j;%QCmx7A>K-^49Sn=UN6**unV-&!vpY-EX+G(}Q(heI%6!3(uGCQO zq80}W%R($)HK+R!R-%?HK_j==AzY1Vc{uNDWiQRL&r`+kKW406UH*09$k#36EKo6DgHzu^)zZxUH3}mWu-~1%lT5A@L`WQ5Shup8XTg1jPPGcB>MCn z^T9nbCQF3gQZY5P)~X&&iOKz8$+dOXpp=H+6yZ5#Yl)iI+qq2WW2ija?ohf zy+FB>*_IUH_$!rtdapF4+t7r&gl=!KUAN)u04`U`?E8C< z{cCiqTsQ70oGTdLa{U}_IQ32jZ^tA9nT)DhB9||UN7-`#K~v#?_u?s%i!Q<}29$^# zN3*t+6tPd%AP4f(F1i!%8nez`i1kWt z#B;;=^Kijt#TpVUDt*-?VSe>XN=VPz{(90K3#JtR%`%Z`XJyJ@NsMom_b_NN5!dI% zGInGY$HoF#J^(kz=boFf&Oq-8TLE)RFMOF+eLDzwp2;EpV2mF>D?AO;=Z4!9d*u33 zIWURE*In54X+Rp`alRDe*Wm6w7?uU}Z~(6@*Xnwv<;oRb5EG;Y;07*{*(nugrs(c; zKjAfdVcA+H%b3~X$_Xynh-q`(J=8~M3s{9}CDl3zBsT>Aq)umw%SJyk2d;XibdLnB*?qBk^&#JnEig+Fq{j)24rZ6EG ztiONGn14Ze2juEFOY(WHm{Lqsj*#UGzDwbAT#S{GnKXxw2emtjPrjGXp5?&oU7En1N-d5-4dy3Fb;DvT_$eZW(Hth1a87lQ?%5O) zLi_+dC5bI*e9f*%by;GPwE2M2u5}jvBI4kt(`g~i8;oS7ux_7BMyp`0P8Pkgj1|8+ zRaX1Ha%AAd(?p}+Q~tn(vl*G2uoWCgZ;j&c1B_i=Xg-4&?Yxc!dylnpR1`W61$0ff zk5EKgb5gu)K8j~*e1@vb1N36N*g7J4*pnHZX1=f{ehWzRi+bY3LZ90Z**xG6 z*og5UikH=bYCQ{Cs~xjX04Zy$X{nfQ^p^QMTE6`R=oTS>ue*7R@OEDwS>uxGOF9LU z!2^reU!)2;yA${^k;n1U!LF=#vuygFv_^Zj z5t^mqSZiStoLc}kzpd;9iF!#C_5lg)SVBYAchO<1VM16BP>l!ZRH00LvUVWza1SbbaO~ z0k+b4{6kPiH<09YFtD7g&8g|SB9U$E*&3ix_<}?wMUt(@{G`fS$bG0I2BldL$OkA1#z%l6#*+b&N$ zwymaqNuC93sP?^G zBP6^KOh`*Xj%+2Fdmz-B)Kx4gf>n~TA~IAClVZ7}{Ge*VS^j~WNrFEBg+a^N_7XPY znO1e2Pa0`QS{uSj+gmiJiQr!ulJhpCPe;IG9K10OC+mYqXYLnofs29OqwOG%Au=a7 zDGnlI{dsTEK|-r=PRK>tOKWd}M*cNO04jLt`$5Oenh`cirpcQO=#vq_jQMMjn!3dt z9>2aFfJmc1B&pjm)`RXjkW52P%KJ3Yz7A{SRPf|HoD=aO1Y6%4khfBWyo4Y6Uhqy3 zT^Vbdtb{GpY_^G0v61v}y&#^!cNBn^Dn8~N3LgL&bQ8HtN~G*#79yMnQ!d#)o^5?b zm{bMG(EV}Ub9)w=H>Pf7@l~`3D<&gUgP1vk*AFB3@#p2i@z$-#RrQeioXLXHBwo%{ zA<;S=nTp1I@ik7~P1D*yiMO)>FhfK|>-#^Z5XLf$9*_uhtW26u;jeC?AUaAusfaib zT&-XIQ9uOBaak=HpE%cZ^WKRR%wuPnr=iQe_`KC0e?0G8RVewUchEl{6+4xO7WTKu zF=-ZY2z4)(C(EeRWD+8@hvpLfo~ZZ2Ux&E!8Cy!9ea$*Xc8s zV-%5WRMRCFk~2ih#(3ql-=uy0sx2YAw|@?0M3#nvRx83U_>Z8$=6a>O4$gZ)N#@QC zzTT{nI8DAF@)Ju=;hq;7F2!hXDxBVY2WAnX|FbM<384~%c*htJ0XC_S!K7{?w*Kk< zZ=9uC<9X2_(^XtvJ1(oaZ>woB6InRBTWFk0E>?`fOb9XfReqlb0ZTygAR5v}W zI;Dg`g@{;4-Ha1b?ONpELIPKlJg3L_U6@%Vc zdLFG3csIOD@D0gCM5s)rwjuO8Vq?q5|z2tQkutDDHuwaN`)n);0@g)wr#wdO{^sy(3W2To;PF-yP5 z)o)wR)LH4bwPtfMXVx6$WK4`cXT}($_?B2qdlQTOSq(lrr74z~~dG!T? zho&~oEmz`@ep9B+1(b}f>IbDMA-$GlrV-tZE@0AFzWOr80n;q>upL2rQ4Z5;aT*NX zG1xWpY0w9$EljA?cThpnro8WA7pj!U$@w({z%SS zM%@9e32?$E0)4cA&ItX>>T(Ne;2N;-wZ12;IGNb$P$jRPDJ*<*3aIdM zsHnvjc>EXN#b5kPU%LfCXS5l+qZec;54uyX99LY;{Qlf_=D9#CxT$E5TPKq5*2Gx9 zf%jb|(_C3tTe1Y#oETze%HRViEWu0zN@EtY3l5G!u5=~EX9cnqu1Byh6m0Kpz{FBS zAnD=I%;Zi0Td(wpRiG?nO(0vqJ;WkkK8{-?!XMOBD-fI;SB>4ZsA)=L7NjQFdjcO? z>-dWwIxYj=P{c31Bh9(?dc|F9CRN$3?-Bt01f105o4r%x@X@$KVEiCkQDLQ1x9UMx zHs)u>rO*w-y+7y&q8xL>k3~Nj#O=N9`?dG9;b%o&pw6L%aKsxu*+r~l%o9oW@ow68 zK?r6(#ad;p4breTHdo&x&+{zv&lWT2z=y{**lvn~W^#o*DdxDGDJ+o^w4I##0AoZx z9d*pfy0Ano%}hLI&Kbq?!K>@N<~zX1NK1(RTl?}|1RO_c=L>h)XR_~g^7}F(a2v9P zF+g+(ZoWAb=G4!jjl}XTkR@50PYfDD>RxS2P|nZR;{70eK^(d{K=gHUqG(u>GN$QF zS)aC5jk^BvK57$h|6e&tP7Elw8+I{HquGkWht|qH%L+${qV+f(VIIwXJl%5GYx!yI zni`-cdttJ=y)RKjfPEQdgvKs;J{2Y!1VI+Hb()l2UDdPOWx2X2U`m5L9j)Fvt7QHw z&8a=(epz8Ha?;U1+Wt4EO#Rka&&~s5QYguX)b=4<^HX)DM}gOK;aQFCVy1{pI zR$nB!uVw7@mE~xb4r}R+gcwQKnEV<)X*w+Hv%8}Gds<6rz%wl%o3JTupo^2c(}=LK zT8c=Aec5=Fvsy2r5B8w926VJfsX+WnoQCQ?Z}D4_i?yevzA$Q@`feqh@;oQGy?xDg z;}1x)rTp8unC&kg+NExkyrU)lvRzp`-}lKgOYRQ)GX2>}DT9;to3+KZY^t=MViMG6 zUQ*XhX0FJ$J2|_IaTit;MsRqDm!=mbwh4Q<`=?tf=I!!yp=J=5xYQ z{9a0nq$+p=SIA;gXn23VfAzC-XVh78m`YHS+n-S%E&8YfCshfjqJ=|Sx9Teh9>G}t zV=*Cxh!`t-y+rkm_{A3j{ESc=F7jxm+)w0_t{I~KtFk1mic(mvW!uC}Kw%^TUZ=3m zO~X=j zWkn=*gRu2}s;x&LZ2JWN(sFH+yTFB;Fpz}qKPSd4mZ_!8$n4y*G&V{}{ zmaNsJUe|N7@k*k2MDL{V$6vC%l^)&1FORZjJHE(CY8^ zmY0uE<8|W9j;dJBFVW4bY0s*9hrJtYr;S4mbPi;|w~M}~n_Z2%fLoctaPw8%z>U_% z&*g9HI$QeNLK#0x&Eh*B0)u;X&uTRt-}TDTQ{uN5*V=L3dP!jXJ5edrgW{MQs!9zQx8UuX%z!dnGQOCeQU>Sf{S@@|apvuW`47qnK* z?AQ`5M3zuoeXew-{22CrnH}+d>wI&S16*(A`8UP4T$gvvTmzO}f z4jp>Fd3vxOz4}=0v5i6t^--_Ot?tVe&$m53$LQS__5as1&Iv8TglzoeOl@MeWzhfe z#?RiVIx}L#vSv@#rvX;G?6}Huy685R(s;pfm*5M8e@p@3obSJu!OP_l{vtkTVY&lq z5pkm(up|<<3n7qIfYZprH|In8goV)|gAA8r?nrCmn90RGq3T$mgRKGXRXh;rgRz#N zvMxLNhiW>-Eb{3%G@bdLv{Q~M>H-h>Y*YcgU8stR7J?qS6 zg>66|Il>d;KnGO_B1l_0y!RVYj3smY7^>cUzMUChk3O5ElzBCt_!=`XmKbA=Fm?Ao!*< zhgf7_Rj8ZoN#4G3?VLp5&fCVO=k~pgk{;?3;#Q46*}e8DMvS(508yTETMm-95fzIM z%EZkR4+$`XZ@02$>Yn{9fDA0p0hj;PBGn$u%EdP$3Te3E)%x~H;i{GkzwDC@I}9zR z@7VR74@yNFv!)p3$ME3T+WqkTsI1I0* z8ug}Ukqb3F*c274ly2r;4Qo5AC`}7C-}4t1Sx|(N{euqKskS7ogd1Jk zeu{N#c|+U=Ni`Y8h)P)pM>`|#3Qr+?QS$+(X@!}%v<|(qd22K5Poo>P65)Q+Jr7M* z)+dc!lMq(IAXfBlXr6i(Tc|^8(X8cj4x4cZRePdSNmx%zi#CBD97E97sayNb7lbi# z?XUM&vjh2}gG^VFmVk zrUVCUUH3&*1AHO!)HhAzrDn2B*C>g0&^CV?=zu=IKQ+&VWk)j8Wn04W4BSgJl#ZXrlZG<->MSixype9?H17P=#pjy6puqSw*omMRU)$l?BKsq&9rf5)L@)U-pV$ zE>I=oVH``2>ebxAMX1pyr|P+68sD3h9%cyzJ)->u?8%+r6KbsTnTccTn!xE}(*XMV zQ@Z(jir?{tG;4?pHpGm&m?hWVy5ek5Fcprz`gw9!pxmD0oHY>h@5{b7y|9-xiEL@m zFP+_MK=BDXE_?yNcX&)KSUh1_Pdb4PPvpC<5&TR@RYHaNs;CGtsR*gw7SwqUOu6O5 zny&ft0v!70@3b9Q;Yl?f`oJ11q6qDdJSC*bmz2L-N78DYG$ng)2K7hzp`YP-UQaX7 zu<>v}-y|q3b?vzqE4rpDqb6+E{s5DKM>`wSyKpQg03L;fDnE|Y^Dwgc^wXE3_)6Hl z+YkhAe)lhqY5mA+`EFLp)Hn84#${dWj#r7LBHn_2obRhkK^Mx#y>v34g%yh@w-*)< zk3m*+W{0YZyM~=YjLbq(WcjQ_ zh_4(>?9a9emz>)%Qd#%4-4suoM@Z~$wYoNoqF`NnA4Bx^$sxz@VLPAp{8Ja~^&Z-^ z0&eC;HLh+nShvr8zx3$?E%STz$r-}d)j6reyHL(+C_>hQwO^+fNg>P zG`Q|(Z0dr87!c@v1cWnYHHUVt$Wn$Z<&Svrx@Pv07$3(U1sRK(n<*jk>)?=m`4I0< z3-4wfEfmo5_1Td%aK?!?h=YG6aLu7Jrr9z%3{O{#Ycwg#!l!Rf zNqY4v|FOt*XbLAn8l)3 z$Qz_%dkdXCA(qFsA80^!=!fdhR9K7YwFFLW- zVkx)roO^+G6PCC8O@=Eovx)Yp$~r_if*|Jc#IiF$dL&31Q=Cy`O`BEGZW+Y$k^T4C z(aJ0Pvk-142}-{QL&)L-h1OGANY?+PN^P=U8q=j4hi?q4ZoonEqk?rDWY%|WK7AThisw0AFMfjE|cr#lZ+TMFDbR&H) z9g2yQi*-h4_{Z=x=QM3TyM?dscN!|b^&dX%`-77#o}Uc1`pXu$iA1kiky*BWF@Hg) zbkv4BPF1st4LT@>VY2yi%TlH(3mP1l$z~!eob~1tF9Tysy`v(1)spS`7|GJ-;bNnq z4Y1h@t`};rx4nhWcPyyUuXhpwL>L+X&u1{t^YD`dqe@I?O(gr~2?OhLtm0cs4{uI> zRv7){`9dz+HPpA>H*f#5`qB5Q^U9U6zj*A?USl+SsdKhzIQ;>e-Y{ z=UTPU4(C5}({hhB*)z?*L91d~oJ^XZpj=p54YJB4f`m zqnX7X1!X_}WxNiFqT2T^>Fr?`6%Ll#Y&}jVHB3Lp+`4fbcoVCBChjA%a+6R5x-9bl9LoFzY`S#dSQ{V>gu2M){n_Kg!-;xqf_CT zQ&5r9{HW585jr07c2C(`6FSQkC+-y(aKzwiw*zSG|(JiO)H&2c~C zy8lRTf?!;2KYg|FirPMR&G4JbT#4Y2Zh0go{vkDUk~k+Q;O0b z+1-!R-hO?Z_R>mK)z!M{=JCP1N7)0{4LvX940T;4J^lI@@aV_s=g+^1p6E`{{n{c~ z`0%t{??Ou9i*ur?^Ks-K=y=SuHdpWX{Rd4yBIS=)Zs!aES`SP1}QaOJ`21JgR;?dUss(E9(RLKgW#+-K(_YFD2ax zS6la(6I;Ir+DDu?3le!;oy_mGNy(zU{wEyt(>&x3$qdxw+d+p!G zIt=$GKHX~8kGb)}`2^!fWu^PWe?O{{-z9$PTkW#ZT1dZNbf@-dMejhz{cfq4p{v>>W0wox=i#%(OJ$tYF zHhA{01^9=4cpUnB{A)MPd-vKQhrwaOaFx=?l{(6cy!#)3ky(!lqG%HN zgaa!17_ad(tf4trFArRj*ne{ifzx9(i<%f5{{c%zOf8p{Aw;Imk`g@M4NldF;{+LG zf+lNFPw06cYF9A()0#TuLv`{zJVGf#v%=xVT8R}O3mp%CLkk=9z$WDQ7pmV(l#4(P z{Af?mJ?FfFGXCwL`t*=UW=%AZJ&53@t?&x*{@H)A^6(`{(uz-YH(_VImAiB+wB3&C zXPMB^W*VJMdr z6S@)36GtCTyuK~1%pL_ouC13#7p=Z^IQs&TxZMuhE8Ou|`>B5BzOQ}u^4^Db59`2l z^OWUP!(xlE_^l56wE7DfPhzhB@{#vHKw!MswN&PblfsAugx!8uLEt*|;^W6p#K7xC zdE&M3ivHN~{DsZnNhz(uWk-wanY`L(bJT@7ba^?T_1&d>ZpXItncP2sqMSN8r$`uax}K-o5&(j{d*@0Q=X!abNpY}TF%|*UjO^{aA&@wg>>9=w7Fba-n*!5@qNA@_z^Pu?PB9=Y2z7ZL$u+K z7giU6E-O=3ONFba7WcM%by`;bAElOK1G!}z0nUL(mCoOX`mRZjR=JOB4G`hmRq)wA zYiszuwr0@U8o(h7nOU@I6qYG9bA>IWl(Ljze>fz^oQb3j?E83(`uca+cQ3Z_#rGXt zc*R`gayqZZuL@oip3Gm3?FOFFk9|H{`qLUVjFS^-hczC`=PvIJNRPRNpZTuOcYNAx z{|C5;|L^~wYIE0z2O?iruD1HtTt9HSxa>{5?|8p_g&+F5(Jl>w`kBS2R8AkyH+6rT zYKR|bb0#jj{l1WYxM9T?(00DzeB$GLbhT7_x%4OCh`4C{{lUWp&Ap>1256c;h%wGSKa6Xh8G5t8Zl*^1Jk0 z{J5qbk+lOO6^K0jnT_a1~+qWgK^m~8*T1MAh$q-S>tEa7UZUajV0ShDPCq7pfm9+!& zK5yMevfSj(b9=52cCGyOy#sqV-=C49h`4yNat1qAS^d7>;e6uE8IhFRxBk;BP5Zc% zxDUe#&YTUt+Lrd%l5KN!aicli$>l6iGBIGj^jn;wGfk`}9~GXVa(# zF1^l&cSS17;r{{BQ4%f*Wty)ZIl3T2FdKO|AZ93Xo2MEu`_8jp1;>g^L4Bcuns}2F z4=)FWd+XHclI1rkw^!H`cnT^EOvanz5VA!o>WSs_WmC?{9`GZzo}-sCeM3HLh%kJTlHmLZ%HI!x>|e1xMrkO| zO8Vi?t+!)^Q3D^ahqkfd4_4NVSTzO#c(z?F2%C!0ltJ;`QZ1%%zsm(n1z=NC1`ahl z-IP2#Knnf+i|l^@rw(2EKyBYXw+_qd*x3z?lEb`k%qyCz|6XZ=0TcWnwSf66<;akG z7I9to)I);FaNty{fc&xdGv$ivEiO#lPI~OcBy|}}@_;E6c|7pO5NjeD3to7s-}XT1 z-LPGaYtYgA?t;VV-h9VPB?XLsWXC^1a3DDFY78HE^+){FujAzOnxjLF@arD{+tF9K zeZJHpzw`4#?2P+#_Q%y=M;p*5;@E>5!g7iwzync%c zoMS70(svF#mpUX@Is!-wE+FSmn#fXCyBASmC5N+)^ycK|yDqXt_~zuh{sG?qkzX6! z>svc*XEtwtY{5O)c8ajvN%*sR@W+|t@v&TLkRRGPeQ~(w*KX0CP0Hi9zil3KdL3M^ zTtB$BCdISI+SMPig|;E$n8@&2;M&mG>e)it`yCW3aZ38E)!%JOEbvvOKk?U}mOo>J z!zEAu;Gd@oy;k;t9B%$gzjK|=TE#mSI9)$H+!>cg6J(rsIFJJmDf4lJ?fYSFLV6I){hvmcx zUz0y}HSkEJ?ys+!NXpPi-?Als@2a=qAHZ$JMTKQ=zu0udGW;JP&222Z-C~%SDj>)-FxrWb_>5j!S<8oRh_ou z>`OoIi}j1Q*E$?$e?1nC%`ca@kK>!Jl8CbH+U@(tx4D-Z&wvVZhTl#^F5Q0BIJ@CH z=Fjf0Nz8FipSNcFWy)LRdR&>y`Zs$V4V|*QSHql-WE+*u*6EPl^S za+^C3ToYOCaJewZwYkuZ{hiad%VLG_ZyUH?`5~9teb5?T*;QWoWB&!w5%aW!fm8SJ zY<_)yUct**d*QhGthHroZD2Og$yaRQ+J859`2T5be$CfdWIosN^l1OXpPsW;tA?wV zkGZj~P{MqCY8GU=CLN|XB|qAsncmd#-0^g`-SJ>|eRb#5W;rEk{Jd~IQ2pAyaR2)6 zU;o``S!eHK-PZ@QCMMsl-tArbR$f2UxlcGRTshZ0bhbJ@Uiwq<4`3L8`kj7NOYslT zkRxHWu3LY(!_(;Bke0UKhs8^j-UwUS_kIvJRxqz>RsIi9>bBJPYj!g5d*(@dCh_*K zrH-qX)4qQIjQr$<@5qVshl`H*%$_~jj@x|=68;@?g7$r*Cs6UG)=a+MLWy6vQc?^1 z>@wGIWl3aczW%Mp#!CBG_eGy&&cm~nHa9Qd0IS*K%D{QfZqC6)kv-1E>#i4|w@jd5^XGdTsn^AmBFN$Ha<;m9>@nd4qw?DZPnve=ixkzV$!%SuwTl zCYlD*$}Q1AqgA7#L~o#=Q9eS{4me>3)_#l;=mx3c%eU=HQi?slX2b%GD`>(=qzc_U zdV%QzV$Wv?sh7{Mj7jVS7q#25zn>K1k-!*^M`mj4Z8z6G4wz4ZYU>#xZW}&!R84m5 z!dI}CNqEn{o>Ff2?~>X(Qr*TG!lQ90qvmjwa#AE&Pp68z1prSs^)4^&znMsqg{94h z+sMrjGr*6pT!-KNex6X!Wy&I9uE|eKQKr?GQ(QC3`2vDM?iwUc8QkSVBNIzsNpK)- zs7f3HmI{HW6*I)w138y5zhI%rIrDM%?)P$#ph-h1{(Fuq%0@SAznBn}xa)+lB%hHG zu0j)-X_m!plQlDi`Az9uzEk%0rdtS2Qr0G=b0bjxYc@hac01JVUW@uy^hX9{8FABY z;#1gF2t!8LjYwXpPkJ!Sizpvz%Rs(?UwbczBcs3YCc7h-g{yM2KfK%eQtDU2-XvQs zoJ$|Z7{?1}YpVifq_XY=8=wqCeT~(Eq-4v;t_-Ns%acI)-f{s(W|hJW9xugLR{Ban%|6TV)2 zp98FZI1LWq2UFhE=T!M!>vB3RI<-}@WuEmp<>)l6EVf^bP5%QV1sooCwE5*W$i^do zt^cYdoha*kMG{-1XDSxe8cugUB~E|$)xLivMvpV#`}nO*41aw5BgJ1Ub z9bV*E5CfgXmZ4eRS3YUw+!a0;*tkO}xB!XmFSh&A~KAjt7vsYQ^AKFc5WZ0#LRHu9W&I&EGu zrY$+Sc773yOP&`IOMxGJ`xYN=i42?s@}&*7@j`*b!}o-p`s8Ti2~ORJz8v}VS-H4} zI{yF)jz5k&bWbb)ApZe4{SSys@6XI7_uJZ2J7RaQ=?$C*{>o;Me&Lg22G(<>HYyM! z8smLwwz~Jn%DHmsw{!REwftGf^l@9@yMF+#Qw4y}LbvxgX7n~Z%cG8^n&z;4eOOkSr z(`EeCs0}SPi?OOFc zJi7ECwof=a9Pe83&7ECE%%4_X9R9Kt+jm@ZJ(Imm#hpo=%5#j@ z`?=Fd%c;h(M7!V8!^7e950}IX%YT3-`HgF)i=}TDZvCWfU1V3}#@KPZ-Eqg;{SU1Q z&VQvo2n9Ot?R-N`UgkJHnR2^hv|?mas;i()6suT2UR>C{@cKC$aQ$%qaxp#Yt#7-? zw}voMc`}K;>hQWKb(gCpTFxb(_vLtW=Q zF%WSvHvjPU9OuBp=jj0o_I@3wB7VmW-vUK?e{D37o_KY611~W0t*u30W@g&4JEHE? z_d|;Zv8`Fh-_2j)%xhw~tg($I5oJTn}F85=qlOQZPAlj;UOfZ`ps(av_(k&OkF$P^OS_Fd0A>@F%hkC#>|o8>3gf2}p7{RyzD^OhF@3F>|?mg~4$ z+7)cDvt9Z#`;Ko0zH@N0HSgEv>suT6;?Gov`QGu4oR@;}umNsEZRwXkr%l|xuVLT1 zHSC#)L9O}b?+x9T%s3>Q5O!mM-XSwIJQiqfy%tmtMki9Xut=A>Abts`Ubxh zIjP=VX(~bp=kNh!U125{ClTA26$HDFt3nn!DNKqxB-7oU(MRQ3AdIIUe+vRv*it5) zl0n&D^Y`CFk%8-q*$bK*_Ep>srke1j`dJPF+JyG=1p-#e8p_w%zl_cXd}lGF%N7<9_m1@EW?mt<#lxQ z_ENNk^e^63f9W13Em@uWt_O{nN#Bf}2uDBXri--CyXI4YrLh4SLbppR&HLmkABgAQ zUw(X)+aFvK)APK5H4bBVD^g!4hT%N5hHfIzvdGSk1-Lz+2C^NXnx78SGbk@FC3_Bs z4U6FnvR~1h&JB*`QDYvpCV+m})bJxK#8O#9l3?nOipPbw(0WY8@VF&_9E&4}=Z)k_ zt;cBS!|0)c!>8d%G2zzWxgLDbKurtTFfev_81`37f%O1{w6N zFC(%pF$^D+@?h*IBv$+*8I-4P;LXE@b4H`;n|oxl=7?!}pjTiS@ckV2aV*Nz!0rx8 zHRY}Z8LYzYnml$|PAeb80U+kdiEoWlrYTct0O}hPn6Z-pv{X*93Lcs)aqzgx+-t>q zoB$(e7fpuqJAXR4lftV5awwm#JS&S%fnd`wV&@PHTjGV>?;XyE}C&(UluPQdSG+n+}h%vs4) z-iM4NTnBHTbyb>5amDBVK=!ut{qQ((0h78z)90qj&B+#5(`-SF-cGb+KIiPV_O*$h zCzWZpheBX;WBuWYE+3^QBo_i+M#w!lrs>Ye^Ij@3ar%h*=>*)^_p1=O9d_W>h%rcB zt67JkR<4E?ysw5n&mG_uO0v2B%!*-icD`|F3)pzMNDDT)c7a>lvu~=VSRJo+I`S6Z zDlbNr8BW-W0o@%!x+j_R2cD=y^b&iOnuKGzpH@fGIaJ1h`n4bvc=kHv1(2 zjC%ucw4?TR*Bp;Tzb-@D1EggY?-M!_R1e!9F?~5AVHOPD+_)9#0o!Ja#uCVZ#+pdI zNtg>2ltRV)+?|`&NishLGkK@HBGlFZl@Bk5-kz;yB4@4beYF-jB!$p(BZ^8Qm(E|GNnvh4Vu)Yxrb0#V;d zv~|1YQ@Im`#tU%*P)wQ{SyaMGhZab560P?&o>bvc7N0r`W+#J{iIw7&tT}4OY3m>4 zF;}`hH8!f_rrpsKa;&4DRy(}K;YywUW%GvgVPGUAR?*JjW(9#7hL3ujZM}m5bI3{1 z98O|vV;XP)$^D}{6B=*d7~tM>@zig3>fF!Pr$?B0-|G7BOEJ96|C?&2mtujwfZHjc zz9J+VQ({uSkB7WZlAbK4&nq=9xV58^+$%Z?G_%8DG*?xO7K0E*HRq!CbKgi4wQBGT zJ}ZC=%Si%P31}FipPSC4V2Gtkt`SrQ(A?lJ;DSWzw0?S+(KdCJ-Mx42WbbE;L^r37 zw_id@qdB(mGM7k9(wC5YiEJ8h5epZ)e#z?;2F&YDWL4fx%NGO9S(QZe*NoDdrpurf znFOOMD%^AHLZe>i5P~lztrPDs{jB?oMK!;(&MOf(kIz~BVxANdp&J|Cg6Xm|u`Och{YGru-{qCZjYruY(mN=q!c;ohdi}Kt zs{a6ed3Ma(l+8$);3t@c{+=7gK}LgHT<+_>siK%WBxXYyT8FDV6^j&O`g!uuiSu^Y z*@H&t2O!0*k)6p4e_1LcOWv)3_e=vK%zVVo;{1E z84=Z>m;_hsbaPz%aIoTosRSXnGWOC~nqh+i@fG#g%GofYqK9MA+h-4Uq^%R6rb86) zHfSwbcnT)Fj2fF8Y43hqQlreLJs_V)oslw5hbiz$p=+WecAQY_L_sX`e6W=#qC-gW z>8J5(4+&cz*}LI03AwJWGVit>9MHzohGa4>6^PO$HL9*yl5s{osnYto;HHK$sLYrlggfp zVX#&Kp2@R2rc)F3jQJ;LiJ{ohuDdf^_1_krPs;G*IlUp2Uj5a{5HU3Jj$3 zeUo1XE?EKJqzc2hsDNNAQsBD__IYRwu z0>bk6f0NIV<7_DD23U-8UkL$`?f!$Gm{M?+EJGK$M8 zs#+_+FlE*%t#@vzDm=;*lPK0aiSxLm79AVfKlPKp@8?8^O=im_P^RAwdQFv8)uXskP}F;n(S^OZd4CxtY_Tg+IJ7h~^MZ;GzvGCS_; z7mvC|S+b6;!G+wVA!O$wZQd^F>9J znI_hB@a>m4OV_uLx=DTqT3s6?=#osI|NS%&D!~Nq>N&iX%=43S%^I+oIZkiA54)$V zZ093>oLtNyg9M@?mVQyE=vL9;HNM`_L_%O112A;a-YugkXiuAOVmP*dOH&c3N3V|# zdmLLJMy*FMFd0yRRIpHM9upgr5j_Rp*`Mo8Jxv*m^*E)18eQC*tG=5{um|q|@yr2N@!9;Rpir8Fp`K0bLv)J3aI2Tx&~$s~#`Qp=y=o|PGzc3)~$dA!eKe==mve5p~4 zL`{n-G$78kp%&>5z+wT@ute^uJ|;>Vv%O;ZkebC5?e_L?)#x&T3aKFj`&8s_6^w`8 zw^wt+#U%N%y*6|pV<`L4u6Pl;JO~TrMcxb@5r9`(2Jy`5rc<|mu+A2ol8KHfln;HE zVpm21pB_<-juPNPgA$@=Tv!q<+F#N_b^E!Mu_Ot#zX}ZdivRshE^rA2RKo`JsxW!s zGac`ES3|KO+~eb|WZ{1RfPuDJo&Xip)L=T;vrmzC04NdYT!rSK$-+Ukn*wFyprssd zJ=ljqmTP4mkViX#8p zC6zi;z;E*+6>q-$!bSpRDPb8>RnexeGFMcH)o@|QNwxHMH*T_ z_f6j$BW$%N$S4{owkKIJ)_;2yUDw;@tD#T*V6Yy`s7A7tD#2g|bN=*oqk}_=kF`6> zKsQL8>oQ|A#ZJ@Gu#j?ha6MCY<~s@mCa!nd4EEYx-<>8gW2|3P7$ZJSQN7)HK$@i9 z2MEIlztRw{4M)5^Q)tVa;SPB7Z5c~-_HM3V~|2y{p&QnKzzg--n!A? zH1I|h6QNCCuW^fw8eiZ~lW}NxMAto`0!N1GHlRMc7MyGeNZgT&YH8FTrJ;DQQ8vq$HE9q7|!U}|*2dapY& zNh5$)31?_(LD#L)XEJ5T0yU5RuC$eplrr!Tf?z(MYY7SALUM_vm`e(Vt1=fs4@si8 zDq1I6eMq~hmyIzW;Avg!pvN$)WuWXerP=lsCu(S)``= zx(abPkXlCk+KitU+-Ip=*~PV51AjBsH>ZrC?3?WK*ekRR#!kd;$d&`a(xB_0LS$KL z9tm4I09UPoy<8Fb%YVl!EDt*Mizz$xxTukrprD>7k!z@;x-&)g`G;~YA&>RU(ku4Y zdwC~cq6UIcvwl0_M8wN-dGwF33Jb=tM!tNDg!);zx@K?8VjrG%-B@-ucb8!G`Ec1T z7p1{1+>k~}1|J!m!EtdD`2kSx+)U+VV~!yX!L&?`ZS~KAOUA66f&$n3wdb#2j*Vcq z{&MoKZP-Zg4Q7d444MhZ(r-sy|B0{VnHUo)fWl!(;dBE z(JA2;@@$Xed3F!Ad0(i0_rVOFRGxuJBJ7v}B@Hr3v`G*<6d_(GHYkWuF$VWt4oc0K z+>U+qQ5uCTE{WQ-OIgJRlvJ_rP1hCE*3!8bq}#oUiWm>M%wsSezX5NYdi)9B9`r78 zVs#K`Fbp_80&~D5`suJ-;>|^nQE`iy3hFT?)@7@wxb8QfOSdtf?nQG=Fr&R0LnmRd* z=Wx~zZD%=O58P+cuMjIvg|eDMn)WPZaIZwH~M_j8r^);WZE*X@aO#g7CwD) zvr&AEBL&@?n`ZkH-Y=5(2R9Ynv-v7}IxI^2)oJK#ZM=Yj z(o@eOT|@4nvEGyhAQSd%ji zDO>D!G)YmAuLan;O-6^?rGUc^XfG+%XIitO0t&d1-j*s4M)R|M(CZeGbJL&Gu%AXv zGSU~zj!8ofPYq=;G4mCVq29yl$Gs^v^&#BKLFfQQl(x8-3CT~O1Tk0o8m0+jcOa;N zNtl>=%~%g$#+o_{wz{X5N*bCMVU!sfl6_k8V3WCIu3R0cG%g5NQxYrY2xJt}qXWIZ z31xka_^Zg1_L>9c6HeNoW*;Gxe%G+!z=hNj#V(u2qQBkFM0j)%1R(BqrN4$w}fN=0VW@RNWulTi&z_3SR4riQRCo&fi zUsc@F=iOnx0xSCH~|`wpD&8jS-Q#(c3Q zz;}Yc)6`{y5q-vuNEFoaN<9{w`xDq^81`SBHiC}lHq`USOE!mO1UiR0YQFd*6HYb` zev})<%k6X48igY$pQ$bcc-^-$*ctzPe`;{K-7uIM-{zRnL}L2dnJP0Uhfk4T&wo+m z>wB6?4#jy&{wFb54lI4(L0zXe+ZjbZJz&hi%z{=Ey#ohLe5N(#5>IxZg8rt?cmhbV z*Gr!47a;Ii?Xr?oL=v>yZpaivCni&&#+*FYil@|dX+e@u{U=@bw8@zvdh9%L4j#Qh zMul8F#X;5M6m>WZ{CU|uWI6~4y~6}G!4ME4`lg?t^OUqOmtKae=Aj7mhkGb1=E77P zPG+=P9z7q4;g7^2^+mo}YQt2KRYn~TpS<&VQM*m9A=y<9djr@od5d9&XrV#EO2X4r zI79L>2v?nzi4f;T|6tOVFMDdeI32xs&13!ZI&ovrOwYu~P^hxeYVd3tGQ^1+zV86j z2mKYh^SMqdzz%b_8_AVWFvDqOs9|cBn1xs*!te(3!agbc?ZjQrgC+&1xEH8m-%H)X zN|TM2$}x`~b~VQ>G7BGVS4zz-@#uDdTVz1Sd5j>2P(5A@=gEkr+o-f+dA_Or%6*f$ zHR}>(!iIYaMg4-8?XaV{wthQWzq1$?l`$H+B%kcI=;lx6Nw^E@yvyS7Msx?t6I7L? zVI4eJP4a?PA5jZnN<}m_nda}ACzNd;QMr}ZgqaJ`WK_Ng`eY%Q7mI2CT#{{L_@oZ5 zsDwfA{r6~APH_^$s*QlRc+hzCsy|DhuDHE_?M7!zinXtGe0%fA#qyyETPbVJ8Uu9Pr^=QF(&gW+i0i|Okc*D%)4df4$o z^+TzA5Er=Or-VjNQVLYNc~!4|Xpn_-J~CEy2U^kv984!~CIm}1Hp&_Q&>cCE>Wom*ZNYcca4zWx2FUqkCf z=|xLB!-MxEc;jiC=~4yv0r0K){jwJG%rd}J@pv}Oc^Z2cXs}ZwdvZTFLVT93AU`C;#{dJ%e38LKUgR| zr|T%n3z=`IxPu-n+rr)yo2vJ>1mHTsGhD$czQ8a@r7B}RVKt@@`-L3b5p>Vqk8Cv6 zF_;#zLb{#_xZsH&rs7<&tjPy4^%CzR=b)rGqh?Qy(Dq z+$Cki;%iglRw|I`6xqnU+$;COs@IrOxgb3VhvA!YkS_Z9^q~0n(;!T~ zH6Xc*0?LRP?lD)5?8m21m;C^-vq}K1UKyc)Na-(108A}U)1IvRNwsxi)N8s=A zse;fqBdWFI4Q%DauSjj|>7B3<_?+P`EUsyjF*OfdzW}H|e~eAB8NXQWYyjVI zW9i}7=RDVm<7TlC?&Qf=PuVO0&!nG9*N5IQbTRS_60hVdPmigqeEh+7=7YnIcEx;w z#39XDhtG+O_nlv-yD!qV8{8^MTF520Jqzx&NXZda?Nmv<8LmlVrLk4Wux0vJ{dqYT z2p{o^cbB5NR4$DE)vRT>3iONJT4FgLsF2XRgY2!bH#IZB^=#gn%}k3Bx+cSPA5Zta znJFXA{hUO+(^2C6K5-|-9TcqpxGg{_?!Uqr4a%4&OuFVuOd*hps=q-kch1-dY8JIp z;-kfe+M3g1?DhGe175M4PHR_PH^UCAgx{LnLyptlRzC~1sHG{XTfwT2*34n5MU_Du z3XBp3S+na*I0NrZRUISVmjx=SQ6Aj%jZ;phY9%ovb~ph+YE?|aa`gI4E7I&wKG-R7 zMgLX<-Jf|2s&C*K=_GejF9(rR^s4fK?4Z@`ub0Ii<}b;mFCFd3poW3}G0aONsc<&y z6bRX1aKYp!wUVsXWVaV$Y>rmEJ4XUMq(gzZr~W%;`m)pC$x`n?4j2`ZL@4r>@J!X= zE`+)GEfp;&nI99b^qnmh;Gyx|Ck#PG3$4*3hzADc3rm>*1;8(pK`LA*b59cjYe?B9 zl3wsmPB>$VBC?V+ANE%^gjgTn5AM<$V)+@{Ovl^*5@g)%yPN|4O)Pby2HIZqJl{^^WifI`MDN&*F5Dz3V??^s}% zsthLd0uYi^b3qycq2$s30R6WQyog8g=f||6Di0j?9jWJr0P0^wvpR+VnlHv@Uf^axqv+E`;?Z zCB+dMN?%XO#Wql5gbY-u(2A}VC9mV~oBh&vB-E5dg^Vpru+lo&!{JG@N=`TFz6Sff zFLC8xO9gWvSH@w6?>d4WOobXvg{rt=vgo9&6Jx>ivj$Ri8i+gwbYQ**`};wY@&50q zpjfD(>9#VshxkQMdcyF|e=&6{S!7!UzwOcr<6F9Daa&N@_H~KW!RD`QP-8vjvfIcH z6gptE?-y-8qeI#-D0>y6`FX6?{%dfzD*`$z+S$SiF8>8+G3XS8Tz|RMjd3I!;UO=q zF*K%k&?c=GSv<-uSzXTD(&JrXTY$r7lF!*vSdI4j?PH11ni^%Jn$D^VGJ`N0dO`Ez z|C%L?e72Rck%`k?%w_>8pUE|8MYo?Y@<(c}Q_Wp4#|oO0VJh=OK}=|f#*5w}S^+Ys z#~U;r?929s|mDRP6rd^ap!!m6&RDi*XM@ zr6$sjjs^%*+zdS6C;2w&m-0{4s_3iJ8C?&jn)2SAkg;psTJRWfxxti1BCsQagmkp_ zr3Q!Zie6gzoP^!|d#T3y=|`Zlb0y5n>eDwrW&5V7_haujSK8ADvU_c83Dr`faR?kE zxNg2HNZ)8QKoM3b7lh{Te=AIgm@T_|=xCGgrs`C4D2}4NIS`)Xu#&lkZjDuIX5eB~sOI49k(1}g{4a;FY4$0E#!4!u)Uebjhj|{kJ(Cm)q zcA+MYWP{boQRN5$9SI($_jBen$poLz$wnJK!y;U#UH#muTZ%IuMQ5=A2@ZVqZUe zkC%FifLAD4cM~XinuAiGlH=SG9)5S3;Ge`93s##(A?NdO#^Cz8@h^sRvz_H}!z+9A z_pu9XaKflj9sxy<$g>-Pd?6=BY?G6=Ns9bpcEEJc=36lwVr-yySxPzLw$;6i0^tH* z)7i3m!;-KBVD(616U9yQnps{%^eQ^GM76j1A) zZKwpS`Ns2r#qBjex*u?Dm;Q{oqF0z+a>KbgT1dv$!A&y|FZtn1ARn2rlRVcw)i&*! zU9k@4)fwC3Hw4Uao6JY{sqJnsLSFj33P1m_j9@fxt#+0_e`B-lLklD#kLkr$kW?c; z%Yn>wN07^QAs{Ia;$o}W)n`z18UNuV{=dS#*1)TI5zLQ!`R#3YJPxqiu1DLW6Cs$n zwF2I{qTb!w5GUUH;vCrh&0#08O6@1P+b(vI6>WcCPE4d=;!xuZ5oO@xZ8m8M+dayA z#|I@4`mOAnA>c_iZyq}o2GI+DPBeb*H~>zBs1HMp^Io2jv405LBXf)e zH2tQW&7-R>d^vphl^P$x5glf#!%P9$rat;&a;sj$L%knkF#e1k`kEVA$~;XubLsSh z=}WxYebh6`+2;k-4mF~Zm=w9l0iJ6`c-a(}QDKQvZ%WMTM?{}50+gP8qKMog{H}FO^qUQU2tON~npVVRgEKq({1OM`2V`wI` zOkl2u_8m&a>9=@9!&0!`n=t4sDw1nL|4AsC1hCgNe1@42=wS*^AlFc&CFo8n;aq<` zRa}1Tn&Md!tsgPZ(XGkAQ>Ony`zPIY{s5)M>=WSzthUXg@T3WWU5X;m_T9U0w0dN5 zG^Kh)c+v%40Wq{Stket0B`x+5r`F@bl@Eiv4mj}C8Su;GGfHH$Sf24&I7q^>bi1#T z{&R&ow@Z}?!*vMx;{7)iEsRKpBkBQ_;j>&tY!8pn?FbWGJ0GK!|EIe4jl z1~scEgCZ}Q%E=BglnA0v8gJyCUP3#p8Hk7nWm${8K7^ul4P(e+tehS0iJE?9~V zv$E=8;ZC9$+)@8=4MHNE31^fyq$56wXdMmmIXy@#HI!aI+QSUv!`x!*@7Q{9SYtFJrdDCP3}NcmFHLaN3F1%Tr>*YmoPU~30kT=gBFTFvm=thQ`fZ(8cn$1#&-iNSg{_h?v(25>FhbGT#ouR~QP%B2Yrl zwqtglZT;MD0w>mMG|FWKsB!F-+;Vc5!%0Ydc>BtznjeA|ZK{jvjai@1FM`=XH0#_Q z*gYZNl{>edp-m8YGk*Txn}XVc6}KLhSv_SRNmP7pJU%3>L7)e?m?Xl5m}Xg2;VMqUW%y++>rhtPbi{D&P2pq(>K}1IyKw=hI&r9#1*S zrp7pToi1)~O;35FLd1lD|-SSA*K=s{^Mpz~x4aS|* zq*qrx9a`r!vEYph)&*^8(;kgfuZPiYPNJXdF_zgh1LY#YD$&7`>psDrB{w9NR+%L0 zyIO35K4mGYPWzLirr?9x)NK3uP3k106cXfse3d8bE)l9)Mk)(*qmK zu9JIYKUJ=P+{>G}=~T{Ow8O~_5>F1-*dd+f7utM-B;f{~5WW5^(#@0O7Zpi|H#>cOL?L>d9dkOd8oI24LiOB0CL8K>>F*-NVX-NK1pEBhm(WoPZKxyLO97~m9(?i>uPI-N z#>WD2ehnERR}vVZbG0%L2TDl|a`jYn_W^9@9MVCm&tHKoXXs(mB+4EtpC-&c~#FBT%Y!S%f`GCn*v3~k)7W^X}s}3Zi6Zh=r(&hj@Vq0c_ z0`Egwwpc_z5n&tYG<6jjEa#g__Kwo~a!KaX*X66B4)k^O$!VIHdu8gr_nBAt#l7+Nl&USX_vF=7BV-5aHJ~y#nFut<0@A)`4k5U2QW`<*K@4~uR*9`&CgC4b z>pTuAMn=Aowa(@&h+r!sxPnPB_74I%m z^Cn3(uDU|2CLsuqNnlZjtY^BgeMEk@X8Hh1$v0KaCnHcmivK>w zC>>Sgv>su)e#};zf|_|Ro!>{EoflbT zsPj59Ovy$busD*u*goiqDm+&a$gCArT8p9Ee$q)N69ABxpf4z?i^dBY@*7p~iW*6f zv($?xSF;tvGDIuyESiF%jb92 zS9_j7k8DJ%t%TOk{MwzxR#*Q4mMzk3Hiu(&TenBpNz_xLqel<$3CtR3u7seCATY|g zj23RHU*KY|m*mhtlU4&CzVkk|uQVbJ`>gRZu^8(i&?e(%Stw~ZF$04`fahFcXQ%~H^$k<45t_*~(G_;?Sw`xr zdl{HC%Yq@Pl!}U}8B+*~OCM9}18*_~(WqdK3QIr~R$_1m_^IDR&^@!AwxYn7CZCxG z)aPArBRh@1+;Q>oTb9l$mRm6sUpMX^;mPK6Z-4u16i>1Ab?V~tt0q!95lWjuT`)mb zutCz;7A63y8-O`slr1uX9d2eLRO2Q_m3B%{iMaJ~b2g#sV{$p`+sA20=7$V2x$TfE zmZd09pciLHsAi($tHXg>x{9#!Xw&0LW^fqSs;W$~cH@Pgm`d~WaZ1AYqPLp!TC1+1 z(*hc1>pKP3ek6@0t0Wx}5g0W`XBb&BEIE#$n69g!MM*5PRWy}jQ!$rpjTju))r|m4 zw{XOCTSbtGn2;(^MJH79RC1zg*SQrmc>_u=utr-XrXV9)(X66WH7&v|O4h5R)XOca zTBRt6dsE1)ohz&j(XvTsN|m<~tBjGCuZ`E_Mm6Z;YrYJ`Z(hVhOQ;GM2`S1Vs$I&5 zwY;JgYgbnA8P%nk^XseSfl2fYu3Le)!pjAwz7y+uw(1BGofH_gLZG&8L=khafa!o%$aA;^% zoU;%-B?dx{z&)}BRZj#PaPo5TwHA_Y4__acpX*wj_ZfOCWpC2tz^OFkHCxpu^)94j zoj>FSAGC0=i1b zS0(=dP&BSSMbtFg*Fq^Qu!Rw*MRitQtTeEgM=b)ZxdZ%2xf5xodMCAWd%h;HUC?AN z-K`euI7?Ph_+I1g*YkNlYmLVh9wV=**E&XZl`gEJ&jVcAW~w`p4Kzehh_dog6v$HR zD3DFsdI&3hK)$3F8d6j`lSAJbd4fT$ZHOdBlu)G^^=3U>T#gd_88@pBcOC0wa${O_ zm<3v`&-wzawBxWNr!qxLHE4ra#c4{Uh@0wsYwGTbn)M|sBy$VWWvxS5uOBZO%wtlw zn#K`TETdCRS43-*ERNR_8?KM~fgf}VwaN_esb)eNn;NXcgk=&R<)9T+w%=}{H6}i0 zqbBP(GKsNt0V?M@fz?VfL|3&UL`YL0X;hYa0lyna!sUR&@hM z^)FBgSzVY3B(&F~0`0%%60KG{16^9A<_4og_f`Q5ZCYK>Lah|w3o+1w?VSM9nSW3V z=}!fPFQx0Kg;eUKLb)k!rkFjhbvX+qnmQMApwTXeAz=Xc)PU7vph~K_#tiDyh-QPu zlampWrSHb(jt1cMad~OQc^0~u`E+|Y`6}^OgAi<*c!CP5lln*0uO`W5FNkIMe(Uc`$h+}4Tdf!Bvi|@l*z4CYc(}Q1Fr1xP z*QT72rdMM-jJ+Ius?RwyxJRa~H7L%oNw`Qd=ZAnJlmshFER{XF z)qPRefvHL!K-P^sBM}<$+1A@+F}U?{@>x7}F}+!P__<~yPRAxU8d5q2VfFX~7P_F_ zU9I&DEo-)1$O?~dtd%wD;^bDGXht=ql=LPgc|49N!u$<4SZzs$g{5NRjiO`o35mBd z72RM7w*`ZhX1hoduAwTWw^bmfzMVrQ75@O39I^8PswmDw1-4YI1V>iDko15RVkLxj z#Q)R)XOPR)M$9tTj$SS?ESfYYo-eiAoBTsbBh$mbIcvSsBu;Cqk_y z$CWw~70-_$DXL%&N_rKVO-e|ZqqGZJIr#MrR*I10sAW>d07+O0ZYK173LK~fEw0S9 zn5`u-swxyO#12X&bpfS1Gn~;GU#&n@Fg&vQ9`Ev(N`ybnXLFGKm@7dN}zycQLFz6uqNdncT#CI5}HsGoIr*^;XKn zb6homIp5H*U9y=o4A)gPrb0I2*BA`;^mel4sh^tlkg*w--;6Zlaly=&RFQFj2ScO>Y z84xPRL7_D-3J5p~mgOk{(Jg^e%3v1lcpJn#^c$=F>v}a4BXO48e6G1hHwUkS$!W!mZZWv^*2>Fr z)3KHlVWN^wAc*CS0yN{le0qf3dbnD;bB0Z0O4Ugz30`h)CHkwVbj^94S*GenV9f>9 z*Cv%zH!tu(nB`cuP+GfGXhd;Q(VtK*hz%+P>ktB!nG8Cr5Jr_rtO3!i0W%>TKT`oD z^#Sgy#1R@LwXae$xO9bRVVSLKjYUSa)p{66)hSQZBTCg)6o)pD?rZB|lk9fb4H3oYq@6QvKGU#Gt0RYZLhZm9g})hPN#O zG+7Ly)FQ+( zQb64#^fKmk_0%g`!5D0zC=5olX}AfkDOECOQ(7fBL`Jm21A09PxQ|sTNR4QdOVo@# z6-)96OD-UVTCGB~u3(I;xrB;_(yNO8Bo$V2z^Q#OW+_&)uTw~_t`h6iQOd2#U|oP( z)%9R#mw%8GYBLqhBUKK_4ytf!vkI;>Dm!eDUAjR+jK~#LB>-u+zf+P@ty5u7YJe3M zNSe_q#sosDB^>^uV&cXaMOaZ9fYmXK0nI2&P$KAn=B+S-w&IGomgiGDh}~BS5Gtrk zABi^yql?JBAJvpi!R)6cITkg815LT~306>uRccUyv|({Jtt8sIsjW=GUv_9%PcBRb zs+O5HIV@@iCDa7-lR9IPZ9))psRvcYrGrYe@&&|@f6ZSf$iJ1!`MDgoqU?`fnI7Ge zvYeDlD$D?9*Fuh+B!f!YegGwB1l2m(tf%rI+O}H$MAlk3fYhU&sYnl+YUS z+0So4n~m#fYBVF1X*G@&rj;M}nj)g~PAlGtD zeqqh&;^c&vQX$z%2cMd)uj(<=HRo{j4LdIdM23_}MB1WfP&f*lNF1=_fh4B|9IH8y znpLi1bPU3E%!G4MkU3}+l2H;7eJzkXP={K%2}vmG5n8|+(W4`3H!L~nsg$2XBSn-( zTUI+j8f}&w-ilWqq}EL-Mn;uT2HZbjZHuBd@Z0oKm1a@3oH)y3sG+kB`qxXWs#ce!MND!CMEGhe4t4va`?69T0= zfY#VZMpZS~uvKCyq_gS}QfplTs8vbZ09~OeB+{SA&Z>}q%;#yG{Lfto9ITMxa6I<9kwHiI!T^qiTH$!_!?9qcIy+9%Le=sRp#G zb$^i)S}k+{aMg4t!hMTT~U#}XAn(g>7>Fr>l*Y| zbSWbn4-mp@TI=ckkZ++xS`;eG;DKZOiVb>& z)d*lZhILli{(+Umfq%x`faM!hfiVFWJv25nr~OQ5VU^E7Hmq&+4EFVH$DtW$wIFoS z&&V^USn1ruo72Oq-J}goYP5ZV7t#ibG7-NY`1UZ5PaNh+tm|$$hE&(1k3%}kN2vy! zf25i?h|`axcPeQudKzTDCL2md?3!TS!#Wa-2FY~-SJOjmCtLvQ`j=oT)qv^wnKZG~ zz~vndqgqcxifLnGlB<^3=s9GuwGkGYe^Rzxf8)6rKsBJ%D@^1glt3CSu%l2Vqi#Tt zU>vr<8dhTlRUcmC2QSi%BdZ2=No#?D@kD{5nPuQQex=$B=u6NGU(|{oakRkpc)z=~ y&*?L%uTEnGL<4}e&<9Ww0@wZ|2laK($m+y;ja9a)10!v4R@%KiOzL74U;o)0W0G6| literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/lightbox-thumbnail.jpg b/src/wp-content/themes/Broadside/images/portfolio/lightbox-thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..884e30b648ebf2ac6c6db63b497b9f0b9c6a12ac GIT binary patch literal 2794 zcmZ8h3pmsJ8~@F0xrH$kCuhe!X1TOe$+XH+LpWALqb|e zik8dCC~T-GMTp4=i!9oI`k#OQ=l}ma&-;Gf_x(KI@AJOz^L@VJSK={Xi$i$e9{@lg z7y~lEe<7X)VD{&Z2S)%PKw46E1_1FKplIWF>X<*^$Cgw;;@3bN0G8T-#DgJVFc<=n z27{#`P{;cgKWfZ{L#B2a21Dpps!5|nQ1p|R$AaOhJ7XW}k8~8Di6j&MrK%kpI|1SU_i6m)O z830L30n$(~0RHFDhTwLz$Q=%ancLW^LSifs+A2D*|J?B7ZV*gG3a$#4))o%~3Sf|= z3os180c%Y=kwrc^MSdpGYfXq-=wqJt$eZ^$jg}d7{lMeF|BDt5vQ*6Jh^WD8e=Bu z2O<0`pE8_oU#{y4C!qb=0u2KC9GhIqV3!U{b@&ynM4Vc3KwCqZaSV^XszuS4O6pWUHxvCw-Rg?kP4$WsuaVJMCe9yz@vduK%JvYn{9vwAV@^G~n zscvnuDwx%YkYpqCI#w$O6@nxcf?b(T=XE`mT`2|*&`A=0+V zI~&PLF^wqbS8mvnDgCTI$s2A=>?X&DuuHui;}vQe4F;9ZqG}*PCAo(Q^=`Dor%`*< zT^rSISdAW1>@fE|1WA`T#jeY>@#&DGS`w2tmTN_Xs>PZ7t_93i+~0@ra30l4SNVdm zaxrAIBnDs`%roFINQB*H%N?Bi>MMrhfv>(dHj(0|_#@gUg{nNn0>PW@z zU%W)}@Qyo$cWua09iZUpFc0tB@ySM?g;vHAhw!+u5xJmGsFn6^o2)M4t9B7k)M}lG z$gKx3X9a^>(Fv8lG=9~Y2IF>;i*9)N`TY&Zj0Txtu3zRLQOV)@;(?!2jPxt55$>FWc3gjfgW{FC7nT&brsTDII{4TJ zmY%tpE<|tNZCx)!qYQSkM!m3G(le#Fqlb6K1|){IzG^#v82UFf9pgHfAPl}VwDzh_ z_!H7%b>%PuU2XGecrh2>Y6xGaN4s-D~I}vY>{AV*v3~NrHTJ@DsDbrK6Qu$*@Hnj za)R1_PSN%(r25GXY*vVQzK`oyUi=Hyf9rg(Ls6Vc&wzWFnQiAwMJwW`4tw|Ip71>= z`ovWJ2)*^yDLlil;cjc^ou?9}cQwvGWrQ_O+L=nID(78onx2578F@Vd(TgUr(zNf= z4PX7%Qam(4ScXk_W3TT08=Hc+CEZQaE-8FCtJ^tV`b_!j!bGDWuQkFH&vX=AU%at0 zPI7OcO(d>g37qldVj1)I(sYNZ_apNnHYcOs1tQHFB6NJ}uc|I1dQFX|-k4*fr)leI zTd@%>{KtZ?8tZBa9m}%^)|1n?J6g*k^MdmKpo=W>k=uLtK^J;=a1|eIOM9r9zi?jL ztt;#6gGUp+LR-F_Rde2&W5KkC&Fnn%?1JH3rMcCU{IvI`_HutMZ=QOO42K)6#9oY! z(h=?}p^ONobo(lIh?bWU3;FL}-Y-a6m&VL3pG|y|)BL6?a{9vR+XgCyodN^g5q z+$5%1Qqac>%OVJdVY>=wQCR`lYjd-wa4^x)-9{rX^41(?VxPFqwNJe#iUAMf-K1S% zyV_RX<8QgObv_uOw&0fS#emazBGWW9{Nb{0-y;pBP@M~jNZ$U|h81r&T$BNQ-DGMh zD(dZIG){GLy=I#kLU+(zWs*G&(63=0D0^ILF2+|jkS7YoAXk*}ievG>ov zeHU`%Zh{#2O}LWz5xFblbt-4!TXxvm^Ak_~3Oq6toKJS1zqwn*JItB{RwgepsbC{;be7-&Qf%t8) zD(0oS-ufiP1>M03`RdrEQC;Iw^7*>EC3?Gr8Kv`$6Q40@JO`DJJ)95`fhT0qX2LZx zUK~do5V9Eea{Vn_oc<&nwLtPI3uF?~!a(o+!8Y6%v#fNA7{Db~lw=!C%loSiJn9O2 zF-&A)of?jL5$RZhAmym~fVu9z(26p;ikH#c9!r|N(79kVIQuu+#kW$=@miGZw literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/lightbox.jpg b/src/wp-content/themes/Broadside/images/portfolio/lightbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..55c95a80a0b4675c3c14f74ea674d10c50836aa9 GIT binary patch literal 32109 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 Q*G+R|u01iN?!Qm}7t?BlQ~&?~ literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/photo-left.jpg b/src/wp-content/themes/Broadside/images/portfolio/photo-left.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ea3f513a3a7d2e927396de9225a9a27fa3b7bd25 GIT binary patch literal 23794 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 RS=L33eV*Ho8XaUf|JkXWCQ$$Y literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/photo-right.jpg b/src/wp-content/themes/Broadside/images/portfolio/photo-right.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d9956bfabfa46730fa7894c68f53cb37e91923c GIT binary patch literal 29263 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/portfolio-item1-thumb.jpg b/src/wp-content/themes/Broadside/images/portfolio/portfolio-item1-thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..803afcc31cef5aaeafc3b58085623026a7ed62d1 GIT binary patch literal 1322 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/portfolio-item3-thumb.jpg b/src/wp-content/themes/Broadside/images/portfolio/portfolio-item3-thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f56d3daf26a607fdb2225e41fb3bc4d0a9a2e944 GIT binary patch literal 1673 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 KS9JUAO#T~)-P~;e literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/portfolio-item5-thumb.jpg b/src/wp-content/themes/Broadside/images/portfolio/portfolio-item5-thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06b45b39b3d88b9d605e4202b44265c74aeb5644 GIT binary patch literal 1428 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/portfolio-item8-thumb.jpg b/src/wp-content/themes/Broadside/images/portfolio/portfolio-item8-thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bfa7f7efc291579899aa23966deeebb863ed9aca GIT binary patch literal 1664 zcmY*XdsNbQ9R0$Nm&!b%;-gY2)3nrdCR>&n4l(hOAVJ_`laQvCZ?fe&+3OgH$I@6z zu1qFVFqwK>X=zg6!W2!(shL}rX)o%OZsi^fwocpbAK%aSd+)jT+|M~*)41tAaEaWX z!3Q8ZdM&_!e_?tCaAd)*tS44X3W?-hf;24157MM>62|*AN ziGUyk5{0w?g+ZasKw&Ue*4EZm80_D$wZQH@U=RX$rc0 z-MjJL^S_I!7vL~J07@Yk4#06R2nRE1Kn?)rN-)^J3qc4t5{AM6Gz^&e|0?DRaDYVH zSsVZYX4^X#1cT#NB7*FZX?dho4jjnM#1F+uIQj8N@Z_D71eM4=man7i;Nli8ZcuRRrWNlRiyk($g2OMw~GiIR9vveTfQ`8Cq-Y-9E64+827O&uXmOFoLz@;rd>yl*jB*W zNVjJK%d0z@(5x-wtSJ79PXn&n=VTUq<)%|1x)u@xJ^rG8B5C-F@8`t2 z`JK!rd4lxWTodQ4B)`BpdcSa8!l+Li(K(da?`7vAt7VHYc_3ijHHG_W~`#x|Nj2^a=3Ontw9wEXBF&*pr%-EEeLdA{c*p9p_vnnLCQ68~dU|WUn2&FZD$W;za@9zr`mp7J_y9)wjeFsYfRz zLl8Qyax5n)*wRR$hF4F2y5*>=z<-21vCoIFLu4arCBc8)=AXIMMb%rL$nzYHC0Axe zJ@Vc3t*h6aP)g_Y&?^6+PsRpyr*`!Gwo&t9SFT;z2ZLN;44z+=CeiUToLuDn?a}oI z=8JX;(hcM^b1Y4?VP+uuUaoV(m86r(Gbg;KD+YG#>sz&LQT8zF5ao?7On!50(?qA! zT6d)}KEGqkMl`K1Dg92zuBXqsHjGkRQ+=0};=O9Vq0NMN&iar2NL!v>EsI~PMQU44 zattLY5rWv06>&lK(cL}+34ge1qP?45g@iW_t=gNREV`7B_F2m5{1`)2=Ov93N?R{m zjXY@IDX+?JrWYP0zGREe-4K{S&3Sd~HDu_YPrW|B;)GkPJr;A1zc({tFjcs?eSm4H zdx^mhIi&oOT*b+XTM|!|6)=tbhlFqEdma)Zzqct%{b8e3YoitYMmkp-*B?w(x)<;F z(|SfJ!$%I$cdS)@{z`w}TePLOe`*YUXBH2( x6HuzVwKv&}@QoOIetcdrFTgh6j@s$!DzB;(OPHHy_j|@z@3w?)5gsy4`~`ggqM85z literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/sample_img_2.png b/src/wp-content/themes/Broadside/images/portfolio/sample_img_2.png new file mode 100644 index 0000000000000000000000000000000000000000..056dc8f6e5c4fe15a8990aa6f442c789804c9efd GIT binary patch literal 32563 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℞^_UGhHErz;&wY{0m+cVtslFYZv+-#Sow<-^(C8Z9MXHY$n)^6md#~AElTNN* z3>}P+erX}7ncR6MTOX~mq-^^oo$Xsjg>l*$cYkKjzRCHLJg*vxTjuzJq|ltmLE%o| z@j`I<{OWwnqDEr@r_-wUT8o%gO&@ww0c`FOs3zL!oyyAnQG=HCMOLCfg1!+{e}bc( zq9q-=GaJp$eUVv~<&F$F#&i3e^3*)}m3jNUoR|yYEtrB3H`QM(*;Gt1J6l6-A5=aa zZtEOm!p!U}*WnstD_T;3D9^FR1f9?sMV=Ge>BCIvsq?f=39WzWn!25|PRjMT7iFki zR<*v#yrOl-8uoZyzp9iRLmQJ_=l3Jud5kHEBhcI=Q!A&Q1yYqmtEn)|DZ(8fS zcu4#q__U4@lRb~>{+dZ%)8f5BVd>LkGn>3qx)xpMQ0;Iz+`+&e=6h*DnuGrLZknQB#a;ls78GG7`yXe9P7B#L?mL%gDuwZ}n$P;=MYae(ud?<3F z35n6y7Kn3Ss5AMa(_v@Ru8B(}wi2G}dq(!`!AB=2Y(mb^kf2{=V3g5TV*fa6N5 zO(!NQXBB-nnjeoXz-azc51LKBSR2-@Zw;I*7NFA=>XiOWH-xJn?aU}+1e{9ysZkh{-&n&S92+l6u0b7k`tUR7ba~Vk1Uo@`vezJdttQxSKL*Z>UoePof1QX~4$TpJvLyqlMs~Rw}0h z^g(jw&VO6jb$3v1dn2|)HmXu{p#DseIST{Rvg;BaTq<6BRerM~SVW+Ar!W;abSny% z$}TGKDDZK7NEK*ymbE$1Kq6}zv#QkVAF7AX@)+(RvVE5c_YMAiFng+5@J$N_-*%Ah zO;dWwP5YiV#5wJ8c792ip}}Rt-+X0gLp1h&hV2Td7s=8oenhT;24>D#46Yo*~qvC^7KYPSFDFXfY=$L8G`8#e67Y zu%F_$N^gtLUTX8OO2P5#*}K)G%#|v`E^p>>rEv=i%iD|xcwvffAg3%M<*n>6h9cil0PS8gO65q_1aqvrP9%`2PSE0fy25 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/sample_img_4.png b/src/wp-content/themes/Broadside/images/portfolio/sample_img_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8cabefb7b0008cf9c544496c684e5a022a0a5aba GIT binary patch literal 4829 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℞^_UGhHErz;&wY{0m+cVtslFYZv+-#Sow<-^(C8Z9MXHY$n)^6md#~AElTNN* z3>}P+erX}7ncR6MTOX~mq-^^oo$Xsjg>l*$cYkKjzRCHLJg*vxTjuzJq|ltmLE%o| z@j`I<{OWwnqDEr@r_-wUT8o%gO&@ww0c`FOs3zL!oyyAnQG=HCMOLCfg1!+{e}bc( zq9q-=GaJp$eUVv~<&F$F#&i3e^3*)}m3jNUoR|yYEtrB3H`QM(*;Gt1J6l6-A5=aa zZtEOm!p!U}*WnstD_T;3D9^FR1f9?sMV=Ge>BCIvsq?f=39WzWn!25|PRjMT7iFki zR<*v#yrOl-8uoZyzp9iRLmQJ_=l3Jud5kHEBhcI=Q!A&Q1yYqmtEn)|DZ(8fS zcu4#q__U4@lRb~>{+dZ%)8f5BVd>LkGn>3qx)xpMQ0;Iz+`+&e=6h*DnuGrLZknQB#a;ls78GG7`yXe9P7B#L?mL%gDuwZ}n$P;=MYae(ud?<3F z35n6y7Kn3Ss5AMa(_v@Ru8B(}wi2G}dq(!`!AB=2Y(mb^kf2{=V3g5TV*fa6N5 zO(!NQXBB-nnjeoXz-azc51LKBSR2-@Zw;I*7NFA=>XiOWH-xJn?aU}+1e{9ysZkh{-&n&S92+l6u0b7k`tUR7ba~Vk1Uo@`vezJdttQxSKL*Z>UoePof1QX~4$TpJvLyqlMs~Rw}0h z^g(jw&VO6jb$3v1dn2|)HmXu{p#DseIST{Rvg;BaTq<6BRerM~SVW+Ar!W;abSny% z$}TGKDDZK7NEK*ymbE$1Kq6}zv#QkVAF7AX@)+(RvVE5c_YMAiFng+5@J$N_-*%Ah zO;dWwP5YiV#5wJ8c792ip}}Rt-+X0gLp1h&hV2Td7s=8oenhT;24>D#46Yo*~qvC^7KYPSFDFXfY=$L8G`8#e67Y zu%F_$N^gtLUTX8OO2P5#*}K)G%#|v`E^p>>rEv=i%iD|xcwvffAg3%M<*n>6h9cil0PS8gO65q_1aqvrP9%`2PSE0fy25 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/sample_img_5.png b/src/wp-content/themes/Broadside/images/portfolio/sample_img_5.png new file mode 100644 index 0000000000000000000000000000000000000000..8cabefb7b0008cf9c544496c684e5a022a0a5aba GIT binary patch literal 4829 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℞^_UGhHErz;&wY{0m+cVtslFYZv+-#Sow<-^(C8Z9MXHY$n)^6md#~AElTNN* z3>}P+erX}7ncR6MTOX~mq-^^oo$Xsjg>l*$cYkKjzRCHLJg*vxTjuzJq|ltmLE%o| z@j`I<{OWwnqDEr@r_-wUT8o%gO&@ww0c`FOs3zL!oyyAnQG=HCMOLCfg1!+{e}bc( zq9q-=GaJp$eUVv~<&F$F#&i3e^3*)}m3jNUoR|yYEtrB3H`QM(*;Gt1J6l6-A5=aa zZtEOm!p!U}*WnstD_T;3D9^FR1f9?sMV=Ge>BCIvsq?f=39WzWn!25|PRjMT7iFki zR<*v#yrOl-8uoZyzp9iRLmQJ_=l3Jud5kHEBhcI=Q!A&Q1yYqmtEn)|DZ(8fS zcu4#q__U4@lRb~>{+dZ%)8f5BVd>LkGn>3qx)xpMQ0;Iz+`+&e=6h*DnuGrLZknQB#a;ls78GG7`yXe9P7B#L?mL%gDuwZ}n$P;=MYae(ud?<3F z35n6y7Kn3Ss5AMa(_v@Ru8B(}wi2G}dq(!`!AB=2Y(mb^kf2{=V3g5TV*fa6N5 zO(!NQXBB-nnjeoXz-azc51LKBSR2-@Zw;I*7NFA=>XiOWH-xJn?aU}+1e{9ysZkh{-&n&S92+l6u0b7k`tUR7ba~Vk1Uo@`vezJdttQxSKL*Z>UoePof1QX~4$TpJvLyqlMs~Rw}0h z^g(jw&VO6jb$3v1dn2|)HmXu{p#DseIST{Rvg;BaTq<6BRerM~SVW+Ar!W;abSny% z$}TGKDDZK7NEK*ymbE$1Kq6}zv#QkVAF7AX@)+(RvVE5c_YMAiFng+5@J$N_-*%Ah zO;dWwP5YiV#5wJ8c792ip}}Rt-+X0gLp1h&hV2Td7s=8oenhT;24>D#46Yo*~qvC^7KYPSFDFXfY=$L8G`8#e67Y zu%F_$N^gtLUTX8OO2P5#*}K)G%#|v`E^p>>rEv=i%iD|xcwvffAg3%M<*n>6h9cil0PS8gO65q_1aqvrP9%`2PSE0fy25 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/sample_img_6.png b/src/wp-content/themes/Broadside/images/portfolio/sample_img_6.png new file mode 100644 index 0000000000000000000000000000000000000000..25fc7b21b46887b8d12194cbbbf7bdd03198d2f8 GIT binary patch literal 11948 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/video-thumnail.jpg b/src/wp-content/themes/Broadside/images/portfolio/video-thumnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d80e5cb7501c27b137b9fc7c5abe7c11d5b148c GIT binary patch literal 2862 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/services_img_sample_1.png b/src/wp-content/themes/Broadside/images/services_img_sample_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1f5bcb693e893ac09d9903d2c314d870cf9ff836 GIT binary patch literal 30364 zcmV)NK)1h%P)D8kTGc}LM zdUZ8eKy*AaGs5Gz>QU9Bs>IBNh|1xgKJbtK_>c7KU;mnZ|NGz5-~avJ)BXK@{o;!+ z>XRo=YHMxbk3U}SU%p%~m(yD7%ai<`lRSRMe3DDMYfHPYJKb}o`?{1nZgelNkxS9* zO7*T*x|7>?@+RbVJ&|1GF}c*WmU=33y;NEX*|j`Zsn8<-two-!@*=s$C#d)!dP`nV z@Ui3>CcV;+#PT1Ck0%cj+g+9$wdl{uW9(1L?Mu1+z^&Oe^UJokhkf54ST0-H^|jl!T^Rr4%SC?4rSAK7 zKA(5_1v{P3o4j6r9q;lwd3oFK?(UjA-yR+wntUJa#fum1gAYDv@*VNlUw_@6K7Gpn z`+xs${_DT~>n0cd3_t(*&sn}xPTw<^_wbKyfXEK4JpRjH{!&3Ce;n6U-ei?GU*&@= z0MWz4-Fkn2USA4$az*Op;{IUCG zk)L%C$(IS>oCGkd;AE9=cO_cnt^#L~_o_fL04bpGek*W93K$?kzkB@0fgv}mVat!4 zz0LvTPwHnUKLUa!2cJHw0Fsw7{@+1Vcvm0^h~)M~V0w`UE)J%%f=Mn490kxGfRYQn z6l4g1E@yyf$7SEo^3xZ28c4awao)}XA{=l4C|?3h0MfH(&vt-GfTLjg=%bHX0O`XI zKV&fi-z$*T$DRlP{r>kqr{DhexAeDv`?vJPy3)4~5A{>|(&PinF>cG{a#_V}tn$H5 zT-OtCblPdZm-F{tUh||idLjp3uFDg7%{|HW##KQDAjy|`C%@{hQ~_RrB_aV$J?#!2 z!Gl!T;2{AiVvYLVwweZ5@d@s-Mc-ia<^ z;?|95TYx07O7iYD0m_bRfCvDRO9g;ft*89LTK84HBLPqmAQb=!Zya9aU;gD^N&v|} z)qAl*w=B^cS)rFN@5KVWTwlB(bv<&j2oU!Bw(R$EyzU9$A$n5w?J2J1mp+x#_KBR( zPvo5osQ5`y0M$D=gYU(t2!ILzBrZ{`50PEuKnjk``Vc_Fc3l-T)&E~RfT}tlg+q5^ z2~0&zmfg!{$B>jvk-IsX(8u_$SiK@ElGLpcECVT!HhK2a%)P-1UF0 zx&6~mKiyxxeAzA1Pk!=~CP0FFl zE41BRU~vRA^2r1^ zavw84;6AldFd#ES3LSDp_)WuvyEH|R1A^me0L4vDXHElT_9OZW*^e|}WI*cNh~@k! z-5LQ*1(t=>GSzOG8lH!Bl2c7AmK+aQAi3;%E#O+^XXLt_#JHWeQZ5XOBo&AII-;dEZ>I!n4ZeHyTi!?SmjTD`cn}g>1P0t3eE*k;ctLa*!hNkJB+p-3Pc;?*7%!mz5ypHLcDRC z{^1|~fyElZvnV$@@L+y#Ai{6@WxD^T&p)RRe)Aha`DfIA@E~}9F8^Dqd_eQ#Vu_Z0 z5&wNYZJU5WT$`9<0fzxa0Q9641CSi*r*hDqit!f!3Bcr{03rb$gPa#Rm_n%K3lY|} z$l+K(U+n+tyVL@ysc{+C-#EbgkRv*YUSi>mu8{4>MTk>n7$0U#qoMA^FJ=PWPK!~4k%+V5cp-T_E( zX9P>MgJc_+crnXl7D-+WqP^-hI{}ybLXQPZus{qeB%qLpu4z9NVL1$P9&GifJz1N)(o75{G{X>7-r{23Vi(Vj^pC)trj+mBtN#uv4BOAV{VqH!2%(w^^4fG zll%<8gZp5E10qg-y{JzoG0U5{C%7n< z=&Q-W05=lLBfyalc(1OE+Y@=MzD9nB9z4?bW53grhh}sduG>IOO=+NnrEWdw3Me!I zhHd~U=u^7}kE4&{HW{(z4kn;mtP%JjK%{>~-X-G%&~P7CL%#G@+&U>IS^+44qd1u0 z%5WU?xCyyd00|$`Yr6=LYPib^&lT@q_%s{#7@$F7vI(GYsi)Jo_1kYxO^9}t2#(?6 ze*W{{-{MB!9YjYyBsh|PKP^Ja%2!`K0PXcTT$y~5wR*N#&a|cn#QnTjBc^IVYJAt! zZHd*9h^^_h0_ffj6o3Uwq-Wo%7gi7%fJ&qg9VJY`oJ)QOwb!fi>6kBnwJiR~hibGN8p7EHa|%^IDMm_%8G#2RS=Iow!sY47CP zZi46+zxYM@)vtb)_|Oj|tooY1kvGt`O{@@5B;i5b)I^K%79OL7(mw3&AH3iI0YF8= zSAfN%5wTSAI4qEY&Ozkd0msGw()`-Fj-N0@IVm*mmkBsC2wnrCo))+Po^)*%2;NGp zFgw%cR9Jx}YVH)PF)+e0>Y(DDLn=s*;P`Y4E}!=z$Lb=lUFA=l%o>p#(|y%UeXVYR z?5zkD!rztikrcql5lPg)SLDJ`E|L2Z6fY9(x2I3fBte>TTUaBpOvMw)POy8t@y?cL z`tg7M=YO8=fAGNz;X`Mwo+1*sh;^#MiK=jww(DuxL)r#TQ#J)tQ**3&kQ2@@1x~tF zAK&aC8i*(?5XuCVautKa7}GIzS}cNG%T{eK9?_z>CQ>EYX4&3MZoaFEuUrJo05M-~mn?!{-a2 z3P5Gaw#bz~4?w@7ecwDL%5--6~rG5|37r@83(l&iUCGRBQGPX)VnoxT>Gkjt5F5u*4TT8Ohuo zS+Y{yB72abe^i zPCEeV_sQ}lO%IM27!^4CYS*n7Dw~x9)cUX$E8*VtB2h|}=Kv_&$G4>5Vt*dRO)YHN z?Rbvjw!L01jr-4DU30o_+<(W-*Xr~7xApf5&-3@KuaVou-VeL$(i5d=Vo@WnQhEd? z=I>r^-)SzbX!QC-ewU^}P-85(wzS9-ON;c9(UWB%jdE2+Q0G}v(f z^?yjweE8vqO017wXEq@3Xo-%InZ;$Ld}BqAa=H9T{b_4=v_t%HUP)85;)LaRsx^We z+S~4y$bdsy#f~hlnR7MiYL6WNxWISd{y1BE(TY4p6Xuq~^|;095m*kJ*hnam}mibjCLO74k7EKCM~`)v2_>zm=KqrdKknWXC{1zgi|eHum||tw$bc z@F4P<9fH21McAIvh89Z*c|BQ1`*b1&5EKI-)|!=+??)mu5|^f6iVx!{9e&p+ZGF{~ zUrICvEA;HyotQz`qK5(itq(h$E8Li#m2m$R7d9RvRtX1$;{a)%#O^muz?pw%JBW6m z6i}`zhyzaXO*Q5z1MQUBzd`Q#oM4Akx{~Z*n_Dk}b^qUJJm!ul1S0Jbf*sr_JRx)Z zod#-U{ug$UtA=IlR=!w@yZPsAnqjgNCRs0cUHY1q-smX$f|?>A>i}Xp!xCx9NUVHa z@x7jwVTsPdK(_j+aM}IYvnnnPm45o<7ex94KmUw_((rVtO{z@qw9a>Z>R zh#dl2j)&8ASSUVRgZGeU84+TWsnr~0?7vcBXpBkUzXkx!0fh&e=M9>NdDXaIIyNKY za0MWF=_Uw0qtqmh;IvW`cXnFE6t3Vx;8qgun>P@;4^H$g;tEg`3GpwNOZnp;ALT{g z4~RZ2#`=&()k4LC{WyTL@n(EL&p)$3MFHZs$xeNC>k}5In*=^w&k`5P-*~b+^S56P zUZw-4i#QIq4=ySpg)Ip)A;*cVC+0N8SPV#w3{3uutje$UhO5Vq>ZTm(_Jhq$Cw|4w zb{t^3s8@LhSMAy*zibfgv8hS#2v(?y6+-?OR;c2F93v8&Cj@5#wW8Wm;YwN}flK?V zzxpfs;SYaU?(gq|7cqE|f6lie*KYu#zY${nZ~CQ!6Ycv-Yk8oDr6JF+mZWa-96Jai zvEx=n4~phVhHv+;r@O3jxSieFA$j4k7Ee~53QYpUd_TW7ZWCSSHE8_6EM}ZJ&>_E1 z`MVCzGLWf&tXbAp-Gn94Hk+G^Dlg(VON0ls%?iP+$&ro{2rLlFL;#bR9R<&@LWs&1 z)1wRG5J}&;XL#}i>XHu$(vWn#J1=?{OH^-U8Z}!DQ-`}RKYTtPy!%{g^GHT4x*AYB zGG=Ae#0RbQ+e2N^>s~W-#)T+-p%E`Qk2MY z<6?=%C+fmLtigG6g85zlU4iILepQ6{bM01hZl2L|YojbRfWlo3b_7!Yf_vqHsV5C< z4$0umHm=h#%n7jLhgE_d`;8!t-q6!m>pb0QJYjs(IHZj6u?d_PkEaK zRx9h-LVFwFkY=gi{$0J0G)bk*mtIRF_G~tFbw;zY@w&1<%&F%*4~5+?6@foA7M%GoXVra(gYE1;V+^Bccb1(w=Ei{l$wWV0u5isJ@f^f_Q`5O%n(J)s8e3w)QVr zk9D<+OYH5yR~5n*Z%ZuIjk#(~R3uydeq1WfKO9BaalefF)i3cFRBem@tUW*fj{JM; zbRX}-AEVmeS9g*1aGlfy1H3bP&&ke-gXIn!Bi+HD$a^dG8XYfQ$?sOF3=7qH5E7Qz z5@{lMKdCQ3`9mY__r!}{X^D^?|G^J_Ah$j#+x7=4PwzamKY#`)|3y2W)Gh@&4Q4>i zZYOK=3YV3i)bn}7+zlC}^x@Hc(beO_oz;@8Pno~WGP$(Oy3-eZWaw9_;mowNi_85- zbC!I@k40si(o}EI% zU;kCf_RoIyGyYyU(Hs3+JcFU9jKip!qGhLO_8Mm(2YZOO>_?W;L46!RPMZ7wN_fu6 zt(8=Wy#mo8jLSgEUv8lrKq^xJHp0jpl2PRw$*#h)td_0YXdH!C^ac_QQC>A;ZzNnT z6W;<6Bs%g&mI0v9W#jVl6hHJFQSf$80RcZ;vn7u|2TMxC!YLqI`E_$wX=x}_4@~~&_wMf!0;nrqC+lVbTFla zQj}wuuf7qmo|5y}Y_i+ZYbDbktlreE7O6Gy#*p6#iC&3oQavt3_1u(P+6Db-g1)Cp zu2D}z(lPQyKmPHLm0Uw#B;>j$SHFKtw0au*F}Bsxi5j%htrq8&9O7hwDCKwtIO+jB z{XS80ZDEnRaQ_NGM27^@Ye2+T-(z~556P<(Nls|7v&IsKTBdEtDRQcjcn684A)|Q1 z$v};ONfRepJ_221@5j5gM4Fjg?)14$+}Prh-3KTf)qO#U@S`972(+dA?svb_ZwS2T zZA&2U$DKXer0vH*Cvd1O8t(6qEhg{DF$=;I=eYt-zkRsA$%hWYw5tr{Y;^cQbvdUQ z`Ef8E_)nRLPUx6BK+K()r_z=qO|rGd9K}BlYc&53|9G1CR%>JhTxhkCp#~{kmQVt8 zKC~l>FpFf7*^3&y2)q|neQ|5wf9>p@QH03Fi$7PPGv%no;@Tj>l?TVE2MaXcPMqk# zi|8>6bd}ydR_tiH&3wpNb1I^Ylvg6q-Nf|X{az{K=A%dqK;G=eKDP#+x~Uc*s%F=x zrPm~3f}--TB{7pKFT0cOrHA(yxjv;R4K=j;`wP8%X*wzV&L95phe5XaKOaQ(Ko#|( z8Ac6}tz=DFoE#aFENPAUz~DNSZh?nxTclfBqJ#AbSI>`vC|Mw$EzS`{$J>;PaNQws zL}$z{?)N&cYZSHgs#4eHkE>Z4+$h^R2a?K0JUNecB(X+|_P?rY<6ZdD36^MEFtNwD z(gpJq>(QlP>e0LC`6xg;%H4eSbt(MyEu9EsIcb|sKsb+Bs%@!tu zXaJ{PKSp!dp8-Ti*L4d(8AzOgltDDELwgj-9q#kB>=oSGiUzSkLIh2-E(>Apo(0VT zO=1U9bFdk}coHb2qw4Aa8ycarQdr6M0!8TxU3bqZDKFZ#RU2tr+qC^Fc+qE{eMbNB zAOG>rNyj$?(U*4hBBv*}oXhU{p_{yj=Aw8Hjg#~&)ycYhJCf!Uk6i(%W@3E=P^!k# z0YKabp}oQiMPA1(Q5T^x9dbS;>j~WAD3nYST@@^zM^rn~j0&msY0it>t=aq|R|ars z?kxLOdwWZl+hD*3%HUNj5-q5GXoSX_++2+p@iIbu6k|cK@jJkakaP@@+S`)r@9fU@ zHzC$DMT+r1p21FEa7`}lz;Egma1QsW_F`-YYy;VS?o0$is; zDGk0fu^+!pvvnf6uB(ll5YLfW;lYoNDry?_yyz~O2z4UeBckt3OyLjvyhkmyx)QHx z+7Jc^Iw8_)w$>vE)9?$L%X(k$;o<1RvwDDlq4l1VHs-Pc>kjxZ9JdLVjMMm6`Lt1 zGL7)g=Bsw?T(b&wOT4JFqj7E4$WK|dL^{S##~~IB)3Ubf<{9hF1ZwKeBtpBpyJ)@$ zNyiU9_&|A)=Zm!K=S@36-mL)pXom41{G0UUd^7uUi;!Q*45v(U79dp@62 zU^VxA3LG7z#ZI33uV~7;dtEKawSb2_LepMAxuC_}$n;)gnn*dH5t+Hp=z&m2i=-od z>D!9b-cO!rpJb1IaN9Lr_%Lg-%am{Rc6D;gT!wg^J)g~yrR%pnhjXQ??FpPmG}L8o zA-nSa^hm@o1LjpHguib~PCFu0npf-rjm$90qu2<)ZmCN6GS?fE-9dg(+qG4WqZ1uK ze7YrCS5|jcj2o$_?Q$uL&>uA8*URao)(AB;L};)^$W}TpLLKcLJ7B-Be|#&4#50ii zcpV4-%0V2?^Z_RG2X+}i8!Gp4pQfLm-bT9pcAqW3r$|qGHbCX&+~*lNJGPldY~yHx zU~Bx28ITZ+`k;nlgPGhiCBBse0_=RK%WK&G1!t;_&ws?Mb=P_+)G_&qdR5~c}2 zUM+p(Z}ZV@_3FqVE}VZi^LU00EX4<_yE|hClhsA^u|mVGm2Q@h%x*RVxdktBf^Dtl zizy+whD*axS=C%$E`3ZNozH5GPD-%vI=RN%4RZanpZ$#fvX*FX*J0X`FOO=}BNph0 znD7JnDU)NTQ&@e#3?>b65|~N?QUVhnEz`m4PSzS#Uyd)j(l8aZ+|XHdsO;F53-?0!&N4_ zbj^RpukDh)^Co$z?v)oZLF0^f<^dVoS zR`g+s5az#l@l46}p&0vGUi6;a*?z-~wH~AeXs8{4RMK;t-CVxV6x?x7*Od;M-Mf?q zfbw(k_yAld+W8wVGr7K1{5t|}CinwDJXKxiPs85cslXw3W&LfD&Kinbk=v`?jc>Ec zTg)c1?rJwpJ?ZFW5X}|sJ8Lyxe&a;6!JE{jomD2Qefl8Rc(b>Xj{j-VS#7tz5$-kD z+6H)XIjdjiZ-Fxrron?a@gN?gdhnq#tPv-E#0LQMZ=R-a{us*VAvc`rZI4~%623)d z{o}CL(MmUvyMaax3pN++*5RNfkv#~u@gvU@wdlIxPOk0JyryOY$MzAW)yNrTZPD}R z&ub(d^X#HGO*+1J5Y-#^V;B$dq0uUVCR?OZM%}9P(c^JVzMX}-i|UrAjN7eW&!l@q zb=P74u|6|{=O9!Y)6r7`G+7~gj8kmj;B|gP)}}am?a4|W;>t+%MSW+8M{jnqT#@CB zTA5C?9-%3Kbch&vghmmiS>}2xJzuKkzUUYvlC#XAhU7jQe;C6&PR2n!7F9hqIF%0LXQ)^Ad-0(wALl@h z$5axI(*8k&Zxjzh-K_9x+{iCB!mq`=kUk_i<~&$)tY^}Enn*-w(eP+4tuD1I_*~4U-LSYmCLM2efIKz?>w9r$_3%ZEabGlA7Q#B+s>@!5)_r1hzf2)L4?>-D zMZtykn~6wD7ATKvI4ahT<&kSk)Gbh-S<;h=*^ovE;qd~6ky00CQ(*n=+Dymc;;i$k zTO)O1mMc=@q_vYY%7?wJ$Xr^{%6<%aKohg_qVsuq)1>2}7)$RLMB5}z=UcxxKRSjJ zr4}Eat5svh4E5)aabD*}TqdqF<&09~=H>F~ns4NM9*-}B-$!YsB=FE2u~AZ_(II-9 z-aa)~HF{Ffaz%wbQo}jm{D_Hqu1MV+yQkz)(JyJ{Qx~bBme!MwCY24{^_F_jf*av0 z0xvoy9bdm2vVNOrN<1bl6_1QT91rU0Q_BJ9kdS8b4-M(zZyGl7;jD{vq!VR|RW~-% zz>OUDwstZLq`k5l<~MYZ?6395{hh1xK42d1)f) z>2LKhX*pA&F3jfDx|MOr6xS2kzE=-Id8clXdQsoTsC59vC0rTy(W$;@iGr-=iadjT zK9BC$h|oZ;k-f&d^pt3n=^)2TV`H-Wa$-$6LOT{u4mGu&fb5r%+H3i> zho9>J;t?ht1wlv2Y$>k}>mLpGeJPp+Xli{z9NX797!M++bOInd4R;h}GbggdB)7Q- zphq0l$2HqHX9Wz`=t0xYSS^2Cx`-dy>pAK8;;oX7?-xXL`*fZfOb_qjwiO!B9n-?x z&uKmYgQrUe6Wi|bmY*+&>yD`Lnvpr=aXncVo-*2;a@2=99FMAx7h;XQcoSnEIERs! zmZi{)cD2|5IU_5??%t=?x;`YoU09>WF-^oGG`7(+nsnrSvGpHDwj<1kWLCg4B^@7A zI)49_s2y+9jp#gEo_Zk72V%`xA2^$U@g?))7mZ%5sxUv-(sQ>jy-1NDF#yN8u5o3_ zrflMvO&TQ-2h8|ohHsnWOs;IC!jW9uy{5K1IoNFxjmc&y*NePrWNK|KyD5NLF@lW< zE%HPo>4+&I0V- zXWmN{-&=xTZKWu?D4u1fSzve-jg=dqN#IeS)Z%073a7kb^e0~dDc_D2)6+oOAk8z7 z$_?qqq2iiEu&Lvx^%t@UKiT^?M&po1XQU}d&kqGI$yz)IpYC(Ly^$%ofhE=(rFJ4~ zAHwF!vRE;8W70tnXKg34i6IXUtv-8(+fNiwutuhI{JSzudo9-;An#R_b}L_WTM0-< z=JSXa`>0IwOLN_pvSyT$#LD{x&*?YS;&Hpy+Z?ZJ$*rZ!+?$f27ct7uyfKecYt8*%$p<~-`JgD&-%Xa-+^$~64C|go+1H>Zx1jW zqEnjO*vRP3!>=bVNqo)LqjVK-f^vN=C4PuHFDhleU3!Nr9|r$(>1#X6q?HZw&6I-t z0i+&ldLJ61GBF-7K6VUhkSH=hxyDWbMc5~@R4>9Jqoi1@qYtfBOFEV)#;!K>fw4dH z&Nz`oXq$Dw*0)VMz7|A(xblc^!$)MZ%BmhKtVRy^#x zmpQB?YdUQ#1T(~pyqGmmjW%mGE2L|*szzw?S+y9e*CRs`kh1lg6m4{aeGgvLL$#h{8Z9mCjf_f(*ac~-u_k+}jm)H4D_zr6 zbf=R#GhIWYd?=E!y809z%}O8G)w{qF^|?hzItIbU9z+F|M`$)(77dLr-e~O1J4a_I zeZ1Dawc8O|d4u}Y?9R$$3nFbt$DhdpH{X`lC)rfK#olkHMEiQ7EEAza5tJlSv!o*c zwJctY-NXal8L=+K<`=D)#aUj;{rh?+F73-V96R$pls)Pzh;%(%AIAC~zUM>BzB_!@ zSz^UHYUK8QeZktzwoUg-zU@C-j+b({_ORL&U!8P}$DNq>$GQJpyw~wqPOZ1n6IEp} zb4N!D>8vf2)2LlLK?+Cd!*fc#oyaU)OD-*{`NY>rN92i`mq9KUpJCKHKzs*CN;-c0 z@vD=L-}AV=I!sXI+kEHdEa)^J$hk($y0$Op(5aEq0z_H(#=T8HdAF;Pjg*Iu9_so% zN5$z?X?zTIuQX&UX-VE_JV-o{Qd*LtlCN!Kz8e(MSY<)vm?@@nG<{K=g-zQOb+M(b z<8i&C7h`RRk8M$#^+nMEViJ*6>u4LDs&1XZj;m#nQ2#;rkd5Q}_~W0HAO7(1u`}N@ zh+bi-YDtr*%heY*)y_uTItFOwhDT0iy8up_BA#hb%$TamT-jKhTw_?w=2>cAW95a^-4@K~g#D22Gv~(G zrqGFEEQW%5(h+f*u5no4(l7uE(?aOZJ3t;DYI*joe)A1>f!tq>ow=2Ctluk8Zm4-~ zcec-SWscCIbXE_|Lrd4UFBs4>Zo9UTdD1zS!}SnzTsLGJI9hUTaX(yGa%(NSxGM?4 z=*g#G%+%{=dfUW`*c7)%W21%is>8NE{;2Aw)=2hdMxKX+PD#gtQ8OUip}qEMel#`0 zojq2Jy_IyVe+i>=ty{je=R+79=A4we(?NgG;vgL`aQ`V&;CR&I9uct2#xMMMU>WPyVRiPHU9_~wRL9sE9mluP+l-z03lQu5)nPr|c6l?+&3mWEms?90 zSd^TQ@gZf?KJd!dqpJ(0bY)Le9(G*kdE{Kiq@k{H;x2vh!JI=1U}5SlYcu^^IS6iVXcw=; z^jqXj8f#*^GgvZFc zX1ge$uX14WWnoj&QHQ1@LUWgvtNEpOfY{g>+y}vaa&zp=uipo;Uf&8x^h#;SIjwAsaA*>&4rvb$(w%o(N#U0tZVvy0&PqcRGO|F70$GK8_Cpej7VuNypn` zXTDz$wF7vVA73+n6`gS^jPlj%C`WsIm=JVZYKiJ(E3QpMrE(K2w*X=% zw=Lk~7-N$GnChi8bz_vSSfv>5LnG@wHVY-GNGp>Sn!ps6sf>{~^Yp;611+Q@RlnrQ zl)_C)MKm>F2TSB@iAdcVYoxVDK8Z}krv9u}I~+jRve;xlNMm_PD#xZm*}63AP1|eH zY5PbzR!=%2$$dI)T0aYYQ6wF6F%}EWLy(QpK(j3tQPM+LSwnWz;N~xf<)`}TTsi~*rhF;;m9^@bAaLh+a*cATb$q~oGI z2*BZOTljQRZ4s*aZ<=((4v_UP!-4v#KLdvI`Y|%D&_n;MkRH)jla*+mC=PG4=~&^?EIO;UA59~)#gmSwx_DRY-Cc~G!K~|N zHzGR_XMJ)yn0p4tog}1?r&$Vk44$B=8AY8V#E{$PCm$I=QhGTGBQ?V9H&v| zwFi6{_18FCrNo8O^OQ49Jcg^sOaWa90o$c>s4H7)$V#@=Cs@WBD<#-!iK<{=<5ARA z#|B9Uve!Tarh8&b3+}0m!Z@C?5MpB5UpC5F5v5aw7R9Rj1C> zJ|I8<9lR(O55Kdr@vift^(KI5 zWgvER04ebzRRXk@LU3&aYs)ugj(YGz)< zX+&{JNk_EdN74}nYhA2I|E_m`z#74dA?aAZ{F0W>KBK&N_-8_{*Y6_&YX?DV3b4KA zRc>aZ=b0fRJiZ;QPrB4JfGiZ5DctR!mX@F%o~coKDt4bUMM^A?c`$tbSOl>8>#?#(b56r zQ1bd~os`P;k@5z0UD4nYeV5fEGmcW{h8MDZKHZ?&hrtY*%Ik#KLDW(?W9s8CvqicA zpx{5lf4h}+sg{bNefMpxi`UyU7We7++OUD$(fXDvcT$H~4QXm$WfkuO76{{uTn?g@ z{H}7;OgHk`wYG4v)Opb^53e?w*p|o?h!|B@wDyKZn{~Zyr=E1ov#xI?9p4>92TxXy z0J?H%a{-oaxGduT4 zjqOC571BM#K#TtI+I$suB`>l(nsijZi-yL#JnQ-yy(;OrexJ^4qSiI*o2ksV=msY$ zUCcp!PU6gwuGe0ZC0j}!ZpBWmn|F6nZ=SVUDJMX+!!=)lsg&6Y4cZlp^J4;UIwA`npBhkzH(MKOWnsi*hzW~2ZG1+0n)kLXpZTZbh z?l^5aywW0Z&Iz@V0`@@-&6od%C7LqN0iK<$h#FSt*mHjz6~mnLLx;?C9dcg`l#5Ww zQZ%?-ZJQU3@ge%Q7e$kDBEY12DWmyX&xp*1B_iWP$Xpj4*RZ=4f(>dDFLD(xvXObE z)v}l+qGjnru%L9*Rp=K9_q_xXV`mWR-%2`uFUiK5%4QU?=A+epx^``J5Oq+B*bYF7 zA*>@{w=pw~MpfQMZP1kCiA-~|8hElu*Dftdn3HmZZ_0l0?Qo1i){j^njB^{f*qkxf z+IN5GrVd!4N@FSxQj227nlN4{)g(#>dSHy;&~_Wc=ku<60#ebJd65c&UCQ5EiIf*D z$TseMiOi1HG#?Clr&H841*IFdq_qF7s|IH%NGgZL#kf z&GQBzTx+##qfIr7f~Vc<$ITOttx^yDZ}B3lyBMP%`_VWp*z@-4k#sbr zFCou^v91Sl!7H@&>c6>-*qC9X*Sg@5j}*ulaMcUhFCon@g;(22Gyi%D3iRm&1(f zc`8i0eTd4YnljJt_vqpx6r5(;zM?opWB*5_)h+*1b-iaO9~;?3B6PAdhJxxGqY$YD zkjP~EA>j89-{xZMqP_a9_;yC@jNN?&`hKN!j0Jl~rDJ_Bta@1FL^raVPIx| zj$c2Wm1dxf`}5MgykutH)0g*sTrZF*NgnsA!Rc3e@Z4&9L)}@A;{B+;c=@B6^-)=f zFU!-gUU-pOAypiWw(31vi@XcOyz*$SE;E3N>#enpW-HKlYbDBai;8a}iUoULfBkhm zDjnY$L?Bb^`i6e3j-zxvUp3m4592nu9LH`R)?z*mt^u6aFCONDd(8Vnj(lvaIX~R@ zmFUy`{=aI83L5GJdPE@Xl+KhgG+ddj`=Hic8fhI~Es+&rW8QV^efsPZKwB##0`!en z&hmW-R`JB+JOs-)(ylvW`>bpEnfv>Twh>9R)@NORzfzFfqQqNz!eZ@3?CAej}i3h@pvQwBaL7dgQ=8x9%8EC(e<|VXw9yaimqf55Zw|$o-di zWXPKuCDLCOpXs>o3vxyk!yZrqL0TKS+2t9Mjx1sRogTzUI=<&BevZoO)sll*AxEG4SL75BtpeDyeE#X1eH?IIjxz>6v{3RvC(cTeQFA!4Lq2KZtTi zt<;OLb;*wnkn7KC(ngPRUR_E@C|>V+fW2ssc>AR%n-7NyieiuHO+v5QDsQX0+YlLe*kp^2$!&rCO4& zPOf37#dhM+!$C>F5G{Cg-0GR&M!680X6SX-QagaC18C{00t4gj0GekI#adB%1(3p} zg@rNYZyi>s8gTH$;_qiskQI}O_-kSV9FdFEcFi#wn2=vYuTNE1)dWn|n@=2@tanmH z?c#)66GcrkjdiHgt-ZhYnb)vJ3yLuULs~ULTTm_bf~;2k7bvkGT0K3Rl8!d(`rUJl zrx`$tm+adsq}P;gPAeG8)&5RSk9820u^wt#3w4W()!158qupJumjs9z0m?U8R7cww z+Q7LN|5hh$;zddRi@#f=nossVoc|OkIf5%K$U)a?Nx>4i%EkRBc@_g^r)t8nDiX_n zX%`>-Srl8aN+yx@&RJ8rH6EQv+Tv8}yy}zE)R5f=rPFG<>)q1Vo^)I>oTk!?7g%Ri zbJFoGLG-lTTt~gwn29}5Q(L*Jk5XPQ&q?Mn6AX4L(3dZIo6Y39#u)zV&XCyZ*z7D1 zt5H+?fKr3-SbH_$JPu*2)8w=m1`*b%mU3eV#As~lF0D&i+%-CZU);SFcW(-)e%)Q4 z3V(pvmDI#ogtnCk`IV1Aq`0wJB1CD$?9HzHhw0}Zym~RKRQ;=J#fy$AX6O=#N1I-!p`0`}$;9p8 zP*dKeBvC*0Xs%D}?~1HZ=(RGQMNE2#cNfj8CUEJ4)u~&dm@@KMe}9?!`9q9PE>NRh zG_HdqkpTw>sAhK;AJ3Duw64|`?I02^jd)D0mbPJNYjw=Ft~N_h+*vK$`}9K9^k#HicZiu9#aieECN$tgprn9c!Ull(FfVhv>Og^ki zb=DC(KT-j;D@t$d@6@lR&ZRWYGxBZ>#>%qSSe^${jM#0sDV1tMU#*~0hv6vz=SHYJM5Go`nM#N(GSkvWyIjDa$?9pmZ<~hx zi1EXn>G1SC^r6|%Mz+Yz>~)@9q`GU;-DtvmDnyrRd0-tbK4BISTC@`F`wRIwXp8PO z>A1c#uMWbzVfx=@5n;OguziBg3vsIsBmGCPl_Q)zuT(0MZ=fsPA zKblVrQE2;EzM{*AH9}Kse((`xc14A&5Sa%b#!7@Ozd>F@!xNZjPd!Sepk+ zabVNIt$9~4jTYGIU&U2UCxfSUH<4A_y|m##BA0cvNh{R4`{LFP6JN(jzS@D4Zzo`d zMPeV0)w^hOkKCbf6F$sSOzGS^WM|+7*!0O2w30=6QYqrwkL`FOLKPM`DtzTO%9C zrQK-@^(|TnK#?md2=8s6XWh-$nM~HiX%usd1}`E3R5q*0nt2gd-$rEm5EG}7CLL=% z_2MgL7l9jL^vt%wGOhITB?+m1E`WL~OLXhsNg#BwAb%+y+3XhN6dL7(Vxeq}Vc?0% z&;dlsQK-zoaq?Nx#iyg#mlDmIIc7RoBc3`qhUl!M7KUFvi+Pd zN2{FTSP%87lWQ06n@h7i(YlPDw6S1slc%0NyMJ3tloLe{qYAr0=e;SIlu)ZYc=xfr z`iSR+yltlEiH7;kuF78LjM~HDBZvT?01}VkUIR!>lNOo}>pKh2!n2ZGSPTuV&WDzK z;c>ejhKkl)8fn~DoVAj-wPqzjQD{at3+zuZ50Lu0+Zih2jx!g1n6gefrp5?Tw7OU-p?N9dQ<1fe53EewFTj zCYP_Tc=bs>-#)AmA{uH@*wO={`*FyU5;{k)jPS);v1pb`9Kgh3aq6%{!vZZ{C|$a1 zn=BI3VJl*Aqg&I@Mkt?06`T9oJ80G$fC?Z5=`Qnt{9z5-(0cEqsf_!A8J)0L`e#sK zqa4#!ywYZ~lqOE3R!E3#SRw#Ob45E)Zsb}mQ8igeNO0@Ki;NZJ@`qZZ65EJEcfBn; zodB*ScgDWxNynGp!JQ#teaQqH_NbXS9d4~z`n7QzZO{{74gjhF9P(UA6f*-r1|FKM z(K6I4 zOinHbh-k7xc00hcOx(y!B8^EKSHiQIBXvI1XHkb$;qI<%St@{2J9t*Le_@SwO}(gU zh<(6PjIh}qM7B0asfe=OW=#YZA=%ah3>sQIE;m38V!o2?tx^lr78MCKYpADPL;l^% z9uTSN%4xVW$P>NkvD&^6rbspUf=0DFPF_blkv1@q$^_6;xx{qYeLv|YB7#WGNq4xk z^^GHZAmzDJqIRQ4sG3{Do3w7v-Im_)&;f-78flY=z=}m~-4dmu>A{^*ip&&HLznB( zPv%BP5S7`Tm9%M2zs|5i=mWD#TUa8yZPzQ?wUtZBfn-vJhyp9Q8!HALb?-iAPv6vH zx1y;|mX`^+ zu^16pEh*{NlW!eRbRgbyyLFu|kvF0#`FM!bQYS`VFXifjYCBcZW&CzfmE~~1dg`n8 z!4gsKNjb1sUgVKls0Q@273&aT@7FI;D$H^?n3+9tL=VA>O1QIjxv1K)nT*y;A6n@j zs>f=A?P$*Lk~<&ASBx_0a=oJYOw?X&8}-@mdkoowdH$P1>aFdHr` zS*NRnVzNjRfKsnM9hx0uk~Q&7#ZMmCIBA`9IuJF#o_Ffit7-eyr}w*B(fFx-|E-Hk z%w-K3lS`ULqf}HNnulamBR@%LK9+GIE9mdXWFxD*ao-o!&vMmqGb&P(C`}uTdL^I6 zyldjo=oTA^TJ0@FIu$@%8tA>4Gu=jn^JUwL0|*uUqB^%u65YM^XK)gK=k6RJJ0H?1=zQiAx1r?n9lyxt z5@ElP`-d23XM14V+&K~jiHQ@Hskty`BO~bULl#Pm6>ohUM80lGuvYxYw*=1qTa5#zflmpq0JZ&yh^H9+qUm%U`xgyUIS(j|PxJ%oW8!eRbMLEo;Xyvtj zTOZ4(We}bQK3ElBZuZU(%yq1uFA_p5)@Y~u`~7{H!aom$IKtoOFx1en!`ep?hCF&+ahhJ96_8S-nqI zr~U5z{+SBuWuF(*4l9J6h*^AEe2a37apebl9$&u1)g?g_^s zlQoxy@`pxhivmfxQHc^rv)vEVSRA||{lkk51|5^sbWCwf-balK+3S-=XBUmwPNxs) zwR5ch;He=?CJI)c@0P7Do;zY)taAmX7OtpxTU||Oe+(z2#ErVTksM&uBO9i%e#(-$ zOAnUq_|=k^6i=1%W3DJQN@lkf`XTnhYM;kF#zZGq=W5i$M#tVVo%;5}eU0{PvMD7* zsr$AT8;q|zJGC}U%Wm&P!Xj2twUq|~Oo+Srd~TL6f>w<+Ph=V+4f9pF4~yiAs?LkZ zc@a@em?f|1yELSxZH*A^`w*y_X3a6Eu>D8R-q%I(sn95-i{G+`mP1erw{{HOVB#Q~sZ z8^=@ewe^xoZsPaPY&O!lVCw_cO{N<&jy!+k6JiaB+HhfhtsLrR{r1^&MVE_hCIWx} zBpoq>Vk}#6c3HeI8{4aG`f;@ZPF?;r3HWt_8i_4iSIk1HF$4<}L$C*ANrOSZBPZH= z$wRy7_R^>O+Pss<+P2cgF@3qD3$`fTuFi6zAvCho4i+l4Cm87no>Y+IGzz$XQDu&< z_zFOoWY65Fc3xz_*^@}E3)v`*HRe7-Ce`f7az}lLL?~75q}Xds67$9El>7?=22Q^} zS8{KFh)Om(oMsGh4)b}~u9l=7b&|+7rP+0=-g8<`oaSmDNAs1jwR)^1_PU^c&o0}o zY5WeX%)VnZtevhG8=wy0h&KTz0+@;bt69=|*?k@sT$s-tPlmH7Z< ziehZj2}d@WoqfSx6||xct@_lERn?9*7<5$~wpyd|I#QIG^^246qK&O?b`jSIop9r= z4Dn^lAkyQy8!vEXF$QvuyiB7ZlQN&yVh;wDn1M(%KogHW0-{0aDW#ppzK&ZU%DY~v z#5tPw%7zdv-KP}l*Ir6#bN4QnGK91Ct{YKbGg|bFaq{QIYvn^An#f1fqQrJ!ihIl5C@CR}Z$7C~Y3S?4=XzSPSM+m+v2oaE$Y0`Z{-ZP%XzbdGl0z zIz)$u#NQ1Nm68_^b6S6%t^$|=o4Q`kL)%ni>V538}j6tN+G!zdjqqOwZ>(yr3puFL-5UShhG{|+i;mdfGyVJQgWXNjxI&jiT!*vqZP%I?e?tK2$M|Kzf}uI=Z)8 zRw@H;>g(u3*@^pRCC^b%Tf7UZTD4wv)h%jyN%lb&NPz)EoYpQqygy55e-T!TOIRYg z)6N14D9M@%)s$RsDi48Mn+0mkCmzRGJ_>u3Np?&O(T$C})z2_?MkTWnr2)@xW{Jwb zm;3vBe);m{@MlJ?i{>NF}q|Ca&#O#QHHVbUN|9daAR0m})CV_lpxEn<}6+zh*X7XG0^?8)z~Y7YR6a z*(_&~SWAoMruCQQ=-x^$G|l(<#yq4vbn`0Vn89-_h0Fz7DpzA>BKd19EJnkGsKawS z{WdawjV!8V?dKFDv2^9?ZsuFSvubDbNppQ@U|fsxA-?do?-MV=5Kbr9yO=0QG0pOn z-FJSho0mYW-P&4xyGv`gNywoGQig`)a zT;#pQi*8t=o0cg_2$(bTicv5lE;K&VXC09jQsFC_4z%)pKPY>-k{%Od%=*}tGgWyn zC2~U{lGcCDgRl`;i?G_nh#zbKjQ9sKmsV{L$cAW5-pS@}t%Jx`IcTO@jg3wDuewmi zEYc3(XdO+bweOu^Yw`|LL*58Pf7Y+XP;|MgD#Sa>St0LNU6~k99hYlL1YgUI_qJy& z9msaLxz_qj@Rp<+jd>=g!}QEBd2Asu&$HLc!JSQREdl10fJzpNrpKcXGeNy}D`ddX z%I8d$@o#ZUG-jb)R(hcb=KNakL5(QZdebD z%r*Kbs1s|?V3!gc2_uO$0>z3Cj$I%M^JT346syFmN(FsXad|x_`s9;O_}~Bi-^<~|n921i{XVA0uV`7dDL{t^?n8T<$TB_QDWw9f*dsAF29kSVs@}ITw zimzL^k4j@%gDtszYQRR+&tQSfDhaVZ*BEZKm+DGK1I(s>%A>X7Q)YcUU$jz}9{MyJ zyi-R{8o1YDiyEyn0ukD}>Yl5iY`pb-{6;R%o;{NT@Tbulv~0W~N3m6e(#Q zc51?vV(?W1*VS=m*kEQ2jo?5VF2;x8$~23xO`$%QNo&L*ezJBavIVpz1~AS(E*k1@ zlRE>7{;}Wt^{-3$-~;boM4OpdqUZ9P?~!?uFyTQyjE)>YWQNSx=4X*_3*>$CZW)~n zuPrOwxl%5ol>{&=w)JMC*2|?y21$nzM?B?*uISOt!R5CIHXryBkKyMxtkE%HP{T7S zHwvFud(>dSo;LYj*(6`qjACE+gCoxy4I_!ERkk6qhT7 z(9eIaIim9Er@v*`qJR6hq9HyqMeBKG%@o0$VkCEi&Hxvic1p?&t8046N9R&AfvSxxS^40RynX??FvWXMXVN&fJnH@v^M*%d2bA4}XmuFJ& zJpG(RzK_hdPj!unpD}u@!W!9Re67Z->fW-{JDUr;C=a^3yK8b%s}));XVj`(bQh;u zBUmE*Ktp6^7x5jiMBN(gIxI9M&h9hih>}&a?L^IGB3m0kQZO~u6ip!dAOGWjOlSE= zAAQ76pMIr}onF2a)Sr31NSLX43Kr(J+pM-4s{s7k4_s^p^kv*CQK(w!Qw0=j`;&=U z*n1&7vazqb#xU@MvO4uZPP@#<<4K$BTb}zAVjrm4udi;~&&TicgyFbd%CrYP!ul?h z@{>dBnq$R+erDgKr^m-8-T84M>U%rLXHm0m`^Ds60Tccst_#2k@H{*$3Z}C>jtC8T zqGd6D6g_D0IN{P1K-AqC%H{#8y{{2WdqGS+r{yfI--;Ckxr&)Y7-tKZPgQ)*j^Nk7 z{uzrU>i56>_Njc%=Utcv1=IyV+BB=t&S8?9?b~XbZ40y=$aP#l0E%{sN)y)w^w?&sx*yY1sY~Sw@A~fQV=BDV2+EoRk7l{K#RIi5l zgC{y@Vow<|D}F4HpA{R9Y1AOT3wctIt=0vT141d3T1U2?z@b+8pAs{Ph?zkvUcP+U z?(Vks%{MQ!U<+=926)w6 zY9dvoMMdAH=7==cxyBr9HAs&{XQPz=!3Q7kmtX#&+}+*tH{TdZ+$3_S=Ym#$8@$~I z{ph>4gAsF

    5H$L$PTU+MTJ2r(MBZEvC~!c#G5V#TE;Ul~l~vZ08zSM7Mi!M$j-O zwUH;s*#~cN-0oax8C>Z`RCgWw8|TrPwUuoDfr3atqmy6lIH;TzKvMA3-JZvDMT?_L zUG()3lHuS8J`|7uijN%zp;l`lmPpI?*ba@bAFixCJnU!reex0k%(^Y&(#kHE6Y8bq zvXFuaS>ltDZJ}9mB)9&#y~#Qh< z8`Lgq-jN(=Wx?N5m!_7e@P*_tSR_Hk>ei{cXy4?HI$dJ1Femy=7p3f4kWvbyY8A_O%W}6gm;~jVv_(5>pSttKmKD5^M4I@R`$<6D?gA3?MoC|zLnp82ie<8 z77VuKtlhi&uMs9Sorq-n+fKs<>@kT{6jOx$n z`vVk(|Z@}9b-#3Cx@NA`W*0#2Fw-*3W*k21LA zpl-OYYj?&+g-N6UY&C)|2w~$sVvPYNB8`y55(sGIHpW6@MwEPiVio8j0J<#h)*>B3 zWd%3F(hadntA3d{?k``SgdcsSqJ2~ozW(}a@?@|8X=|s`Vv|DJ3vp}rYWd9)*-4EP zStGSY0&KLCRW!KyP;J$(V?NMg<0NfRR^Q7Ldx$kfy3E62%3~2)5~t~#Ml>KqP9lUm zxn1M~NdRioq2+{;GpAy%*QV8C;fGKyY~pw?%|;Afwb49-vym^1JSPUN8Y-Cc?F1Jg;prK$=8l(X%C$ynqt#(iUkB3Rg!1eZ5z!} z-Uvk3js%xMd5EO=)jgP3I+_jWj@fyfgLHajZYYL~J{p|ybusoJ35n~LBe@nyP|gaIk%(lS zO#=Y!0U!cUh|c25&bY0Q$!!dT#>_Fj9{^(o(muX8(@6tBr_<&Gt@b7yRU)-zNw@9^@pZ@fxYK>MWb#fedTkeGDiNU;E_Vsd6)T2LA zQ|kyRm;E9ZXJawjO)ZcBNvsh#p)Z`M94i8>P_}v<&1Ox-T8#lBdPTmmywUR6RDGXU zlwV6kT8iWiM9hcZ;PZnhn$McKFa#B_MgkrMN;&&&1rUH#3_NG~8ZO{Pa&BKh1z8&UDrlbl0p*Q>~VtVV3hvi1%w*)*Ty ziIEu_7bVk>@0}NDXml2f%K44}y5LKN-bY--1t3z(t{AvOV5X&w?c2g1et2r|1_02X z|NLjY{=fhC|AG%;!f$(O8>3rf%8{JZTG~m#gmtcW!pn+gDo@K|z{O@xYfOYogI`0m zxm2I_$r@!^k`(D1O{AJ@gEg`pB95N^Xi7Vr>$x6@6rIA!Y9q#gGTA3I<-X9XFYSD#0dZ`7VMi!tCl1rOs?%l z%9>vvn+*V2+yCscu0S+Jb2Kawakw#yUKBv&s}VqA!96N0&skm|E=}7T1WM>l66P{M zpVBvanK-4mh2jGz7=^efaWM99seC9jf;W2sgeLta$acG`f=kp97pqO%YqJ zXtBr)=H{{_&5MRR70+{6_(BKKbNX^E`!`Gm{^z@}V!9 z;KDGiCV_>#70r;g0&7&yDuRO8+s3!in4IBZvI?YB&S}$qb-tzz8ls~sdmK8C4zlCC zp*Sy9Z%J@p3b#q~df2JWNn~wv8f@0N&1+B)SwWL5D+~}-)f0>LA-QG+kUp-@R|gVp z(I*Cr^z^As^ZzF^UYlS{e(uzsJrnExQn<_$ z{Js@H+V<)x1vZgV-!y82Op#F5c@E2Bg?i0ZX`rO}CLa`Gz+9H~ad#HH=x4%&K^6|Lk9{=kR>;&P8salTd@S6Q z&rMZN9#|i^G)#kezVF$H0>>sV44ukXz!jaZ!z z@9lH~fxiu+E7?U<^uPM*Qz3J^np6m)1pRH5GX*k)a`$xSho-{>Ajp#-VN)Qj0whKw zl>iCZP;>~aD039cP+JrMG4!cedy4@``=Rh;tG(n=54Es%(}(dZT^k2xClkf9y=hm! zo;WcjUrFnueSGklhWJ)=1rSPAa*Y#5UUXJ&#A1nRQL;@Q{$mmYZ<@uHV`i3YGf9V9 zAw*l5lOkvL$3OnDz&jvfHWlip9KjE6gFkurA7g0LEy{Pc8_l{0DAtqJGZ)BTtMx1e z531zJHrwH+6KOX@bfk)mMQO+B1k$~>w;bs3|CNtF{xSdV;i24%HM+C$CVeb!eY(0p z9FohEAiW8}u41b8)rx(z$X|r$yB6Pr7D`AIYjpzxTv}}VupS!Xz9sP0lU82^9G@V0 z{n~bblqs+dn|BkG{M9i#-~UF;@U+rLH3681@EX>u^;wpOYE~#Lkn*8=QkS-w1z*}d zYCun(XqXPm^3+b$uBwC;`d|O+f5pj-TwYJbpq>U#0m}t9hZ7v}k2pPDuqVVk>U$WZ zu%M@`)>!MLps`UUel}YhzPd0I{a1+D7JaYaPmfumD|y<_G=HcK1+)eII2J%k!|r_eZLx-el+TPy(N+`Ul?}Dg;*dQ9|q}nPra+T6r#PK4GjB9 z%wE%jqh=6h-B)EpA2*7v+6jV68vd)93EkvdjY~Jzxmfj&juo)wXo1?zsH{zowFwt! zS9e2gzIPb93-BUeNySdA)d;KkNy8roLKtc+iHEh4X*!u(ZZ{C^JYvw|% zpmZcGja+;KNVTQ)R%PYBJ!Q5yaWh*Zx5YCp<}RwAtW5sdcKDs~SpVH^xW?w-YVOuh zPx9h_t12S(l?ZN$k&l7pSyBFA2oRUEC1FubZyNc)#XzL^^mN(_x;W&E7ZTm%IEVb^ z>ia?DjO%~?=YJ-5Y4pP%{!rcBfB7%ZwXZpI{?eTkTjNU~xLt;TR0{h~N zFZ7t>g#O*{em8*$KyuznAAkI@yq~X>U^_R`ge9y>L~EuH*ft#?iXNOrcd==P5l>qy zb^qioK2Nk9Ayr^ts&5CP|MuVh8+!BA=SJ8GKzXKAC%emsT;xq764I&zO3J8p8iP?6`o^ZD~&~%etfBY0#ZWXhS;q(fk+NLudp9_4)-G*t2{`><0pk=VNL}i>6DFb{*v1&?ZQVY^-?GU<| z%c|X8tx*Ip9YpbY97Me(dwoT*d*UJg^MC$N5IRgNEy9h;%a@;sfBHRplB@YNQxs)8 zkhBb<6##tai>lV|+=uC`QtgA&dXc!ilMdl78pc^CAGx=vx0FN4irA9PX4{7!UxBh{*BKX120zff61iu5hz0LU+_}Aq^ zbwO>#XAa2ep;K=z0&~=LHl@?_c2;VVy)uB(Bv(8)(Adt+aklL9piPR$*70NqD%fYWu|BodG@}BNRy{eO zgYH1`ZVQvis1yWIPK_)zYGo3FKT#lk^2yr1`s%s1XE_Jeh**wwIl8h}{X+mGpwp8Z zoCsgIM{GJ@RE7L)-t5H|4X>K2ulbqVZ}6Z)q=aEmr7m*Cx)Y3T~fsQ_FJa z!zLlK)81I9T%Zbx)}cda&r?1So12prTK4Yl_VFWbQP57ZPnZc;R!?DV>Ui9r#Q3{m zndB8GyTAAbpzhS{v$3B@%|!D`nl~5ntME*Y*#*%nS~8wk8hJ;{&&e7TQPxna1ZlEZ zj!q}O{`%|g%J98d7UrL{JcaKEHMO7|As4|(jz}-Bw}PjzkFuLZ7ZY@{R`}|g5YN5Z z_XTj{XHXlKU!_H2@x*fdWOrXkw=0?cJ$Vg{<+fPuX?@OO4X`%abG+;tqsTBColbjP___9ixF_xA9;-A=T~yKKI3uJcVO?8u=;Hmf{pfR15^us1n?Bw9Bm3lSSR5Y0F!`jlVgZz zXN&L~7g&%#{NWF3L10xpO6CC2Nay{Nen0>6FaLt&zV*NV_y11fEf$IJszhsx@(IHF z&6Dc6#44@0FMn?V{fP4cC%(Lw0!c}zSOY`=pp`pLn-~zieibKr9l0iVX-fXQ2TI4` z+O>9X;vndDzReDBp*xh#NH-{JBjw#v@jd9Iqg4ouxIUfru&ib6z(H zZ%MkAfdQb%7q>e()yEKi3s8D=23~_>3`_K*AN@#OS#Z8dqlSYgmew3H4U`;ECyh^t3*=9eyC)!pNNC&-Lfs`W)L~TQ$*m8lC6M>{JG@#}{zx z64ocg`6wlY6+*HQK=_-#`I{!LOs$aThWL;((qnb>7UCHytP#E+`F-`PufAG>M&P0m znvTxf^*it$`;y(6Cme(GcF;RF+Ux&M-nsO+jl*!pcH$Q;{zXz0rA#NZ5B(w!I--qe9lRW) z%5+H~{3Bt$wV;+(2x=O&4T(mr#roG`-}ch0)bPK^qgpOk6)s!zSLzr46aR(**Hjic`B+0& zp9pP+V~#(>Js%z()M7xU^;Aai1TPSC1)V?VRkWD?7DgcYNOvp#SNr0{i%Cs1>K9>m z(MGagg7#P&?YG;q_}Yfyi{B2*twyZHv&8vkQ61UG5pT`$cJv2lZl&22Onu4EA!rgU z6PCB=bBw!XmplKsRA4w>4=%0;=b*j|8zGH8PR@W+-Qs1K zkEp>XBqlJ7uDIZlhr;YHH1P~>0qF@;s>B?_Pwj>lm$U%-T%*^Tf znbxs1oKX5&B-bnS1tEt0F@y29qkzX>z(|3r}(->12yvO zMxPxM+Og)G8ckVy-p@Wgr?8QE?ycX~YyB=l*^5wW2+hO$LiEPidaI9HbqpZtl3tb9 z?U)vd7bNrjF>Q2rcc-x-?hg?!;<;E2wsNfT@ih3uyl!+rH1I0?_!ygNF4aD=1whFB zBFEag`U`ikKYskEqx!F3zb>Su94yaQ1CsU!CgG1w#OdV!l}weE!T#z>G#ZX+nwE?_ zoo-MT>!KD3t~1Yfop2+a(V|}rWZy5)5NndLd9dm7A-Oyx=1)||kD$|4|au!Sbg&>(=*L$ern2 z;TTT0HT1r_4=*-EMe2^q2dCY-{W^TlF#(Hqgxva&W@I_tVM!rdWE7CYF971YbLMQ+ z!A4~YlM7+8l-8qalfSn{b)qs+ov2NDNGX-0e`$mh=c*IHJUulfArSVN3S1Q1qAvG~ z%>*-*1BrpfU3_GBa;^(}>ONton!I*5{1_CUg}Srjw(wMEF_=EJ6+qe0kou06M$`L1 zo_Hp8s-yR=g`}Pj)+6guGnN4n)4c}WecTSrS}G%YVaSNB|HnOf+Hx)yMrF)s1ieDG z@b8VnePGKW>n=8DvC2fv@}j)3ryLmCwQH;PQnup6HMUYk6O;6CYfBlyajO|}d$wHe z`JN+2zn>Z1=ru9j)QwU3{P`Yg+jV`U;k{N)t5!`-N=>t_-7Kx3Rg*mrmET0i;R92} z7Bj(dzB9DpLj}Hah}RQ75aAN(&JO^DN%C>BoEhs^>>p-bsEpk0K$GQU1ZV|lVN#+k z7^=}{sSp8j19?O`UQm?lAnpO+x#t{n)>$C1PYq#91RIqpXpi$)P|NO=foyHjrg?Nr z&uw9aAR_ao?C+LXGh6p>JpOXBqKC!&M8$?t#zcGAk6qJDzR8asDsD={W7O!5tQj4IoX>Fwu%NtV}!avyoJ}&1I1pwz9b9Q3V(w+cjO_=P} zX3V6kPDm<8x6)I;KfTAC@^$!;En%_v=o$ly z1L*PbQIo_NIAx0&Ko|%j6~^uDZO6i5DS%QlwiqlzdGzvP8M#@@$;j$sASZA5Cw^$i z?bh5e#_V$Z&IQpakc7!UBPL_}J7jV#Oa?|lJRmZkL$?4+TBN7mPBMZ}iti|oCqF!% zo2WUvc(!4D9bjQ*hVQ#TV(<_LvWT>r9$bVNK$s>p%LIUmxj;fjZ{EBqQZO+dO6Q0I zs4^+Hh3D4;9+O+|^j`v^6Cj;q5(dqDDB=mpvlZKqTLooM|3@MCI*NRxHB6N+vrhO@{EU+F2T;5Km^dSJN*F14 za*p%_fW~EH<7+9HywSU?ET?{OGx&6nduPhygwF4!Ai9dlz~H@38gbN*A^)FNKIzA& z(c_q+bN6u2oD;?m0MKk1#d7izgDUQUJD+jDIqs=n1ELcqW7X+t2`Q5)gO2=YR>@UD zet*%4?|%vK94N6MeB3c7j2Ym$1VC9IDFst3r!i1b-oAaSJ@H(a$N9Y$L>DtD4=&!l zdzXC>0Gs>JR1p7`GDjF`5b-+zG%BN5PE&vyiw(x1hTd2E4iHUhrAwInzm#*r$N=a^ zHJB`zQd!L@Szdnth%RQ*f%RW5Q)66X!xldQJhSC=)y)hye+w`GANlj!*Z##s00000 LNkvXXu0mjf4PP-z literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/services_img_sample_2.png b/src/wp-content/themes/Broadside/images/services_img_sample_2.png new file mode 100644 index 0000000000000000000000000000000000000000..001410bff7f2d265df44616fe2534aa0e8f69211 GIT binary patch literal 5563 zcmXY#dpwi<|HoC5>b^-iB*#{6Ip5|`&XqYO%K3aYaz1T@p_I&-oaLCD*|0gzrb2Yj zp>mj6$T`NG8`4uaUkuC*U79Ov4;zYBrXOsM_#Wz%0A|4-y{Cjp_a_}fd8%b#5-k6WnM+25>Z=cw*s4u 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

    PmueG!D$gGix)f!C$0~H9OzKrvNRW#Mf{nx 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

    tU1ni1MIveZZ^G}tYU1!-eIwDySbGL{RJ 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

    >SM#?GTB0nCZNvt3bvI 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 Jmvv4FO#s~6iZ1{F literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/sidebar-arrow.png b/src/wp-content/themes/Broadside/images/sidebar-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..6ac1455edd4a1863364b88624c75dcfe37577756 GIT binary patch literal 1067 zcmaJ=PiWIn7|)o4F`W}crXmuv;UBQgOJ-LS){U;oTy-h6Em&}%S@O1pHhD35wOQvu zybX2`y{LGYH}Rk#g0Kn7mYPb2~+#47EXdCL{O2vgM+$=*L^8M+F=xd^kJR8~pSG2}ox z6a)bc^aHw|3vzvD!r|~~ng<+U0nc)LfD4O#ya)hYTMUWj=#yef8mYx1UWA#(*cMr~ zSS$vMeL>_*v78_Xz6Q?+2qNIlSXlJ}mfKTTkf5tMhK&tm(Y~TOfeJXnkW9C)VA>5? z%dM4(6pZy$o8^MQzfv8jDF26=W&`cw6#Sd-KZV`Qj1AcobWy?4NaH4Z{7|+SbD)Zm zlR+q7uVQihP5>i3DG>#6c!qy|QRD&qZpg zSL5nUa{+QwE=!VO{l@NSbp41-kH2k>FMy*TYmulnq|5G literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/social-icons/email_16.png b/src/wp-content/themes/Broadside/images/social-icons/email_16.png new file mode 100644 index 0000000000000000000000000000000000000000..2cabb177d7738f49c0f2993234b458016dd6ea16 GIT binary patch literal 608 zcmV-m0-ybfP)dbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfRSb zB*`D*%G`Bbq?8mz@hd?^!!Q^O25dGP&gXO8`1yQhv)M2h3@{9X_nJCEQ53a_@B7SV zGcK14m&=9ue2(w?7>4nX3P6`-SwAY6rpb6bCJaLWMxzm?Y1UgSlx6w$3zb2h=WMrI z`u#qZWno!XJ$$`hNz)Y1^B$JTD#87JXT4rC91iP}-qSQq9LFIDf`^keKp2LkY06|W zsgwK-&1REcug7Asz;)fX1WKvbAPDGoy9go3vh1Pdig})Mzu#%KT6mtva=Aon{VHBw uUOu&2t#7y6t^0eKA3;iqlrqk;?CVeXtCdq}03v$;0000dbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfL9Ke+nA~Ys>BZDYUUupTH(XEW}69H?R~7K@e=x2wL04 zSFkaOxCWEBVSnzuV-XXwL3TH{ngjPcoHH}(sB%*PW~#N;br}JZfwWzAYP}xdP;jPh`Bmi==8HAy-H3_5b`iTIA9z6HE56>^5?fM{L zXeI`;B*K@KZLF;p0RV?*4*&orh9(xUm{^005g5R5pID%Y2_*3e*8kvx)B9*LruYhO z`y-+|tp)&KF29(r!t-_cU%gkp8>^6TiQ_Za?^lRPuyt|^0C>7Oj_AQK3p5iYKI145 z(L~TBjFshlDueMo=e-UsEadbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgf&kW=J!#m1K#7%H;f&;-RLfkEW0T=co2${5bfILYm7s8};t0oU% z(kTQH+$a&K6G*#wK(RbK_f87o6)FPW+aAuj=esjvJRY~b_XB3m(O{&M--Qro%33?f zvMkTC3_^$}nZ5TY%Q7#^a-giWc^t>6s;Wr=#Bq$-Y?dqM9E1>H=0*WR2sr1Us;UAJ zH8MX=RaNVNrrWmyoO57i-2D85-j^ZFUk9BiTzxvm$@|v;fa%RIOnP6z<^fWNcy-mq z%aeC-&Otr~^e)FR;Q`Qo0}~$L;_^3`8O)5Lca1}n;w_%z(4;6XuEETk8!$6W@B$FB zu6O6-8g1Xikk~x&{+$9dZzE`(!rX6e(TZgqkmwXJ549#*VckFy5tteM?jCfy3+yD& z=`Q-+y&56tpCi%f-b(CKuZWL_*5 ym`h>U6nWejANOADT2!O8p4K@bn)U$_;+3$ME+60000dbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfaHio$&NVcR;JMSnWO?t&2zu!`M@==XtCrbaW$C77HjxM@``}x18S*l(Ws| zuWu-48#iYGP*Pq;xaKI~nj-*IhXu;f(SVXU5^2}BgRmxebfcAqhI$$!0)W}YEEC^N z#%F8*5@}FU5>QSS<(Bvsc-D6wVFr2nI?0u`FxNXO_&B-52; zvmUpQ&Nd&uSeQakAE_wvl(Z3AX3^62VVWkVTMm(58^c-{#WYQFsDD7^=iH1^sus>1Yl4yaF~t%Zx8qbxD$u!N;^TA7kL{ zG`$apnP0NFcdO$cGsqy+UlDpPouaC;oX0QTv6Gzp>7?5B h)cvOnF=ZH{>o<|zluEHsF;oBm002ovPDHLkV1f+#Ofmof literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/social-icons/stumbleupon_16.png b/src/wp-content/themes/Broadside/images/social-icons/stumbleupon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..484ba49057c4f9684ae1b1c2ff5196fab1a0577e GIT binary patch literal 698 zcmV;r0!96aP)dbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfUc5G@3uFKCevVY?t&Wg*d~ZHpjW zweAmSlP=l>VSz+2_Mu=@1ZJfQ0D|iFNwt8{cqY^sY0#mfvQoeZRhQ#<5rU2=EwNzd zh0%CMDvZ*^*8(p0kJ20Msxw#*b4)EiV_q$7i%NhDagESeskwFJ3J2r+34)+*b;tH_ zssAii>Y9cOK~(UJ)EH%GkH!F)ocpl$a%H3RE}ILTu3ou2vG?2aq4==x`xs^LeZSh4 z$YDhp&j^i?nk`BsgE$jM2Ri>yPRuOus3Z;tLA7`Dn*ab=0a3x#Qe%|n{^CPEmcQ&k zpBx^9V!n13o8|fzN=utyEpPeB^|?2+1yK(5q`7zIDgXnCXszmr_MvS8Q6=ymjNT=k zPB$ERK9nr1uJbBe;8;(BJEz70c=0uhBg5(xT-R;*@~ffZ+SAt{DqMU#%lllprr(~K zuMs$rv76TE>V?)_fBk$7qqv1#UB*MJjQz1Z=(H!BHz{smH?yEs#&e7wp&UM;m>>Kf g0LP7FhdbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfpozInVzolurkvfHew2jZmO$({jX{|c-4w8S(bHyEaDUvAlTI^Xi#eH z#+C4Fy%vQC{4%2L-_VLwSuBLI_{kh0V%w}PYG6bI{X-eaqIfJgTi z(0ICfBH$=D$gMyb23SgO?!>4})zI9Dz4$0M43J@lg%o6p&KIj2A7zFaWLUsX9#tyE z{^iti6t6lBakz-eLg(;=oWPnHBtfD2#-8S4+RIu;?#hk>{6zJtxL;_T*p z1N`ax=D`IGKjQ_zjm^zYXVF}8f~R9H{Qd&S`|7_9^gy2hrSRxiN#?z18Ei0 uxlpZi61%$_r0000~X@ literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/social-icons/vimeo_16.png b/src/wp-content/themes/Broadside/images/social-icons/vimeo_16.png new file mode 100644 index 0000000000000000000000000000000000000000..dc6fc512000dc856c058d68639384e250320c8b3 GIT binary patch literal 643 zcmV-}0(||6P)dbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgfa{E(2({J+N@@aBYDFE)QbZGVYMq898iGv&g$++lK=2|PDm z*t#KNV!mj>6=N|ruJNoIvRLk*ltL+mMDW_zJSlxgDMgnAjqnd&j2*22@NQG%d0t$} zuk&m5Ckyuq0Ni?08{x(k`U$pUU~pq5OX12Kp69XnegnTJBRnxXHW)zlSH5|E7J&P2 zt2|!|c73I2`Fny74b6q=bZqjf!g8&>OS~~R19002ovPDHLkV1kQn7-|3j literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/social-icons/youtube_16.png b/src/wp-content/themes/Broadside/images/social-icons/youtube_16.png new file mode 100644 index 0000000000000000000000000000000000000000..2281d7f6a1bea55a0fffb96b06ad43b7f44e66f9 GIT binary patch literal 537 zcmV+!0_OdRP)dbVG7wVRUJ4ZXi@?ZDjy9FETVQ zFgf3{ozv4>qw+;#Gli8)sYC=SmC)=OU?F>wszR7ey-IpR!}>If-jDa4E%9F zarOQ|&Nv|!VfFeZJvd!l$Xr~#zUlG+j1zQhEwQy6&CdaFG(Shj>k#PjI@FOkVri!U zh(!pRt&9Q$%@z}zTLjHk>PO6HOY%}#Ntrf`TW_iQY+)Rp|r_gcyW$LE5zQP=kQW_a~w1!Ssv*17lu$5 b!-~o$d6s`+^sFmh00000NkvXXu0mjfumk4Q literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/team-member.png b/src/wp-content/themes/Broadside/images/team-member.png new file mode 100644 index 0000000000000000000000000000000000000000..8469d65c73a071be86b9f71dcc18744afaa39ca2 GIT binary patch literal 5240 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 yL0rlQxK~XT@wl)?bujPeidb0000 +

    + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/js/custom-no-hover.js b/src/wp-content/themes/Broadside/js/custom-no-hover.js new file mode 100644 index 0000000..e5f636b --- /dev/null +++ b/src/wp-content/themes/Broadside/js/custom-no-hover.js @@ -0,0 +1,147 @@ +//Lightbox Code +jQuery(document).ready(function($) { + $("a.fancylightbox").fancybox({ + 'titleShow' : true, + 'titlePosition' : 'over', + 'transitionIn' : 'fade', + 'transitionOut' : 'fade', + 'overlayOpacity': '0.5', + 'overlayColor' : '#333' + }); + $("a[rel=portfolio]").fancybox({ + 'titleShow' : true, + 'titlePosition' : 'over', + 'transitionIn' : 'elastic', + 'transitionOut' : 'elastic', + 'overlayOpacity': '0.5', + 'overlayColor' : '#333' + }); + $(".videolightbox").fancybox({ + 'titleShow' : false, + 'transitionIn' : 'fade', + 'transitionOut' : 'fade', + 'type' : 'iframe', + 'overlayOpacity': '0.5', + 'overlayColor' : '#333' + }); + $(".buttonvideolightbox").fancybox({ + 'titleShow' : false, + 'transitionIn' : 'fade', + 'transitionOut' : 'fade', + 'type' : 'iframe', + 'overlayOpacity': '0.5', + 'overlayColor' : '#333' + }); + $(".iframe-popup").fancybox({ + 'width' : '75%', + 'height' : '75%', + 'autoScale' : false, + 'transitionIn' : 'none', + 'transitionOut' : 'none', + 'type' : 'iframe' + }); +}); + +//Transparency Adjustments +jQuery(document).ready(function($) { + $('.transparent').each(function() { + $(this).hover( + function() { + $(this).stop().animate({ opacity: 0.6 }, 400); + }, + function() { + $(this).stop().animate({ opacity: 1.0 }, 400); + }) + }); +}); + + + + +//Hover Menu +jQuery(document).ready(function($) +{ + slide(".sf-menu", 7, 0, 150, .8); +}); + +function slide(navigation_id, pad_out, pad_in, time, multiplier) +{ + // creates the target paths + var list_elements = navigation_id + " li"; + var link_elements = list_elements + " a"; + + // initiates the timer used for the sliding animation + var timer = 0; + + // creates the slide animation for all list elements + jQuery(list_elements).each(function(i) + { + // margin left = - ([width of element] + [total vertical padding of element]) + jQuery(this).css("margin-left","-180px"); + // updates timer + timer = (timer*multiplier + time); + jQuery(this).animate({ marginLeft: "0" }, timer); + jQuery(this).animate({ marginLeft: "0" }, timer); + jQuery(this).animate({ marginLeft: "0" }, timer); + }); + + // creates the hover-slide effect for all link elements + jQuery(link_elements).each(function(i) + { + jQuery(this).hover( + function() + { + jQuery(this).animate({ paddingLeft: pad_out }, 150); + }, + function() + { + jQuery(this).animate({ paddingLeft: pad_in }, 150); + }); + }); +} + + + + +//IE7 Z-Index Fix +jQuery(document).ready(function($) { + if ($.browser.msie && parseInt($.browser.version) == 7) { + var zIndexNumber = 1000; + + $('div').each(function() { + $(this).css('zIndex', zIndexNumber); + zIndexNumber -= 10; + }); + } +}); + + + + +//Full Screen Background Image Load +jQuery(window).load(function() { + + var theWindow = jQuery(window), + $bg = jQuery("#bg"), + aspectRatio = $bg.width() / $bg.height(); + + function resizeBg() { + + if ( (theWindow.width() / theWindow.height()) < aspectRatio ) { + $bg + .removeClass() + .addClass('bgheight'); + } else { + $bg + .removeClass() + .addClass('bgwidth'); + } + + } + + theWindow.resize(function() { + resizeBg(); + }).trigger("resize"); + +}); + diff --git a/src/wp-content/themes/Broadside/js/custom.js b/src/wp-content/themes/Broadside/js/custom.js new file mode 100644 index 0000000..0321b90 --- /dev/null +++ b/src/wp-content/themes/Broadside/js/custom.js @@ -0,0 +1,159 @@ +//Lightbox Code +jQuery(document).ready(function($) { + $("a.fancylightbox").fancybox({ + 'titleShow' : true, + 'titlePosition' : 'over', + 'transitionIn' : 'fade', + 'transitionOut' : 'fade', + 'overlayOpacity': '0.5', + 'overlayColor' : '#333' + }); + $("a[rel=portfolio]").fancybox({ + 'titleShow' : true, + 'titlePosition' : 'over', + 'transitionIn' : 'elastic', + 'transitionOut' : 'elastic', + 'overlayOpacity': '0.5', + 'overlayColor' : '#333' + }); + $(".videolightbox").fancybox({ + 'titleShow' : false, + 'transitionIn' : 'fade', + 'transitionOut' : 'fade', + 'type' : 'iframe', + 'overlayOpacity': '0.5', + 'overlayColor' : '#333' + }); + $(".buttonvideolightbox").fancybox({ + 'titleShow' : false, + 'transitionIn' : 'fade', + 'transitionOut' : 'fade', + 'type' : 'iframe', + 'overlayOpacity': '0.5', + 'overlayColor' : '#333' + }); + $(".iframe-popup").fancybox({ + 'width' : '75%', + 'height' : '75%', + 'autoScale' : false, + 'transitionIn' : 'none', + 'transitionOut' : 'none', + 'type' : 'iframe' + }); +}); + +//Transparency Adjustments +jQuery(document).ready(function($) { + $('.transparent').each(function() { + $(this).hover( + function() { + $(this).stop().animate({ opacity: 0.6 }, 400); + }, + function() { + $(this).stop().animate({ opacity: 1.0 }, 400); + }) + }); +}); + + + +//View/Hide Menu +jQuery(document).ready(function($) { + $(".sf-menu").hide(); + $(".hover-box").hoverIntent( + function(){ + $(".sf-menu").stop(true, true).slideDown('medium'); + }, + function(){ + $(".sf-menu").slideUp('medium'); + } + ); +}); + + +//Hover Menu +jQuery(document).ready(function($) +{ + slide(".sf-menu", 7, 0, 150, .8); +}); + +function slide(navigation_id, pad_out, pad_in, time, multiplier) +{ + // creates the target paths + var list_elements = navigation_id + " li"; + var link_elements = list_elements + " a"; + + // initiates the timer used for the sliding animation + var timer = 0; + + // creates the slide animation for all list elements + jQuery(list_elements).each(function(i) + { + // margin left = - ([width of element] + [total vertical padding of element]) + jQuery(this).css("margin-left","-180px"); + // updates timer + timer = (timer*multiplier + time); + jQuery(this).animate({ marginLeft: "0" }, timer); + jQuery(this).animate({ marginLeft: "0" }, timer); + jQuery(this).animate({ marginLeft: "0" }, timer); + }); + + // creates the hover-slide effect for all link elements + jQuery(link_elements).each(function(i) + { + jQuery(this).hover( + function() + { + jQuery(this).animate({ paddingLeft: pad_out }, 150); + }, + function() + { + jQuery(this).animate({ paddingLeft: pad_in }, 150); + }); + }); +} + + + + +//IE7 Z-Index Fix +jQuery(document).ready(function($) { + if ($.browser.msie && parseInt($.browser.version) == 7) { + var zIndexNumber = 1000; + + $('div').each(function() { + $(this).css('zIndex', zIndexNumber); + zIndexNumber -= 10; + }); + } +}); + + + + +//Full Screen Background Image Load +jQuery(window).load(function() { + + var theWindow = jQuery(window), + $bg = jQuery("#bg"), + aspectRatio = $bg.width() / $bg.height(); + + function resizeBg() { + + if ( (theWindow.width() / theWindow.height()) < aspectRatio ) { + $bg + .removeClass() + .addClass('bgheight'); + } else { + $bg + .removeClass() + .addClass('bgwidth'); + } + + } + + theWindow.resize(function() { + resizeBg(); + }).trigger("resize"); + +}); \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/js/hoverIntent.js b/src/wp-content/themes/Broadside/js/hoverIntent.js new file mode 100644 index 0000000..91da57b --- /dev/null +++ b/src/wp-content/themes/Broadside/js/hoverIntent.js @@ -0,0 +1,84 @@ +(function($){ + /* hoverIntent by Brian Cherne */ + $.fn.hoverIntent = function(f,g) { + // default configuration options + var cfg = { + sensitivity: 7, + interval: 100, + timeout: 0 + }; + // override configuration options with user supplied object + cfg = $.extend(cfg, g ? { over: f, out: g } : f ); + + // instantiate variables + // cX, cY = current X and Y position of mouse, updated by mousemove event + // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval + var cX, cY, pX, pY; + + // A private function for getting mouse position + var track = function(ev) { + cX = ev.pageX; + cY = ev.pageY; + }; + + // A private function for comparing current and previous mouse position + var compare = function(ev,ob) { + ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); + // compare mouse positions to see if they've crossed the threshold + if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) { + $(ob).unbind("mousemove",track); + // set hoverIntent state to true (so mouseOut can be called) + ob.hoverIntent_s = 1; + return cfg.over.apply(ob,[ev]); + } else { + // set previous coordinates for next time + pX = cX; pY = cY; + // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs) + ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval ); + } + }; + + // A private function for delaying the mouseOut function + var delay = function(ev,ob) { + ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); + ob.hoverIntent_s = 0; + return cfg.out.apply(ob,[ev]); + }; + + // A private function for handling mouse 'hovering' + var handleHover = function(e) { + // next three lines copied from jQuery.hover, ignore children onMouseOver/onMouseOut + var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget; + while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } } + if ( p == this ) { return false; } + + // copy objects to be passed into t (required for event object to be passed in IE) + var ev = jQuery.extend({},e); + var ob = this; + + // cancel hoverIntent timer if it exists + if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); } + + // else e.type == "onmouseover" + if (e.type == "mouseover") { + // set "previous" X and Y position based on initial entry point + pX = ev.pageX; pY = ev.pageY; + // update "current" X and Y position based on mousemove + $(ob).bind("mousemove",track); + // start polling interval (self-calling timeout) to compare mouse coordinates over time + if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );} + + // else e.type == "onmouseout" + } else { + // unbind expensive mousemove event + $(ob).unbind("mousemove",track); + // if hoverIntent state is true, then call the mouseOut function after the specified delay + if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );} + } + }; + + // bind the function to the two event listeners + return this.mouseover(handleHover).mouseout(handleHover); + }; + +})(jQuery); \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/js/jquery.carouFredSel-4.1.0-packed.js b/src/wp-content/themes/Broadside/js/jquery.carouFredSel-4.1.0-packed.js new file mode 100644 index 0000000..88b0663 --- /dev/null +++ b/src/wp-content/themes/Broadside/js/jquery.carouFredSel-4.1.0-packed.js @@ -0,0 +1,15 @@ +/* + * jQuery carouFredSel 4.1.0 + * Demo's and documentation: + * caroufredsel.frebsite.nl + * + * Copyright (c) 2010 Fred Heusschen + * www.frebsite.nl + * + * Dual licensed under the MIT and GPL licenses. + * http://en.wikipedia.org/wiki/MIT_License + * http://en.wikipedia.org/wiki/GNU_General_Public_License + */ + + +eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(z($){$.1n.1o=z(o){q(S.W==0)A 16(\'4d 4e 2W.\');q(S.W>1){A S.1p(z(){$(S).1o(o)})}B l=S,$19=l[0],$r=$(S);l.2X=z(o,a){q(y o!=\'1a\')o={};q(y o.U==\'J\'){q(o.U<=2Y)o.U={u:o.U};F o.U={13:o.U}}F{q(y o.U==\'1d\')o.U={Y:o.U}}q(y o.u==\'J\')o.u={C:o.u};F q(y o.u==\'1d\')o.u={C:o.u,1M:o.u,24:o.u};q(a){25=$.1N(G,{},$.1n.1o.2Z,o)}4=$.1N(G,{},$.1n.1o.2Z,o);4.26=P;1v=(4.1v==\'3l\'||4.1v==\'1w\')?\'M\':\'N\';q(4.1v==\'3m\'||4.1v==\'1w\'){4.w=[\'1M\',\'3n\',\'3o\',\'24\',\'3p\',\'3q\',\'1w\',\'2m\',\'1O\',0,1,2,3]}F{4.w=[\'24\',\'3p\',\'3q\',\'1M\',\'3n\',\'3o\',\'2m\',\'1w\',\'1P\',3,2,1,0]}B b=K($r);B c=30(b,4,5,P);q(4[4.w[3]]==\'E\'){4[4.w[3]]=c;4.u[4.w[3]]=c}q(!4.u[4.w[3]]){4.u[4.w[3]]=(31(b,4,5))?\'X\':b[4.w[5]](G)}q(!4[4.w[3]]){4[4.w[3]]=4.u[4.w[3]]}q(!4.u[4.w[0]]){4.u[4.w[0]]=(31(b,4,2))?\'X\':b[4.w[2]](G)}q(!4.u.C&&4.u[4.w[0]]==\'X\'){4.u.C=\'X\'}q(!4.u.C&&!4[4.w[0]]){q(4.u[4.w[0]]!=\'X\'){4[4.w[0]]=32(n.1Q(),4,1)}}q(!4.u.C){4.u.C=(y 4[4.w[0]]==\'J\'&&4.u[4.w[0]]!=\'X\')?1B.3r(4[4.w[0]]/4.u[4.w[0]]):\'X\'}q(!4[4.w[0]]){4[4.w[0]]=(4.u.C!=\'X\'&&4.u[4.w[0]]!=\'X\')?4.u.C*4.u[4.w[0]]:\'X\'}q(4.u.C==\'X\'){4.26=G;4.33=(4[4.w[0]]==\'X\')?32(n.1Q(),4,1):4[4.w[0]];q(4.H===P||4.H===0){4[4.w[0]]=\'X\'}4.u.C=27($r,4,0)}F{q(4.H===P){4.H=0}}q(y 4.H==\'1b\'){4.H=(4[4.w[0]]==\'X\')?0:\'E\'}4.u.1C=4.u.C;4.R=P;q(4.H==\'E\'){4.H=[0,0,0,0];q(4[4.w[0]]!=\'X\'){4.R=\'E\';B p=2n(3s($r,4),4);4.H[4.w[10]]=p[0];4.H[4.w[12]]=p[0]}q(4[4.w[3]]!=\'X\'){B p=(4[4.w[3]]-c)/2;q(p<0)p=0;4.H[4.w[9]]=p;4.H[4.w[11]]=p}}F{4.H=3t(4.H);4.R=(4.H[0]==0&&4.H[1]==0&&4.H[2]==0&&4.H[3]==0)?P:G}q(y 4.u.2o!=\'J\')4.u.2o=(4.26)?1:4.u.C;q(y 4.U.u!=\'J\')4.U.u=(4.26)?\'X\':4.u.C;q(y 4.U.13!=\'J\')4.U.13=4f;4.E=28(4.E,P,G);4.N=28(4.N);4.M=28(4.M);4.V=28(4.V,G);4.E=$.1N(G,{},4.U,4.E);4.N=$.1N(G,{},4.U,4.N);4.M=$.1N(G,{},4.U,4.M);4.V=$.1N(G,{},4.U,4.V);q(y 4.V.2p!=\'14\')4.V.2p=P;q(y 4.V.34!=\'z\')4.V.34=$.1n.1o.3u;q(y 4.E.Z!=\'14\')4.E.Z=G;q(y 4.E.29!=\'14\')4.E.29=G;q(y 4.E.35!=\'J\')4.E.35=0;q(y 4.E.1D!=\'J\')4.E.1D=(4.E.13<10)?4g:4.E.13*5};l.3v=z(){q($r.L(\'1E\')==\'3w\'||$r.L(\'1E\')==\'4h\'){16(\'4i 4j-4k "1E" 4l 4m "4n" 4o "3x".\')}n.L({1E:\'3x\',4p:\'3y\',2a:$r.L(\'2a\'),1O:$r.L(\'1O\'),1P:$r.L(\'1P\'),2b:$r.L(\'2b\')});$r.17(\'3z\',{1M:$r.L(\'1M\'),24:$r.L(\'24\'),2a:$r.L(\'2a\'),1O:$r.L(\'1O\'),1P:$r.L(\'1P\'),2b:$r.L(\'2b\'),\'36\':$r.L(\'36\'),1E:$r.L(\'1E\'),2m:$r.L(\'2m\'),1w:$r.L(\'1w\')}).L({2a:0,1O:0,1P:0,2b:0,\'36\':\'4q\',1E:\'3w\'});q(4.R){K($r).1p(z(){B m=1x($(S).L(4.w[8]));q(1F(m))m=0;$(S).17(\'1g\',m)})}2q(4,I)};l.3A=z(){l.3a();$r.15(\'1q\',z(e,g){q(y g!=\'14\')g=P;q(g)2c=G;q(2r!=1R)4r(2r);q(2s!=1R)3B(2s);q(2t!=1R)3B(2t);B a=4.E.1D-1S,1G=2u-1B.3b(a*2u/4.E.1D);q(1G!=0){q(4.E.3C)4.E.3C.1c($19,1G,a)}});$r.15(\'Z\',z(e,d,f,g){$r.D(\'1q\');q(!4.E.Z)A;q(y g!=\'14\'){q(y f==\'14\')g=f;F q(y d==\'14\')g=d;F g=P}q(y f!=\'J\'){q(y d==\'J\')f=d;F f=0}q(d!=\'N\'&&d!=\'M\')d=1v;q(g)2c=P;q(2c)A;B a=4.E.1D-1S,3D=a+f;1G=2u-1B.3b(a*2u/4.E.1D);2r=3E(z(){q($r.1r(\':3c\')){$r.D(\'Z\',d)}F{1S=0;$r.D(d,4.E)}},3D);q(4.E.1T===\'4s\'){2s=4t(z(){1S+=2Y},2Y)}q(1G==0){q(4.E.3F)4.E.3F.1c($19,1G,a)}q(4.E.3G){2t=3E(z(){4.E.3G.1c($19,1G,a)},f)}});$r.15(\'N M\',z(e){q(2c||$r.1r(\':3c\')||$r.1r(\':3y\')){e.3H();A}q(4.u.2o>=I){16(\'1U 3I u: 2v 2w\');e.3H();A}1S=0});q(4.26){$r.15(\'N\',z(e,a,b){q(y a==\'J\')b=a;q(y a!=\'1a\')a=4.N;q(y b!=\'J\')b=(y a.u==\'J\')?a.u:4.u.C;2d=b;4.u.1C=4.u.C;B c=K($r);q(4.R){1e(c,4)}4.u.C=3J($r,4,2d);b=4.u.C-4.u.1C+2d;q(b<=0){4.u.C=27($r,4,I-2d);b=2d}q(4.R){1e(c,4,G)}$r.D(\'2x\',[a,b])});$r.15(\'M\',z(e,a,b){q(y a==\'J\')b=a;q(y a!=\'1a\')a=4.M;q(y b!=\'J\')b=(y a.u==\'J\')?a.u:4.u.C;4.u.1C=4.u.C;B c=K($r);1e(c,4);4.u.C=27($r,4,b);q(4.u.1C-b>=4.u.C){4.u.C=27($r,4,++b)}1e(c,4,G);$r.D(\'2y\',[a,b])})}F{$r.15(\'N\',z(e,a,b){$r.D(\'2x\',[a,b])});$r.15(\'M\',z(e,a,b){$r.D(\'2y\',[a,b])})}$r.15(\'2x\',z(e,b,c){q(y b==\'J\')c=b;q(y b!=\'1a\')b=4.N;q(y c!=\'J\')c=(y b.u==\'J\')?b.u:4.u.C;q(y c!=\'J\')A 16(\'1U a 2z J: 2v 2w\');q(b.2A&&!b.2A.1c($19))A;q(!4.1H){B d=I-O;q(d-c<0){c=d}q(O==0){c=0}}O+=c;q(O>=I)O-=I;q(!4.1H){q(O==0&&c!=0&&b.2B)b.2B.1c($19);q(4.2C){q(c==0){$r.D(\'M\',I-4.u.C);A}}F{q(O==0&&4.N.T)4.N.T.2D(\'2e\');q(4.M.T)4.M.T.3d(\'2e\')}}q(c==0)A;K($r,\':2f(\'+(I-c-1)+\')\').4u($r);q(I<4.u.C+c)K($r,\':1h(\'+((4.u.C+c)-I)+\')\').3K(G).3e($r);B f=3L($r,4,c),1j=3f($r,4),1I=K($r,\':1k(\'+(c-1)+\')\'),1l=f.1i(\':1V\'),1s=1j.1i(\':1V\');q(4.R){1e(1l,4);1e(1s,4)}q(4.R==\'E\'){B p=2n(3f($r,4,c),4)}B g=1W(K($r,\':1h(\'+c+\')\'),4,0),1y=2E(2F(1j,4,G),4,!4.R);q(4.R){1e(1l,4,4.H[4.w[10]]);1e(1I,4,4.H[4.w[12]])}q(4.R==\'E\'){4.H[4.w[9]]=p[1];4.H[4.w[10]]=p[0];4.H[4.w[11]]=p[1];4.H[4.w[12]]=p[0]}B h={},3g={},1X={},1Y={},Q=b.13;q(Q==\'E\')Q=4.U.13/4.U.u*c;F q(Q<=0)Q=0;F q(Q<10)Q=g/Q;q(b.2G)b.2G.1c($19,f,1j,1y,Q);q(4.R){B i=4.H[4.w[12]];1X[4.w[8]]=1I.17(\'1g\');3g[4.w[8]]=1s.17(\'1g\')+4.H[4.w[10]];1Y[4.w[8]]=1l.17(\'1g\');1I.1J().1t(1X,{13:Q,Y:b.Y});1s.1J().1t(3g,{13:Q,Y:b.Y});1l.1J().1t(1Y,{13:Q,Y:b.Y})}F{B i=0}h[4.w[6]]=i;q(4[4.w[0]]==\'X\'||4[4.w[3]]==\'X\'){n.1J().1t(1y,{13:Q,Y:b.Y})}B j=c;$r.L(4.w[6],-g);$r.1t(h,{13:Q,Y:b.Y,3M:z(){q(b.2H)b.2H.1c($19,f,1j,1y);q(I<4.u.C+c){K($r,\':2f(\'+(I-1)+\')\').2g()}B a=K($r,\':1k(\'+(4.u.C+c-1)+\')\');q(4.R)a.L(4.w[8],a.17(\'1g\'))}});$r.D(\'1K\').D(\'Z\',Q)});$r.15(\'2y\',z(e,c,d){q(y c==\'J\')d=c;q(y c!=\'1a\')c=4.M;q(y d!=\'J\')d=(y c.u==\'J\')?c.u:4.u.C;q(y d!=\'J\')A 16(\'1U a 2z J: 2v 2w\');q(c.2A&&!c.2A.1c($19))A;q(!4.1H){q(O==0){q(d>I-4.u.C){d=I-4.u.C}}F{q(O-d<4.u.C){d=O-4.u.C}}}O-=d;q(O<0)O+=I;q(!4.1H){q(O==4.u.C&&d!=0&&c.2B)c.2B.1c($19);q(4.2C){q(d==0){$r.D(\'N\',I-4.u.C);A}}F{q(O==4.u.C&&4.M.T)4.M.T.2D(\'2e\');q(4.N.T)4.N.T.3d(\'2e\')}}q(d==0)A;q(I<4.u.C+d)K($r,\':1h(\'+((4.u.C+d)-I)+\')\').3K(G).3e($r);B f=3N($r,4),1j=3h($r,4,d),1I=f.1i(\':1k(\'+(d-1)+\')\'),1l=f.1i(\':1V\'),1s=1j.1i(\':1V\');q(4.R){1e(1l,4);1e(1s,4)}q(4.R==\'E\'){B p=2n(3h($r,4,d),4)}B g=1W(K($r,\':1h(\'+d+\')\'),4,0),1y=2E(2F(1j,4,G),4,!4.R);q(4.R){1e(1l,4,4.H[4.w[10]]);1e(1s,4,4.H[4.w[10]])}q(4.R==\'E\'){4.H[4.w[9]]=p[1];4.H[4.w[10]]=p[0];4.H[4.w[11]]=p[1];4.H[4.w[12]]=p[0]}B h={},1Y={},1X={},Q=c.13;q(Q==\'E\')Q=4.U.13/4.U.u*d;F q(Q<=0)Q=0;F q(Q<10)Q=g/Q;q(c.2G)c.2G.1c($19,f,1j,1y,Q);q(4.R){1Y[4.w[8]]=1l.17(\'1g\');1X[4.w[8]]=1I.17(\'1g\')+4.H[4.w[12]];1s.L(4.w[8],1s.17(\'1g\')+4.H[4.w[10]]);1l.1J().1t(1Y,{13:Q,Y:c.Y});1I.1J().1t(1X,{13:Q,Y:c.Y})}h[4.w[6]]=-g;q(4[4.w[0]]==\'X\'||4[4.w[3]]==\'X\'){n.1J().1t(1y,{13:Q,Y:c.Y})}B i=d;$r.1t(h,{13:Q,Y:c.Y,3M:z(){q(c.2H)c.2H.1c($19,f,1j,1y);q(I<4.u.C+i){K($r,\':2f(\'+(I-1)+\')\').2g()}B a=(4.R)?4.H[4.w[12]]:0;$r.L(4.w[6],a);B b=K($r,\':1h(\'+i+\')\').3e($r).1i(\':1V\');q(4.R)b.L(4.w[8],b.17(\'1g\'))}});$r.D(\'1K\').D(\'Z\',Q)});$r.15(\'1Z\',z(e,a,b,c,d){q($r.1r(\':3c\'))A;a=2h(a,b,c,O,I,$r);q(a==0)A;q(y d!=\'1a\')d=P;q(4.1H){q(aa)$r.D(\'M\',[d,a]);F $r.D(\'N\',[d,I-a])}});$r.15(\'3O\',z(e,a,b,c,d){q(y a==\'1a\'&&y a.2i==\'1b\')a=$(a);q(y a==\'1d\')a=$(a);q(y a!=\'1a\'||y a.2i==\'1b\'||a.W==0)A 16(\'1U a 2z 1a.\');q(y b==\'1b\'||b==\'3P\'){$r.3i(a)}F{b=2h(b,d,c,O,I,$r);B f=K($r,\':1k(\'+b+\')\');q(4.R){a.1p(z(){B m=1x($(S).L(4.w[8]));q(1F(m))m=0;$(S).17(\'1g\',m)})}q(f.W){q(b=I)O-=I;f.4v(a)}F{$r.3i(a)}}I=K($r).W;$r.D(\'20\');2j($r,4);2q(4,I);$r.D(\'1K\',G)});$r.15(\'3Q\',z(e,a,b,c){q(y a==\'1b\'||a==\'3P\'){K($r,\':1V\').2g()}F{a=2h(a,c,b,O,I,$r);B d=K($r,\':1k(\'+a+\')\');q(d.W){q(a0&&K($r).3T($(h))!=-1){$(S).18(\'21\').21(z(e){e.1u();$r.D(\'1Z\',h)})}})});$r.15(\'2I\',z(e,a){q(O==0)B b=0;F B b=I-O;q(y a==\'z\')a.1c($19,b)});$r.15(\'22\',z(e,a,b){q(y a==\'z\'){a.1c($19,4)}F q(y b==\'z\'){B c=3U(\'4.\'+a);q(y c==\'1b\')c=\'\';b.1c($19,c)}F q(y a!=\'1b\'&&y b!=\'1b\'){3U(\'25.\'+a+\' = b\');l.2X(25);2j($r,4)}});$r.15(\'1L\',z(e){$r.D(\'1q\').L($r.17(\'3z\'));l.3a();n.4y($r)});$r.15(\'1K\',z(e,b){q(!4.V.1f)A;q(y b==\'14\'&&b){K(4.V.1f).2g();2k(B a=0;a<1B.3b(I/4.u.C);a++){B i=K($r,\':1k(\'+2h(a*4.u.C,0,G,O,I,$r)+\')\');4.V.1f.3i(4.V.34(a+1,i))}K(4.V.1f).18(\'21\').1p(z(a){$(S).21(z(e){e.1u();$r.D(\'1Z\',[a*4.u.C,0,G,4.V])})})}B c=(O==0)?0:1B.4z((I-O)/4.u.C);K(4.V.1f).3d(\'2W\').1i(\':1k(\'+c+\')\').2D(\'2W\')})};l.3a=z(){$r.18(\'1q\').18(\'Z\').18(\'N\').18(\'M\').18(\'2x\').18(\'2y\').18(\'1Z\').18(\'3O\').18(\'3Q\').18(\'20\').18(\'1L\').18(\'1K\').18(\'2I\').18(\'22\')};l.3V=z(){q(4.E.1T&&4.E.Z){n.2J(z(){$r.D(\'1q\')},z(){$r.D(\'Z\')})}q(4.N.T){4.N.T.21(z(e){e.1u();$r.D(\'N\')});q(4.N.1T&&4.E.Z){4.N.T.2J(z(){$r.D(\'1q\')},z(){$r.D(\'Z\')})}q(!4.1H&&!4.2C){4.N.T.2D(\'2e\')}}q($.1n.1m){q(4.N.1m){n.1m(z(e,a){q(a>0){e.1u();2K=(y 4.N.1m==\'J\')?4.N.1m:\'\';$r.D(\'N\',2K)}})}q(4.M.1m){n.1m(z(e,a){q(a<0){e.1u();2K=(y 4.M.1m==\'J\')?4.M.1m:\'\';$r.D(\'M\',2K)}})}}q(4.M.T){4.M.T.21(z(e){e.1u();$r.D(\'M\')});q(4.M.1T&&4.E.Z){4.M.T.2J(z(){$r.D(\'1q\')},z(){$r.D(\'Z\')})}}q(4.V.1f){$r.D(\'1K\',G);q(4.V.1T&&4.E.Z){4.V.1f.2J(z(){$r.D(\'1q\')},z(){$r.D(\'Z\')})}}q(4.M.1z||4.N.1z){$(3W).3X(z(e){B k=e.3Y;q(k==4.M.1z){e.1u();$r.D(\'M\')}q(k==4.N.1z){e.1u();$r.D(\'N\')}})}q(4.V.2p){$(3W).3X(z(e){B k=e.3Y;q(k>=49&&k<4A){k=(k-49)*4.u.C;q(k<=I){e.1u();$r.D(\'1Z\',[k,0,G,4.V])}}})}q(4.E.Z){$r.D(\'Z\',4.E.35);q($.1n.29&&4.E.29){$r.29(\'1q\',\'Z\')}}};l.22=z(a,b){16(\'2L "22" 2M 2N 1r 2O, 2P 2Q "22" 2R 2S.\');B c=P;B d=z(a){c=a};q(!a)a=d;q(!b)b=d;$r.D(\'22\',[a,b]);A c};l.3Z=z(){16(\'2L "3Z" 2M 2N 1r 2O, 2P 2Q "2I" 2R 2S.\');B b=P;$r.D(\'2I\',z(a){b=a});A b};l.1L=z(){16(\'2L "1L" 2M 2N 1r 2O, 2P 2Q "1L" 2R 2S.\');$r.D(\'1L\');A l};l.41=z(a,b){16(\'2L "41" 2M 2N 1r 2O, 2P 2Q "20" 2R 2S.\');$r.D(\'20\',[a,b]);A l};q($r.1Q().1r(\'.42\')){B n=$r.1Q();$r.D(\'1L\')}B n=$r.4B(\'<4C 4D="42" />\').1Q(),4={},25=o,I=K($r).W,O=0,2r=1R,2s=1R,2t=1R,1S=0,2c=P,1v=\'M\';l.2X(25,G);l.3v();l.3A();l.3V();$r.D(\'20\');2j($r,4,P);q(4.u.1A!==0&&4.u.1A!==P){B s=4.u.1A;q(s===G){s=2T.4E.3S;q(!s.W)s=0}q(s===\'43\'){s=1B.3r(1B.43()*I)}$r.D(\'1Z\',[s,0,G,{13:0}])}A S};$.1n.1o.2Z={2C:G,1H:G,1v:\'1w\',u:{1A:0},U:{Y:\'4F\',1T:P,1m:P}};$.1n.1o.3u=z(a,b){A\'<44>\'+a+\'\'};z 2q(o,t){q(o.u.2o>=t){16(\'1U 3I u: 2v 2w\');B f=\'4H\'}F{B f=\'4I\'}q(o.N.T)o.N.T[f]();q(o.M.T)o.M.T[f]();q(o.V.1f)o.V.1f[f]()}z 3j(k){q(k==\'3m\')A 39;q(k==\'1w\')A 37;q(k==\'3l\')A 38;q(k==\'4J\')A 40;A-1}z 28(a,b,c){q(y b!=\'14\')b=P;q(y c!=\'14\')c=P;q(y a==\'1b\')a={};q(y a==\'1d\'){B d=3j(a);q(d==-1)a=$(a);F a=d}q(b){q(y a==\'14\')a={2p:a};q(y a.2i!=\'1b\')a={1f:a};q(y a.1f==\'1d\')a.1f=$(a.1f)}F q(c){q(y a==\'14\')a={Z:a};q(y a==\'J\')a={1D:a};q(y a.45!=\'1a\')a.45={}}F{q(y a.2i!=\'1b\')a={T:a};q(y a==\'J\')a={1z:a};q(y a.T==\'1d\')a.T=$(a.T);q(y a.1z==\'1d\')a.1z=3j(a.1z)}A a}z 2h(a,b,c,d,e,f){q(y a==\'1d\'){q(1F(a))a=$(a);F a=1x(a)}q(y a==\'1a\'){q(y a.2i==\'1b\')a=$(a);a=K(f).3T(a);q(a==-1)a=0;q(y c!=\'14\')c=P}F{q(y c!=\'14\')c=G}q(1F(a))a=0;F a=1x(a);q(1F(b))b=0;F b=1x(b);q(c){a+=d}a+=b;q(e>0){46(a>=e){a-=e}46(a<0){a+=e}}A a}z K(c,f){q(y f!=\'1d\')f=\'\';A $(\'> *\'+f,c)}z 3s(c,o){A K(c,\':1h(\'+o.u.C+\')\')}z 3L(c,o,n){A K(c,\':1h(\'+(o.u.1C+n)+\'):2f(\'+(n-1)+\')\')}z 3f(c,o){A K(c,\':1h(\'+o.u.C+\')\')}z 3N(c,o){A K(c,\':1h(\'+o.u.1C+\')\')}z 3h(c,o,n){A K(c,\':1h(\'+(o.u.C+n)+\'):2f(\'+(n-1)+\')\')}z 1e(i,o,m){B x=(y m==\'14\')?m:P;q(y m!=\'J\')m=0;i.1p(z(){B t=1x($(S).L(o.w[8]));q(1F(t))t=0;$(S).17(\'47\',t);$(S).L(o.w[8],((x)?$(S).17(\'47\'):m+$(S).17(\'1g\')))})}z 2F(i,o,a){48=1W(i,o,0,a);4a=2l(i,o,3,a);A[48,4a]}z 2l(i,o,a,b){q(y b!=\'14\')b=P;q(y o[o.w[a]]==\'J\'&&b)A o[o.w[a]];q(y o.u[o.w[a]]==\'J\')A o.u[o.w[a]];A 30(i,o,a+2)}z 30(i,o,a){B s=0;i.1p(z(){B m=$(S)[o.w[a]](G);q(s-1)?[\'4M\',\'4N\']:[\'4O\',\'4P\'];2k(a=0;a<3k.W;a++){B m=1x(b.L(3k[a]));q(1F(m))m=0;d-=m}A d}z 1W(i,o,a,b){q(y b!=\'14\')b=P;q(y o[o.w[a]]==\'J\'&&b)A o[o.w[a]];q(y o.u[o.w[a]]==\'J\')A o.u[o.w[a]]*i.W;A 4b(i,o,a+2)}z 4b(i,o,a){B s=0;i.1p(z(){s+=$(S)[o.w[a]](G)});A s}z 31(i,o,a){B s=P,v=P;i.1p(z(){c=$(S)[o.w[a]]();q(s===P)s=c;F q(s!=c)v=G});A v}z 2E(a,o,p){q(y p!=\'14\')p=G;B b=(o.R&&p)?o.H:[0,0,0,0];B c={};c[o.w[0]]=a[0]+b[1]+b[3];c[o.w[3]]=a[1]+b[0]+b[2];A c}z 2j(a,o,p){B b=a.1Q(),$i=K(a),$l=$i.1i(\':1k(\'+(o.u.C-1)+\')\');b.L(2E(2F($i.1i(\':1h(\'+o.u.C+\')\'),o,G),o,p));q(o.R){$l.L(o.w[8],$l.17(\'1g\')+o.H[o.w[10]]);a.L(o.w[7],o.H[o.w[9]]);a.L(o.w[6],o.H[o.w[12]])}a.L(o.w[0],1W($i,o,0)*2);a.L(o.w[3],2l($i,o,3))}z 3t(p){q(y p==\'1b\')A[0,0,0,0];q(y p==\'J\')A[p,p,p,p];F q(y p==\'1d\')p=p.4c(\'4Q\').4R(\'\').4c(\' \');q(y p!=\'1a\'){A[0,0,0,0]}2k(i 4S p){p[i]=1x(p[i])}4T(p.W){2U 0:A[0,0,0,0];2U 1:A[p[0],p[0],p[0],p[0]];2U 2:A[p[0],p[1],p[0],p[1]];2U 3:A[p[0],p[1],p[2],p[1]];4U:A[p[0],p[1],p[2],p[3]]}}z 2n(a,o){B b=(y o[o.w[3]]==\'J\')?o[o.w[3]]:2l(a,o,3);A[(o[o.w[0]]-1W(a,o,0))/2,(b-2l(a,o,3))/2]}z 3J(b,o,c){B d=K(b),23=0,1A=o.u.C-c-1,x=0;q(1A<0)1A=d.W-1;2k(B a=1A;a>=0;a--){23+=d.1i(\':1k(\'+a+\')\')[o.w[2]](G);q(23>o.33)A x;q(a==0)a=d.W;x++}}z 27(b,o,c){B d=K(b),23=0,x=0;2k(B a=c;a<=d.W-1;a++){23+=d.1i(\':1k(\'+a+\')\')[o.w[2]](G);q(23>o.33)A x;q(a==d.W-1)a=-1;x++}}z 16(m){q(y m==\'1d\')m=\'1o: \'+m;q(2T.2V&&2T.2V.16)2T.2V.16(m);F 4V{2V.16(m)}4W(4X){}A P}$.1n.3R=z(o){A S.1o(o)}})(4Y);',62,309,'||||opts||||||||||||||||||||||if|cfs|||items||dimensions||typeof|function|return|var|visible|trigger|auto|else|true|padding|totalItems|number|getItems|css|next|prev|firstItem|false|a_dur|usePadding|this|button|scroll|pagination|length|variable|easing|play||||duration|boolean|bind|log|data|unbind|tt0|object|undefined|call|string|resetMargin|container|cfs_origCssMargin|lt|filter|c_new|eq|l_old|mousewheel|fn|carouFredSel|each|pause|is|l_new|animate|preventDefault|direction|left|parseInt|w_siz|key|start|Math|oldVisible|pauseDuration|position|isNaN|perc|circular|l_cur|stop|updatePageStatus|destroy|width|extend|marginRight|marginBottom|parent|null|pauseTimePassed|pauseOnHover|Not|last|getTotalSize|a_cur|a_old|slideTo|linkAnchors|click|configuration|total|height|opts_orig|variableVisible|getVisibleItemsNext|getNaviObject|nap|marginTop|marginLeft|pausedGlobal|oI|disabled|gt|remove|getItemIndex|jquery|setSizes|for|getLargestSize|top|getAutoPadding|minimum|keys|showNavi|autoTimeout|autoInterval|timerInterval|100|not|scrolling|slidePrev|slideNext|valid|conditions|onEnd|infinite|addClass|mapWrapperSizes|getSizes|onBefore|onAfter|currentPosition|hover|num|The|public|method|deprecated|use|the|custom|event|window|case|console|selected|init|50|defaults|getTrueLargestSize|hasVariableSizes|getTrueInnerSize|maxDimention|anchorBuilder|delay|float||||unbind_events|ceil|animated|removeClass|appendTo|getNewItemsPrev|a_new|getNewItemsNext|append|getKeyCode|arr|up|right|innerWidth|outerWidth|innerHeight|outerHeight|floor|getCurrentItems|getPadding|pageAnchorBuilder|build|absolute|relative|hidden|cfs_origCss|bind_events|clearInterval|onPausePause|dur2|setTimeout|onPauseEnd|onPauseStart|stopImmediatePropagation|enough|getVisibleItemsPrev|clone|getOldItemsPrev|complete|getOldItemsNext|insertItem|end|removeItem|caroufredsel|hash|index|eval|bind_buttons|document|keyup|keyCode|current_position||link_anchors|caroufredsel_wrapper|random|span|timer|while|cfs_tempCssMargin|s1||s2|getTotalSizeVariable|split|No|element|500|2500|fixed|Carousels|CSS|attribute|should|be|static|or|overflow|none|clearTimeout|resume|setInterval|prependTo|before|body|find|replaceWith|round|58|wrap|div|class|location|swing|href|hide|show|down|toLowerCase|indexOf|paddingLeft|paddingRight|paddingTop|paddingBottom|px|join|in|switch|default|try|catch|err|jQuery'.split('|'),0,{})) \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/js/jquery.fancybox.js b/src/wp-content/themes/Broadside/js/jquery.fancybox.js new file mode 100644 index 0000000..1373ed0 --- /dev/null +++ b/src/wp-content/themes/Broadside/js/jquery.fancybox.js @@ -0,0 +1,46 @@ +/* + * FancyBox - jQuery Plugin + * Simple and fancy lightbox alternative + * + * Examples and documentation at: http://fancybox.net + * + * Copyright (c) 2008 - 2010 Janis Skarnelis + * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. + * + * Version: 1.3.4 (11/11/2010) + * Requires: jQuery v1.3+ + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ + +;(function(b){var m,t,u,f,D,j,E,n,z,A,q=0,e={},o=[],p=0,d={},l=[],G=null,v=new Image,J=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,W=/[^\.]\.(swf)\s*$/i,K,L=1,y=0,s="",r,i,h=false,B=b.extend(b("
    ")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('

    The requested content cannot be loaded.
    Please try again later.

    '); +F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)|| +c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick= +false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('
    ').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel", +function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b("").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C='';P="";b.each(e.swf,function(x,H){C+='';P+=" "+x+'="'+H+'"'});C+='";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win== +"function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('
    ');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor, +opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length? +d.titlePosition=="float"?'
    '+s+'
    ':'
    '+s+"
    ":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding}); +y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height== +i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents()); +f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode== +37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto"); +s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('').appendTo(j); +f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c); +j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type== +"image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"), +10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)}; +b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k= +0,C=a.length;ko.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+ +1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h= +true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1; +b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5- +d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('
    '),t=b('
    '),u=b('
    '),f=b('
    '));D=b('
    ').append('
    ').appendTo(f); +D.append(j=b('
    '),E=b(''),n=b('
    '),z=b(''),A=b(''));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()}); +b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('').prependTo(D)}}}; +b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.7,overlayColor:"#777",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing", +easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery); \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/js/jquery.jscrollpane.min.js b/src/wp-content/themes/Broadside/js/jquery.jscrollpane.min.js new file mode 100644 index 0000000..5742335 --- /dev/null +++ b/src/wp-content/themes/Broadside/js/jquery.jscrollpane.min.js @@ -0,0 +1,11 @@ +/* + * jScrollPane - v2.0.0beta10 - 2011-04-17 + * http://jscrollpane.kelvinluck.com/ + * + * Copyright (c) 2010 Kelvin Luck + * Dual licensed under the MIT and GPL licenses. + */ +(function(b,a,c){b.fn.jScrollPane=function(f){function d(E,P){var aA,R=this,Z,al,w,an,U,aa,z,r,aB,aG,aw,j,J,i,k,ab,V,ar,Y,u,B,at,ag,ao,H,m,av,az,y,ax,aJ,g,M,ak=true,Q=true,aI=false,l=false,aq=E.clone(false,false).empty(),ad=b.fn.mwheelIntent?"mwheelIntent.jsp":"mousewheel.jsp";aJ=E.css("paddingTop")+" "+E.css("paddingRight")+" "+E.css("paddingBottom")+" "+E.css("paddingLeft");g=(parseInt(E.css("paddingLeft"),10)||0)+(parseInt(E.css("paddingRight"),10)||0);function au(aS){var aN,aP,aO,aL,aK,aR,aQ=false,aM=false;aA=aS;if(Z===c){aK=E.scrollTop();aR=E.scrollLeft();E.css({overflow:"hidden",padding:0});al=E.innerWidth()+g;w=E.innerHeight();E.width(al);Z=b('
    ').css("padding",aJ).append(E.children());an=b('
    ').css({width:al+"px",height:w+"px"}).append(Z).appendTo(E)}else{E.css("width","");aQ=aA.stickToBottom&&L();aM=aA.stickToRight&&C();aL=E.innerWidth()+g!=al||E.outerHeight()!=w;if(aL){al=E.innerWidth()+g;w=E.innerHeight();an.css({width:al+"px",height:w+"px"})}if(!aL&&M==U&&Z.outerHeight()==aa){E.width(al);return}M=U;Z.css("width","");E.width(al);an.find(">.jspVerticalBar,>.jspHorizontalBar").remove().end()}Z.css("overflow","auto");if(aS.contentWidth){U=aS.contentWidth}else{U=Z[0].scrollWidth}aa=Z[0].scrollHeight;Z.css("overflow","");z=U/al;r=aa/w;aB=r>1;aG=z>1;if(!(aG||aB)){E.removeClass("jspScrollable");Z.css({top:0,width:an.width()-g});o();F();S();x();aj()}else{E.addClass("jspScrollable");aN=aA.maintainPosition&&(J||ab);if(aN){aP=aE();aO=aC()}aH();A();G();if(aN){O(aM?(U-al):aP,false);N(aQ?(aa-w):aO,false)}K();ah();ap();if(aA.enableKeyboardNavigation){T()}if(aA.clickOnTrack){q()}D();if(aA.hijackInternalLinks){n()}}if(aA.autoReinitialise&&!ax){ax=setInterval(function(){au(aA)},aA.autoReinitialiseDelay)}else{if(!aA.autoReinitialise&&ax){clearInterval(ax)}}aK&&E.scrollTop(0)&&N(aK,false);aR&&E.scrollLeft(0)&&O(aR,false);E.trigger("jsp-initialised",[aG||aB])}function aH(){if(aB){an.append(b('
    ').append(b('
    '),b('
    ').append(b('
    ').append(b('
    '),b('
    '))),b('
    ')));V=an.find(">.jspVerticalBar");ar=V.find(">.jspTrack");aw=ar.find(">.jspDrag");if(aA.showArrows){at=b('').bind("mousedown.jsp",aF(0,-1)).bind("click.jsp",aD);ag=b('').bind("mousedown.jsp",aF(0,1)).bind("click.jsp",aD);if(aA.arrowScrollOnHover){at.bind("mouseover.jsp",aF(0,-1,at));ag.bind("mouseover.jsp",aF(0,1,ag))}am(ar,aA.verticalArrowPositions,at,ag)}u=w;an.find(">.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow").each(function(){u-=b(this).outerHeight()});aw.hover(function(){aw.addClass("jspHover")},function(){aw.removeClass("jspHover")}).bind("mousedown.jsp",function(aK){b("html").bind("dragstart.jsp selectstart.jsp",aD);aw.addClass("jspActive");var s=aK.pageY-aw.position().top;b("html").bind("mousemove.jsp",function(aL){W(aL.pageY-s,false)}).bind("mouseup.jsp mouseleave.jsp",ay);return false});p()}}function p(){ar.height(u+"px");J=0;Y=aA.verticalGutter+ar.outerWidth();Z.width(al-Y-g);try{if(V.position().left===0){Z.css("margin-left",Y+"px")}}catch(s){}}function A(){if(aG){an.append(b('
    ').append(b('
    '),b('
    ').append(b('
    ').append(b('
    '),b('
    '))),b('
    ')));ao=an.find(">.jspHorizontalBar");H=ao.find(">.jspTrack");i=H.find(">.jspDrag");if(aA.showArrows){az=b('').bind("mousedown.jsp",aF(-1,0)).bind("click.jsp",aD);y=b('').bind("mousedown.jsp",aF(1,0)).bind("click.jsp",aD); +if(aA.arrowScrollOnHover){az.bind("mouseover.jsp",aF(-1,0,az));y.bind("mouseover.jsp",aF(1,0,y))}am(H,aA.horizontalArrowPositions,az,y)}i.hover(function(){i.addClass("jspHover")},function(){i.removeClass("jspHover")}).bind("mousedown.jsp",function(aK){b("html").bind("dragstart.jsp selectstart.jsp",aD);i.addClass("jspActive");var s=aK.pageX-i.position().left;b("html").bind("mousemove.jsp",function(aL){X(aL.pageX-s,false)}).bind("mouseup.jsp mouseleave.jsp",ay);return false});m=an.innerWidth();ai()}}function ai(){an.find(">.jspHorizontalBar>.jspCap:visible,>.jspHorizontalBar>.jspArrow").each(function(){m-=b(this).outerWidth()});H.width(m+"px");ab=0}function G(){if(aG&&aB){var aK=H.outerHeight(),s=ar.outerWidth();u-=aK;b(ao).find(">.jspCap:visible,>.jspArrow").each(function(){m+=b(this).outerWidth()});m-=s;w-=s;al-=aK;H.parent().append(b('
    ').css("width",aK+"px"));p();ai()}if(aG){Z.width((an.outerWidth()-g)+"px")}aa=Z.outerHeight();r=aa/w;if(aG){av=Math.ceil(1/z*m);if(av>aA.horizontalDragMaxWidth){av=aA.horizontalDragMaxWidth}else{if(avaA.verticalDragMaxHeight){B=aA.verticalDragMaxHeight}else{if(BaU){R.scrollByY(-aR)}else{W(aU)}}else{if(aO>0){if(J+aSaU){R.scrollByX(-aR)}else{X(aU)}}else{if(aO>0){if(ab+aSj){s=j}}if(aK===c){aK=aA.animateScroll}if(aK){R.animate(aw,"top",s,ae)}else{aw.css("top",s);ae(s)}}function ae(aK){if(aK===c){aK=aw.position().top}an.scrollTop(0);J=aK;var aN=J===0,aL=J==j,aM=aK/j,s=-aM*(aa-w);if(ak!=aN||aI!=aL){ak=aN;aI=aL;E.trigger("jsp-arrow-change",[ak,aI,Q,l])}v(aN,aL);Z.css("top",s);E.trigger("jsp-scroll-y",[-s,aN,aL]).trigger("scroll")}function X(aK,s){if(!aG){return}if(aK<0){aK=0}else{if(aK>k){aK=k}}if(s===c){s=aA.animateScroll}if(s){R.animate(i,"left",aK,af) +}else{i.css("left",aK);af(aK)}}function af(aK){if(aK===c){aK=i.position().left}an.scrollTop(0);ab=aK;var aN=ab===0,aM=ab==k,aL=aK/k,s=-aL*(U-al);if(Q!=aN||l!=aM){Q=aN;l=aM;E.trigger("jsp-arrow-change",[ak,aI,Q,l])}t(aN,aM);Z.css("left",s);E.trigger("jsp-scroll-x",[-s,aN,aM]).trigger("scroll")}function v(aK,s){if(aA.showArrows){at[aK?"addClass":"removeClass"]("jspDisabled");ag[s?"addClass":"removeClass"]("jspDisabled")}}function t(aK,s){if(aA.showArrows){az[aK?"addClass":"removeClass"]("jspDisabled");y[s?"addClass":"removeClass"]("jspDisabled")}}function N(s,aK){var aL=s/(aa-w);W(aL*j,aK)}function O(aK,s){var aL=aK/(U-al);X(aL*k,s)}function ac(aX,aS,aL){var aP,aM,aN,s=0,aW=0,aK,aR,aQ,aU,aT,aV;try{aP=b(aX)}catch(aO){return}aM=aP.outerHeight();aN=aP.outerWidth();an.scrollTop(0);an.scrollLeft(0);while(!aP.is(".jspPane")){s+=aP.position().top;aW+=aP.position().left;aP=aP.offsetParent();if(/^body|html$/i.test(aP[0].nodeName)){return}}aK=aC();aQ=aK+w;if(saQ){aT=s-w+aM+aA.verticalGutter}}if(aT){N(aT,aL)}aR=aE();aU=aR+al;if(aWaU){aV=aW-al+aN+aA.horizontalGutter}}if(aV){O(aV,aL)}}function aE(){return -Z.position().left}function aC(){return -Z.position().top}function L(){var s=aa-w;return(s>20)&&(s-aC()<10)}function C(){var s=U-al;return(s>20)&&(s-aE()<10)}function ah(){an.unbind(ad).bind(ad,function(aN,aO,aM,aK){var aL=ab,s=J;R.scrollBy(aM*aA.mouseWheelSpeed,-aK*aA.mouseWheelSpeed,false);return aL==ab&&s==J})}function o(){an.unbind(ad)}function aD(){return false}function K(){Z.find(":input,a").unbind("focus.jsp").bind("focus.jsp",function(s){ac(s.target,false)})}function F(){Z.find(":input,a").unbind("focus.jsp")}function T(){var s,aK,aM=[];aG&&aM.push(ao[0]);aB&&aM.push(V[0]);Z.focus(function(){E.focus()});E.attr("tabindex",0).unbind("keydown.jsp keypress.jsp").bind("keydown.jsp",function(aP){if(aP.target!==this&&!(aM.length&&b(aP.target).closest(aM).length)){return}var aO=ab,aN=J;switch(aP.keyCode){case 40:case 38:case 34:case 32:case 33:case 39:case 37:s=aP.keyCode;aL();break;case 35:N(aa-w);s=null;break;case 36:N(0);s=null;break}aK=aP.keyCode==s&&aO!=ab||aN!=J;return !aK}).bind("keypress.jsp",function(aN){if(aN.keyCode==s){aL()}return !aK});if(aA.hideFocus){E.css("outline","none");if("hideFocus" in an[0]){E.attr("hideFocus",true)}}else{E.css("outline","");if("hideFocus" in an[0]){E.attr("hideFocus",false)}}function aL(){var aO=ab,aN=J;switch(s){case 40:R.scrollByY(aA.keyboardSpeed,false);break;case 38:R.scrollByY(-aA.keyboardSpeed,false);break;case 34:case 32:R.scrollByY(w*aA.scrollPagePercent,false);break;case 33:R.scrollByY(-w*aA.scrollPagePercent,false);break;case 39:R.scrollByX(aA.keyboardSpeed,false);break;case 37:R.scrollByX(-aA.keyboardSpeed,false);break}aK=aO!=ab||aN!=J;return aK}}function S(){E.attr("tabindex","-1").removeAttr("tabindex").unbind("keydown.jsp keypress.jsp")}function D(){if(location.hash&&location.hash.length>1){var aL,aK;try{aL=b(location.hash)}catch(s){return}if(aL.length&&Z.find(location.hash)){if(an.scrollTop()===0){aK=setInterval(function(){if(an.scrollTop()>0){ac(location.hash,true);b(document).scrollTop(an.position().top);clearInterval(aK)}},50)}else{ac(location.hash,true);b(document).scrollTop(an.position().top)}}}}function aj(){b("a.jspHijack").unbind("click.jsp-hijack").removeClass("jspHijack")}function n(){aj();b("a[href^=#]").addClass("jspHijack").bind("click.jsp-hijack",function(){var s=this.href.split("#"),aK;if(s.length>1){aK=s[1];if(aK.length>0&&Z.find("#"+aK).length>0){ac("#"+aK,true);return false}}})}function ap(){var aL,aK,aN,aM,aO,s=false;an.unbind("touchstart.jsp touchmove.jsp touchend.jsp click.jsp-touchclick").bind("touchstart.jsp",function(aP){var aQ=aP.originalEvent.touches[0];aL=aE();aK=aC();aN=aQ.pageX;aM=aQ.pageY;aO=false;s=true}).bind("touchmove.jsp",function(aS){if(!s){return}var aR=aS.originalEvent.touches[0],aQ=ab,aP=J;R.scrollTo(aL+aN-aR.pageX,aK+aM-aR.pageY);aO=aO||Math.abs(aN-aR.pageX)>5||Math.abs(aM-aR.pageY)>5; +return aQ==ab&&aP==J}).bind("touchend.jsp",function(aP){s=false}).bind("click.jsp-touchclick",function(aP){if(aO){aO=false;return false}})}function h(){var s=aC(),aK=aE();E.removeClass("jspScrollable").unbind(".jsp");E.replaceWith(aq.append(Z.children()));aq.scrollTop(s);aq.scrollLeft(aK)}b.extend(R,{reinitialise:function(aK){aK=b.extend({},aA,aK);au(aK)},scrollToElement:function(aL,aK,s){ac(aL,aK,s)},scrollTo:function(aL,s,aK){O(aL,aK);N(s,aK)},scrollToX:function(aK,s){O(aK,s)},scrollToY:function(s,aK){N(s,aK)},scrollToPercentX:function(aK,s){O(aK*(U-al),s)},scrollToPercentY:function(aK,s){N(aK*(aa-w),s)},scrollBy:function(aK,s,aL){R.scrollByX(aK,aL);R.scrollByY(s,aL)},scrollByX:function(s,aL){var aK=aE()+s,aM=aK/(U-al);X(aM*k,aL)},scrollByY:function(s,aL){var aK=aC()+s,aM=aK/(aa-w);W(aM*j,aL)},positionDragX:function(s,aK){X(s,aK)},positionDragY:function(aK,s){W(aK,s)},animate:function(aK,aN,s,aM){var aL={};aL[aN]=s;aK.animate(aL,{duration:aA.animateDuration,ease:aA.animateEase,queue:false,step:aM})},getContentPositionX:function(){return aE()},getContentPositionY:function(){return aC()},getContentWidth:function(){return U},getContentHeight:function(){return aa},getPercentScrolledX:function(){return aE()/(U-al)},getPercentScrolledY:function(){return aC()/(aa-w)},getIsScrollableH:function(){return aG},getIsScrollableV:function(){return aB},getContentPane:function(){return Z},scrollToBottom:function(s){W(j,s)},hijackInternalLinks:function(){n()},destroy:function(){h()}});au(P)}f=b.extend({},b.fn.jScrollPane.defaults,f);b.each(["mouseWheelSpeed","arrowButtonSpeed","trackClickSpeed","keyboardSpeed"],function(){f[this]=f[this]||f.speed});var e;this.each(function(){var g=b(this),h=g.data("jsp");if(h){h.reinitialise(f)}else{h=new d(g,f);g.data("jsp",h)}e=e?e.add(g):g});return e};b.fn.jScrollPane.defaults={showArrows:false,maintainPosition:true,stickToBottom:false,stickToRight:false,clickOnTrack:true,autoReinitialise:false,autoReinitialiseDelay:500,verticalDragMinHeight:0,verticalDragMaxHeight:99999,horizontalDragMinWidth:0,horizontalDragMaxWidth:99999,contentWidth:c,animateScroll:false,animateDuration:300,animateEase:"linear",hijackInternalLinks:false,verticalGutter:4,horizontalGutter:4,mouseWheelSpeed:0,arrowButtonSpeed:0,arrowRepeatFreq:50,arrowScrollOnHover:false,trackClickSpeed:0,trackClickRepeatFreq:70,verticalArrowPositions:"split",horizontalArrowPositions:"split",enableKeyboardNavigation:true,hideFocus:false,keyboardSpeed:0,initialDelay:300,speed:30,scrollPagePercent:0.8}})(jQuery,this); \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/js/jquery.mousewheel.js b/src/wp-content/themes/Broadside/js/jquery.mousewheel.js new file mode 100644 index 0000000..b793241 --- /dev/null +++ b/src/wp-content/themes/Broadside/js/jquery.mousewheel.js @@ -0,0 +1,78 @@ +/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) + * Licensed under the MIT License (LICENSE.txt). + * + * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. + * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. + * Thanks to: Seamus Leahy for adding deltaX and deltaY + * + * Version: 3.0.4 + * + * Requires: 1.2.2+ + */ + +(function($) { + +var types = ['DOMMouseScroll', 'mousewheel']; + +$.event.special.mousewheel = { + setup: function() { + if ( this.addEventListener ) { + for ( var i=types.length; i; ) { + this.addEventListener( types[--i], handler, false ); + } + } else { + this.onmousewheel = handler; + } + }, + + teardown: function() { + if ( this.removeEventListener ) { + for ( var i=types.length; i; ) { + this.removeEventListener( types[--i], handler, false ); + } + } else { + this.onmousewheel = null; + } + } +}; + +$.fn.extend({ + mousewheel: function(fn) { + return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel"); + }, + + unmousewheel: function(fn) { + return this.unbind("mousewheel", fn); + } +}); + + +function handler(event) { + var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0; + event = $.event.fix(orgEvent); + event.type = "mousewheel"; + + // Old school scrollwheel delta + if ( event.wheelDelta ) { delta = event.wheelDelta/120; } + if ( event.detail ) { delta = -event.detail/3; } + + // New school multidimensional scroll (touchpads) deltas + deltaY = delta; + + // Gecko + if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { + deltaY = 0; + deltaX = -1*delta; + } + + // Webkit + if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; } + if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; } + + // Add event and delta to the front of the arguments + args.unshift(event, delta, deltaX, deltaY); + + return $.event.handle.apply(this, args); +} + +})(jQuery); \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/js/jquery.orbit-1.2.3.min.js b/src/wp-content/themes/Broadside/js/jquery.orbit-1.2.3.min.js new file mode 100644 index 0000000..13acb8d --- /dev/null +++ b/src/wp-content/themes/Broadside/js/jquery.orbit-1.2.3.min.js @@ -0,0 +1,17 @@ +/* + * jQuery Orbit Plugin 1.2.3 + * www.ZURB.com/playground + * Copyright 2010, ZURB + * Free to use under the MIT license. + * http://www.opensource.org/licenses/mit-license.php +*/ + +(function(d){d.fn.orbit=function(a){a=d.extend({animation:"horizontal-push",animationSpeed:600,timer:!0,advanceSpeed:4E3,pauseOnHover:!1,startClockOnMouseOut:!1,startClockOnMouseOutAfter:1E3,directionalNav:!0,captions:!0,captionAnimation:"fade",captionAnimationSpeed:600,bullets:!1,bulletThumbs:!1,bulletThumbLocation:"",afterSlideChange:function(){}},a);return this.each(function(){function q(){if(!a.timer||a.timer=="false")return!1;else r.is(":hidden")?s=setInterval(function(){l("next")},a.advanceSpeed): +(o=!0,x.removeClass("active"),s=setInterval(function(){var a="rotate("+m+"deg)";m+=2;t.css({"-webkit-transform":a,"-moz-transform":a,"-o-transform":a});m>180&&(t.addClass("move"),z.addClass("move"));m>360&&(t.removeClass("move"),z.removeClass("move"),m=0,l("next"))},a.advanceSpeed/180))}function n(){if(!a.timer||a.timer=="false")return!1;else o=!1,clearInterval(s),x.addClass("active")}function A(){if(!a.captions||a.captions=="false")return!1;else{var y=e.eq(b).data("caption");(_captionHTML=d(y).html())? +(j.attr("id",y).html(_captionHTML),a.captionAnimation=="none"&&j.show(),a.captionAnimation=="fade"&&j.fadeIn(a.captionAnimationSpeed),a.captionAnimation=="slideOpen"&&j.slideDown(a.captionAnimationSpeed)):(a.captionAnimation=="none"&&j.hide(),a.captionAnimation=="fade"&&j.fadeOut(a.captionAnimationSpeed),a.captionAnimation=="slideOpen"&&j.slideUp(a.captionAnimationSpeed))}}function B(){if(a.bullets)D.children("li").removeClass("active").eq(b).addClass("active");else return!1}function l(d){function c(){e.eq(f).css({"z-index":1}); +u=!1;a.afterSlideChange.call(this)}var f=b,g=d;if(f==g)return!1;if(e.length=="1")return!1;u||(u=!0,d=="next"?(b++,b==p&&(b=0)):d=="prev"?(b--,b<0&&(b=p-1)):(b=d,fb&&(g="prev")),B(),e.eq(f).css({"z-index":2}),a.animation=="fade"&&e.eq(b).css({opacity:0,"z-index":3}).animate({opacity:1},a.animationSpeed,c),a.animation=="horizontal-slide"&&(g=="next"&&e.eq(b).css({left:h,"z-index":3}).animate({left:0},a.animationSpeed,c),g=="prev"&&e.eq(b).css({left:-h,"z-index":3}).animate({left:0},a.animationSpeed, +c)),a.animation=="vertical-slide"&&(g=="prev"&&e.eq(b).css({top:v,"z-index":3}).animate({top:0},a.animationSpeed,c),g=="next"&&e.eq(b).css({top:-v,"z-index":3}).animate({top:0},a.animationSpeed,c)),a.animation=="horizontal-push"&&(g=="next"&&(e.eq(b).css({left:h,"z-index":3}).animate({left:0},a.animationSpeed,c),e.eq(f).animate({left:-h},a.animationSpeed)),g=="prev"&&(e.eq(b).css({left:-h,"z-index":3}).animate({left:0},a.animationSpeed,c),e.eq(f).animate({left:h},a.animationSpeed))),A())}var b=0, +p=0,h,v,u,f=d(this).addClass("orbit"),c=f.wrap('
    ').parent();f.add(h).width("1px").height("1px");var e=f.children("img, a, div");e.each(function(){var a=d(this),b=a.width(),a=a.height();b>f.width()&&(f.add(c).width(b),h=f.width());a>f.height()&&(f.add(c).height(a),v=f.height());p++});if(e.length==1)a.directionalNav=!1,a.timer=!1,a.bullets=!1;e.eq(b).css({"z-index":3}).fadeIn(function(){e.css({display:"block"})});if(a.timer){c.append('
    '); +var r=d("div.timer"),o;if(r.length!=0){var t=d("div.timer span.rotator"),z=d("div.timer span.mask"),x=d("div.timer span.pause"),m=0,s;q();r.click(function(){o?n():q()});if(a.startClockOnMouseOut){var C;c.mouseleave(function(){C=setTimeout(function(){o||q()},a.startClockOnMouseOutAfter)});c.mouseenter(function(){clearTimeout(C)})}}}a.pauseOnHover&&c.mouseenter(function(){n()});if(a.captions){c.append('
    ');var j=c.children(".orbit-caption");A()}if(a.directionalNav){if(a.directionalNav== +"false")return!1;c.append('
    RightLeft
    ');var k=c.children("div.slider-nav").children("span.left"),w=c.children("div.slider-nav").children("span.right");k.click(function(){n();l("prev")});w.click(function(){n();l("next")})}if(a.bullets){c.append('
      ');var D=d("ul.orbit-bullets");for(i=0;i"+(i+1)+"
      + + +
      +

      + +

      + +
      + +
      px;"> + + + +
      > + +
      + + +
      +
      +
      +

      + Posted by in | +
      +
      +
      + +
      +
      + +
      + + + + + + + + + +
      +

      8XsH98=H_K*%DemM*WKns&c@bk3bpLAF^|tSb0(&i5Z6s0+y918g zcA~Ix>OYVxJ%2n)EQ~Xy{mI`xXX|Q{)jGbZ0l-0E#!9l-*0;nMs~w==>ivF}^7 zotqpUkkl%_2xdV&bOU>als7DGsm&|&jFzKP8i@PWa^~F4+gwveH%YusdfL7XVP{Vp zfH`-k0F=;z4lHOLZKV!!20axV9-4 zWVFXEmH7eynmmLxBdOw(JEX4LJ|>>6YpIP-FD?!8w0{g>!$t07Cwu#>`%nG>=TVd8u{x^Eo!&jH6q?)PYAnPT^g?Md*H63CH~Ir z0q$TTIMU|E9?!n`69=y8cZ>G9gAup11&2Gic~rfHE*8$zx{zn314>e5;Q)8IFFedc z!3$Knpe%Nb?@9r?9+Wk!U)$B&(L2kK(*h4mttc8H-B=7cNPr`G^+=la1w(my63nYQ z5pZP%BBDQ5C!$_EKq5(P;2`G#QaR2>XrFq;x)9$du8CQ zqKy2@wcEc_9vn%ppPA{pGQ@!Vit8{Sv zY{K^}mDh}(_x_seN=3V6j&~Wpf@?)_Zqgb-On1)3`UJZJdjZ1c&g=88N#yW#rU1Gx z-M9USinZvIZVuEZ`ihap$vWohu>|{HK+%SM=6;kHHW*>O9*?pK#ahKqWcGfcCk{`2 zt^neH5{$3IkG0m(Ys6lZVY{$SCRu1)CeyLjIY>0wsfmlXD-I)sYQ(vIRi0H36=G=t z4j;h6gF8+5Chr1gvRwUWPKd+Vn@s(;!xF8!U0PWZNa)i9c+rC<0BQ|;%a)f2Qk!<= z+>_G5@Nz zj(f$Qk~V~3KxW96hjpCdOtw>%4!IL0mVM3b3Vy6%aja(*B9Z4qvsn)r6FB3-&d(1> z^X^tEFPBA7s6)WwynL-6S4}aLESPB=HY$M8x*8!7n9KUdb4_T zv#qEl(;W@r?;r8-|a*`ZY{MoFE*mIQ>t60{kUsgi}t|PrV&JyC~08s zez%F)+a%5(c;1v9SUlWMktNkVhh@3bubp52L|FHaClq=B@rp^h>19n7xo+2^szJCPmNB z9e~UmflfK{b2Q%8BvxOQq79eVQy*PupwJ`F2?Kgf4vmC8|J&kUHzYD?KAEg2>VH(_ zK(J;R?b`zehCDBdy?eMpsyDIuiM&?fnoPZ!jdx{-Sj2fXd>U2(6T@RjWKD4Rj`2+2 zx5L{?RbAU|)=?*j&mN^7b^f4f-aeUMJxkvrAM%r9olgDYG30X$_;DjAS-u*;gEVV~ zIt^uERGr28s>uWSsKEgli@&np6n$aAp)WTMB@${C7bpSnum_eoRhLU`KbSSEa3mi{ z?;8yc4`2IahK|V>RdZQ0=2PDKbWrnF^4kEn*!|b%3x3+ob9-D046|(vjkAFc7W8bc z1Z5{?j7qq+QJK=B<>*4X;hRgJx}EenkKGCx>+QiszNa2BjhV!$AjOOn^X~z|!y-6G zTG0wR{uk#-ii40tE>UA>Bsx}S{)}@zclY6ZHfd3LQ3ta=(KR<{b-!7uyV|J7CUs9| z--DT1?6pms$Nx@tLX(#@o%MV3Y*@pI{|I)a^7*UWOKLCuhO}ffmC_FgMZ5cI@W0pC z!r#!80)Q9EYAr{1zE%8gI?m4E96~2V<2F2qfH9j8bH{KSOt?`7fpDuiMZtWA#&3H1@{tphn6WxR(#eZ9S%lBCowdm^Hb!z2h@yW7I z2CBwp+P*{QSWrs9__gJ^53T9*L#G-=c8)GqtNLKn3}7AySFX$T4ES0}nc8Hpthjzl zI_luOtK-tGPn=FVn%g4BoXT7M+>k}=+A`=9em`UP#Ma!W&PH#};+oIR?>L&xo+6DQ zNiUOm*4JL3`b^Yz{Y6AObDu{#Slfy%kC9>t7s6`-_NITaRBf?pc<*hDkjPMrfaQb^ zljmFp;ImN-Qm{r~0{V**L+HrxvL(Y-eufB$U=)f;GdR^-E0zF)+4U}vb3cRcX>K8rVTj(@Vt?!#a$w{Q@gaUE{Jp1SB@{%QpO>)N8l@eqO3=Sm#&tE*{uqI5at@cI^ zz8FqyPE{LGZc}`vTRI?#`Y{l;QtM!VwTRb|QOUx5@0GZB-db~F%fZC@574w#dEsm8 zA7J#lIo&R!{Cvu^TQSRXH{F`8Kl*E;x7M)#^)-~onAO=k8a?zY?wn&k)B1Y-^8}+&{p{9NI_LXurQ|FSpGm66uCZuuBLo#hw_MT2&} zpG_o~7_1KYDXo4rqNWuwfYaAOdS^6Ezq8$Gk(i{bS+>Ve^N$1IjeFU(=0k#Un=87u z^w)b0G3K{cS+PJM9w3*|SrcFBS#T(uD`L9PitrjkkXvj9>ci*&>}ITgUK|p-(58Cu z1sqq)%NkGpCB=L?NBj!V4g#qXMCln2RX`~pzP{v|G$-U>r=|~$Fx)?TYjHyy4sf9u z$wH3TPGzA50HJWiZu*%fPz$`aJO=|H81XG2UHu%iy-lWQY6ECSk{$dhh$o3x=16!*t=5mIj$ui4SbuzE1EeUU9J(GHq36#9?5iZ)AqtC4~v#Prn7O46UNUaD&^ERm=zNXL- z)w@gyYcU6e5KWfBm9aZK8E!E-$6sBpI13D_eJA|Z``G|Lu0_DMd;rRB9YJltGTJ(^ z@3H_o%WGv3XOvQPtVZz{!(X@c|0@7Q3fi<3+_Z)x?*ewM++@{S293U9%(zOY6}vuQ z1vT_Q=w3RPSvilK0SCuY+t~U!qR@54d(}YYMJikt0EEYQI0lKV1D2$+a!44S$dY33 zzEEKT0%R%&qh{Yv^7gdF4w%yKdnevYy#7{iM#e+F_(nzRWQ=oVLg8r6 zf{x&_t6jBIoAjzq-51zQ-goQpca9_B&umuHE zf~4lCma!F!<_9i1TsdS#PNwk}wT~OdOMW={2jHT*(w7ZxkXulWBieqTz*)}bl#Wz) zodDPgI1&KqQzDRjWMM7E-z)q_UAqXw0N_bx$r{M^_6FPBxH{o%1I~0O%2Xz|Amqp} z1cw`gtT9=3iIuA${~UBW4#2vA$`StQT=j|{(8gyG&@UbB(0(ky4fZeRVU1Vf)OzDU z8BTWr4gjPe2m!$ARrfid0OX|~KM3vuNW4oDMZN=RDqGgLNK0Mhuk!2VA3B83NCXDCV*DI$uh;JNb2@n^EPE+H^^fwAUDEH?g>1Oa2mQ^E4N+_*|7VH~>`FY8(Cm>}!JFweTfg)z=8k^lV=K z&2s^_@~%=QmZsv`cARlQe&?uJ2RkgAn=*Q&CZk67mC}ekZ;X=`>He9`^>Qt*s$A>C zMzjG|u@7pZ;*qy-pBmox@GQ@k#`j+J0Xu}ORiqKKQIUC2>~+yw(l&nmQ23h6^5m~U zI}J(S`QHs1ai&-5jzwR#L$U?#0pS{Ow~0sDg?g08)5pgtifvPFQj@0`u^Co&&XcEa zJ~%J+(Tun3gE}p|Tnmf6m+RLC`dXJ2?^%}(GK_nqQ% zC(Km*AkklL5WOrAUDLU4u6b6f;{3KHOh}!cs0Rq-nLE!^trt6}5eZ+hR4mNj0AcDN zc!YTz#K5KR{eMDS6GP;haFJCAFy@}2N|IwC*a=ahn$oQ~Sxx|9uK^EL&>92j$vPgl zZPnx1kIMP$w1Et0ign5mxK2kH;jb|T${TfPoU&Cp_(hW}Jy51r=4UEFa26Q066QyI z45@CbGuuEC<`emD=xKGg@voB}dM4}(1n4hM8X1JK%bWRQZ+i~FzjU0q;H$jqF_T2z zq-fu>>GD#@Sr2W&L{BJ#r?np;bjO~toQT58SdJ@XJE*_B#VWG8+6(v)NGp3SZ6C{=zqs{7j4pZh*_}1&eWR;MZMgBB==z_>>SOK? zeE;Un_;Jkg!ZpP4u0?RyLfJYgEvk+Ep#(J2vv25l@5?H0DX-S0eN~?-))27g+qanN znZ{fDmm80a~(n6?l!TjuW}VcQ54h#ES=G> zkS*TLi|Q}yaL%ff^MYP>e*l)0E;ilgoNMW~{_;$8;tx=Ny>|2f_P-8zQG<}t14w3M@42X7evRJUmC^*Q2&`c7;H9dD2nZf`^SEab#3fQzQr!kT@yKk0+2KXF$99wL z7-<7mj{3$F0RbYtl80#f#7ueZP%gGxvWTsaDuTTUkp&?DSS@O301hoUB2AI}eo@cy z@+Zw#FXX<ut0h%?Z^|CA6rad#*dV)v z=T+R}3mHArQ6Yprc_qM{*ip#AS(9Nwufh~Ru4^tZo~OZHsQ?ZxM3MRHRYapTs6(c9 z*qPI2da)Gpn4OE2%>!wAXZGcGC_(>j-dcu6m-~*6+CLs&FL$kVkGuVTxwvV#B|gyl zrZBm(Z0jW1{%6wj02FuKPiz}6pz3feH9#7D!ywXkpYi1AlZthrN!y09L$QToJCgN< zXRoeai?28B3GQ+hr=MDE`03!(65V#?OXar8@<|h~b?0J7rLC!WM-`82K3M|m$~fd8 za8iPTMZ!tJqF!j%MY7?(WRY{herVQJk>k!`1~~w1<#^B1bAqo?pmIwHYIx7+>%6qo z2KE5)rD!gEu=&Hh@EL`)5dO%f;s4|JNI$Gs9JI6Sf<5=5^PL5K)6h)e0CtvhSEx1) zBW~I6$MxD5{N1HxYNYglaBIbr-$u{ODb`Lee!yf@CVwK_O*_mcgxwNV>i~~w9syO- z-+|7EajyMk0NpiXczJ)Kc`fpmHzLMmIoV&oqm4+JaAD#X!xs@$?; zdjt?EeSbz953{>RGhV3SO_C1)wSgAn_bP$Fq2B z9L6=7yI>B7?0~^H7I#5Q4{IY*)rBd|V<()1^%M%rbvun>5_B#^ZtKkJitdKoE{(SF0U%AD5f?t5zVsZ94=Mznh z@@O1c(1z*HS=Uj7h^{v_D(4a74}QW?W%JzZUE!KY_jy~uI zYs=UAbv2#@3`+0W57C&gjUdnkoi0t&fW|M{x0i45L#xeFPbp6`@F8(Dt7J^lc>_f^ zO3|UjA-hZuRl-Fu}`p-}kVeck(~0M&_k-iV>!o|IiRU!H&K#ol=4qDk%S z%4gE^nh8U#<(=H%(>|Eag}M+e*7)vGRn25tMali%SZ#JY%Q4>i#AB)IC?|q72N8hM zA2`o>)Z^17o|Y6^o!8p*W3vN(n`%jrZGlVu04_^UR)!ajOKbNSyPi@@Hgd51^uV(g zHrTElu)#k{JFE1Joi=E+RGvRuVkzxH0HSXfaLgc&kWceB(N9oSH#)A>hw`f-i0uZo z`ssj!6roMyKh!y&6o5M}|0dc|Fa!c{y(A4+Xc>%1azsjS&ZgPES%B8NR=-QCEI7@Y z{>$m$j`w0akey0np$&b#3giGn69kFJH%HjS-?XV)ZmKC4PTZ6$;`r$MK6Wrig9{Ky zg$f1H7nPG~4ODQIi`1)(yjFS`7P_P48=dA`?b^J+3FDiIjWtrx>R>-bxV`VD;dfhZ zOQjG&LK0#r$e~LbN(=&c-tI&I<(*{=p!~d0OORyD=dD8v9y&cPZ6RO&Ax=tu=A_Aw zg8t3q`c1cyk9yUq|Va6zW%Iw}%tN6`{zBAW7ZR;x-tJdqUVt+>ZWVW8eZll0}ReV--pNEEhzy-#^ab3>f zJ5CFMf)~<>pdMAv)Se58&=1Am6IJG7P6V{xnb68mY>y@56b^XF>N?Ijh_e}AI2&_K z7dRVp{s8Uam3e`*fGE&+5=gJS&Wu(_ni7tN<6F*5~lEDucsA zp>M6ha8}lnNEE3Rt?wCr40W*>4(6HXnBJm?RG(~FC%#v;m%v&eJ}-mN9buZtsbJQf zAcHx0LH#i6-~u@H29DE1;Mq->yL_&G> zmRd}9qiwkR6@Wzss>9J?8toH>@+t&Fj|jN0tcdHI0B8t>oad?q9p)c)z0`3^<1xb1 zLOOb?&$Yury!AMnrkA8j?$lSQSNfC}hsQ$ROg#IF>gE#kg&UnVR8R`}X!{f&6&-$y zva9{!E9PRO@nvt^s_W%Z&6pRvQA;@HyWc67*Y^siu%wiZaN5#n*%yc-$07y1QEj8* zoq!&t=T83tZn=exKFmEhG3lj7eb>;bJ+bv!_HF7PK*-={$D1D1PkZ;(r6SLQMBBpG zkEAMWeUNc|I}UWOjM;y4Y>OW+Gm8d-w38r>+_Or4T z5M#lwb=$=$E$UmFvs-fcUT&?zaIROEBQ;H|4w_J#oAgaZ^2HD1Brpph(4-i^4~X{6 zqk{Jog&&1Ws38)R*fk*AuM8B2mU%7ej&9hrv+BJsDWN)aTp(54#ED;poY5$Hy(%kn zqRF5sFX?nN!L5?W!kDF_$5|;i0I)F?je1zFS>5^3AC?J%VIvC0v(r@>_}StzclY#0 z`!YrWs_5+y(VNMjlCPg={sm02K`sf-bsFg(!ouk-*XLZ+ocf7n)OC^|O+4WbfFD(P z874TR^N&i#%YvDqvV7)IG{Fd`$V7kGjFMcjFHSYc>H?Uwk>u)XZ_2Qo^9Nf zhZ%E+tx1bzAG?1BQO;A6l^zFi#K<)-wk@dPL&wPPcPaXSId6bLFHM_ z&Q^UEU&`$LrQfXUU(_G}EBWN~v++w){pT)icTh!B7Hq#E{5qN)8h&-^>MW|MG%A@i z=$%Z~5W3_V{x|~9vxIk+t19+U3Q|eKpjyddJe>W?7Z>H#eso-ZZv$s_>0e@_oId^X zy>hXM!r^aT+!Ma=LfX2=LQY3fu3VAmw<1Jra6H>5ONPwR(tCAg?I63{jo@8f!-VRy zD%#EOJl5d~buHj)yt4{QmevqfR?y3Pvb;f+lIFLa}gHfkdnWNxDZrW7h31m7#IKAWp$mct5`gOZMVurvh7Pa?1W zcD$}se980l3!okpK7ES0y#R>15X6x1v&S=YH;;ByDVk7B;h6xt%PWF0kZtYqBVETx zwlEwZcYfLDOe5zP2oJliBFyQTzqp(lbBfv`lk`dvPsnX9tejz6t~_yJqtEX2qBUa? z=9c$>c+di>Ammf1UbR?t-YaPS#?`iPCi8G*<;Pv}%K92LVoPRi?EYert3yB|a^A-% z{t7G{=i2pHVtirB_|mzBjNC1^eAOGOrGtZJLeD7^%a|hd;KKZTgu$xqiKzhc+uI+m z))+eKEiZlD*=g#ZvF5|iI$T!^larRxZ%Z=TTVHIT?qIG;y<#BXZ||b_{s6L*-5rhN zBMZ4l_LUr@uSN6-GA6Xfy4f(#s)It}P0obJmw#Nd?1(M4urjskRb2Vll^>oKZbY2& zl{xl7TRhBm8_9}&7z>(97F7t&^|%h8M{S~cx-?QwEl9x`h@ zb6!>FVY%2wV8&Q5f#n1&wGP`krLmT^ll-`DKO`UCGFdZ@wqhv+RlfV;FLmGT3+oX% z9^V9w1k%%|u<;`24P;q7zvp*e?aokpvawt4Y^4!4=aenU(99m-!sJfhG9o@V*hXN- zZ7vm*=IB@p7T)x{9U+0h22h$Kisf1bct6P3RC?9uSm?~(vkba*Yx(1C2d9a_Z_gdy zpBAC`U^nYHy$!d=HeT0nxbEYx;_3wQYn+VX^?B$gZumn15l^L@p38-bzaoQx1oX5Is zxyQldCL^luqlNBkR60-Ftru(rmKAOI-3Qz|T1tAu?xT*i!VDvH_T~2)uHrUjq+O3S4DRDu5i@C7Q6i>bF==8?_j_Y&so{e1+sM7&8$;lt6f>Rd zq_*6LKjDrA(L0~ZWta48Hj2G_LlRvI0TE~EjMD@tlgflezdo_4oI?P>CyG?#6j%{t zuEAB8Gn>XXs&#X$069?*0MQl|j~;jU_+`BUk>|vIMz~;4aHa1@v<4lqFRMb|QdGW- z9f#gGD`%zoW~VvwK8nM_vlO%l02KNf541$L(AaQz^d2dx9-hl-)sLhm&*g$! zT0%H0FC0CIvCkjlQfzg3z!fNz=#Y2ZwK2$P>i?nY&*P!|!vAsn9w8)!5K&T=5XzP< zlPybQAImUQwh*$6W$cpd`;vXhHp7_0*s_&mUt)&r$v#44-}>HO@Av!jd;HEHb1!q| z-1nSwUFW*abv>`^oQWBTe9F}0Utbv!4YS$ISHKW8fZ8G>$e5@msu}d{ZT{Ua*QH1z zp((-w63^nVIMbizWNjo7@;MEd9i1OLU&)uxv{TY$28n}Bw`6ZTHDoC?O-J!X1q;r8um!N`T7cN8mY7Z?h0dX!ICoW?l5rBz&iP320GbFL^x zWg;(=;L2QRd)3^$=dyL85^u2d#$GQ;*rd+`cxR-yW7WOeRv8}Urj@HmH1hiBZFlD+ zQ z6p0QttY~Kr0t53v1x}v&#Vzjh+}sq)LLHA^<~4jCa+-GzcsGgoiFNBb9YGb$mAqA! z!xR}u@NhV-o-hty`^?8oBLQ%vT!P+r!l46xvihF1xZ@S*`-5>%f?>37cFyv$>lJ`n zs-x(I31c;ArT?Z&TVzAuz)DOXz!r?Nz2m8{9=iHJ+5u=fer7g(`Yrex;ohLsEdi!z zh&1uMVTu8{zYtSXbt*~Mu*|-~ws&=f*41cCl&^p^{_}et_~Nt#yV8pSpqeAC$n*8% zy{iJ5;R8=P=Wh^FsWjKz_dtYQL&3mS(4gK`wJYVbn%rR%#2v_g>LI9@_)3~0f-J|I zzfcjL?8tHhkT2F&&?hq1&GalzjmuUmuG*M8stb{6p-veO7Kd+>=j05_suxBPZvt{C z7hj}ZMlC*NEPg>BW><{9CH&B#tK@=$w$31O>aAeyk>^T&n&NP3V8YKR5!4$L>*0Qe zOiRaAROI`W!OM6%~O_8}(`l56(G@C`8fs#qVb#YZRp}HLaSZL`-$hDo@~z!tBqG8 z=__4jgFw7NDA?)WA3*f`Ntq637Iwa=jODXq-T*W@2<$t`IRV;zG7^b!dZEI!Lt!fx z<5w!xz&+3d1)0JKTN}?_#5zuR2l%00SA4%<=)r1RI$n&h-#w?mb2`Vxjmy?e?qiw%T4kyB+((hP!xSL^whdf=6W*I|`c!2_ zPVnBh;x2wJ0Ek8E4XFT6@XU0^{xsY>)C7v%EJ9qO5NQ7gC1?oOqTu&N(AmHZ=aE6& zq#XPcy|ZFNTgAlsbHK=1rTW*ayI&>Y@YlJezTS2cOmwWRoK2<9f|7!&c-PY)x%_hYRYnQrUQbnTzhxgh{_%( zG~B^wqbeeim5CTC8{HMlMmr(T<-#7I!+24i$0lBmo%ifVn;_VZ z2eoF5ZJ>^VbyG5t(6igr)`KelxvL;On-HAkAnmVS^_N?inDp zATEwl;<6!@5d!v02H7F~Ptg#Dh{L48%J3@R#+dFO;-0<5?G}O8*dPuU zc5rdd@NCVy3U`9yQYc>LQBqV*m|Cm=@UR&pkQae>L@M(U69y#{Yg^D30xpiBd=kFR~J8PJ)`!vg=a0_n~i>{A!CRW1HK zU0i5wvn*T3p_{kljCtqw_~z(eCKP?N?q#OXXZ=BOSq~JIR8PMB+8T{Z`L;11VX~TL zC;bmt+>Oz*vD+rfxVklt{JQZt{O|qkN65RoQbVa_%T(XLB~EcJ+B#*!I6p_0$EDFXGEN!b~)Wq z99LHcc2H&G(jw(;QL0%@PyoQ*-l0g;f&$c_JHJv3dPQe~n-T2jv%>F`*@gfFPV9KzuN#id>_|I^S0$4& zm;aN9fGk;)>jb~tk1|zYY*vy0l_P##8t{=cNW*k;DLjo9x){+AX3s=vse74{)f}i* zveu*vqVm7!c6$&wCx1v4c|H2Q7|Z{1SUSkvmo-QL`==&q5sHFYZ}vlWyw~IkClLw& z3gUUpSG*GdlA}4-@;Z{m1MPBB|Ob}@((zF958ob z@UNl)Y;#ydl5Jv-rDj0+9)*EnV;|hHE$uqBDQ>mYwRwsw#i^^yh#jw4c2^`g%(+I} zBFuLi=j%?32;&%?e5c(cr4z_8wa%cu@ojTmnKm0vddwPXWL# z@F@3b8CJWV9+V0+cfdaXuc$wfn1MmI45yC6`;d|}r53>DMj*;Jl*v;Ugg3neXSiHZ z%a6ms2}CfT7)oYWcpe&JWZt|%{HX5)Ho(vj$pB-3n@-N~1ZKzF3_5F*sSik^wA2qh z8wXJ52nB=p90;g1j1T)DF|wK?PmFkPkAKc-x+~lB zYMTDBY>{DQltX$vHG12~Nth*6PO8%5=Xo^&8g>DCnIRhBpzZZGpLxbf-(|FaUi-+D z6|o_Wu~wmF-ZNrCy4X5-X(A)1sL7wo1L0^T&Lfh+fgOLR-;i!wQxN#U?etS1yJ^MG zrO{fK8@gSDPv;-@8M8=Xco5$SAE^-rQo77|SlzBd)grhCT(F3Hrv7ts2klQgJTO|5 z)pSGWl$ssk4FFqYs^M{PBBKyaYKGQnJf(8zM+Y;4E}H) zEVnfLGzd5+Cq+tVRM=g6PNso*Ly@ zB-R2~8p`Dn!?XLBFcHRE1$k7AM7%{ z#o#ptLbM;g`guZ|U4EC1OZgX6U(gCCDkB>LZtTcKvjvRS{r}@m!MR6;NQ8(-B$uL4rY7?0>@n3 zFKdiJ0Z4ZZ_(fl!BBojYZT{00!t2FyMu=rajb_5TN)2#4IL8@;J40roycz(3#v z3sOV%sxIZ0WQ}ZavOHV-H7NLd;EV~*!DbyOB^Iye3B*8wC%j;O28xy%OJ(y2iT@G& z&=8k3N&k{3y>)}z&(9U2USn_5ujl-##UePz?gd><;Wrk8%!>g4f5zNbUIEPzqi0+k zv?cjD_|P)kGaZBE3iq*$7hV3m1xDH0FN1*d_hK}&#j9MC@C?=-fac2%Z6sqV_$oJ~ z1MNQ_G6{e9UT|N?>In||P;1A8f>fjqB1=9<&JAANZ%R27XYiMpv#35)cSC0rq&D-- zH)^(bL8DQ_i-^%;W4Nd+=h%w(_&NaptII(hWq6i}%pY7qo#N9Sk(UErMNtJf@Abl0nHs{+7%ESJ;m@TAHhfZD3~ zb36daE+uakrc#`KbEY3D(X%hf&nW(#+M*nr?_3(ijA$Aj;^4V;&=nXw_EYCMEPqs& z_vo}0?*A409%QQgc-XddXA<}zuz&=w(F8c;@X2D0um}eWHFwzzD8(}Y0Sek)pq?$? zALiD(n*;+u|7AJRwrbgQ%`T+INdBB8<5g?7(oZfIluJUH_8fr59SUQtJOT1fuWmKk zpH{S+tlmoD1zULGqIwkwc9p(+f5-2hPJ%#3L=Mx<{cGeJKM##8LjOq2wn!nYY6X#k z^-E%k9=!*TK)*8p=*L-$B4lm*8;#VLIe0Z6OJ9=@>V$-Rhe-Z4){k`={DH93i-~7o z%vM5+YhsTOWUB8EjvxeybIzhiC@quw9ojhz3L_de{WNpKL--=W9bPy4$KhnS6m_zF zVKmYPt0ADKKS=0=p>{vyEabf+H`L)OCmQz8U(e2vj25$IE?Cp*)gG64F8ZdFQAatvnn_} zR(SnH44R?}`*tyzl5OyVMzw66TWjv(43rDhvC4zcVz&|sw3G90;Xu1!#{UvBt8as;i=5c?=t2v!>Ba!l@(g zy|bvpW;DBP!;zr0{qj%w6XU${5{DDz3-9%*jn zOGh8Jw4n-dROJ?k&9QL|(>F&{fmkPqu^buv&(r{R7nQ4FPM+#XD>rkIS*Gv_)SmZE z-o-l|x_u8SKeNMa#Y^b{NQ&-6S|X2`n@7Tj1v6aIVj)A4q>C!4o`mVh7|2&$1c3AT&+mhyq%+QG`lhYMK=ytRa3$#x zWgE7-aQSO^Qtq(5wp(nhJqUokLQ&}pePFCNnkwns<=}RJiD)8^um?CCe@9|5JGPAl zhje|gYH@{xJK7f!skmp4vLW%f_WMtjDeWf2ZJpZQ9@h9$a(yJ;@F-IL(kUbee>V9Bh}`qf2b+XegimGQM@1a7|? zKiDHV^FvexG#hVCEDXa&Og2}4GL`}yo3lyyCp+@e=`yRiefF)z-FTzkos~#37TzY# zx!1kF_U=N%XfU=L8Ho8lP=RErSy+sH362tr+3oybDA-wN1xB8R#tRKI9ycmWB&Jcq z^vkr-lwiM|6U?s_y{%F+zseI5L_t%>aHc&`&#H%9BM?NpRoecX^lTOX&RYqACvnk% zM!?@?rHoz@A)l!S!FuGPu1G9*Ch~>>Jinm>87TQr82T?T>cN=Tf*B#FXtNbs~T=Y za2onqR}Y`b=M1}de{((M&HPxLqMwMQzh^v{5@leU+Hf`Mk`qd;OfK(B5KD3?^-m`u z>yKU1Z<9TKY7oVxKB#dX27wV8v<}f%Z;1BTXuN)KLU-@$l753Xt3ChRphSNb-qV93 zji-i97e2Cj0b@S#$L!cA7-c4!P5byU!!!TrZ$d+BtkV)gJtr=05lHADaM63FG#jmD z_T7fh^|Z=a*89PUS*}v|Ea}^~tft{&;q=%teJjM*L=OV~VlrXSSdbVU1OOsYAm|Zd zT1^C6!EOdJN0=*@DZh8er-~5ldl}z&fY7y|o8-<2*#S*DfQIL%O!Zkc<6Q!=@pD>t z>-QHcjVF<4x4!$qhs?7D9CXRoSekVLLHMU)Lv!IdV1UlZ&h3J-E~Ui z8`YB$B?8!#yj0Ipq7IQ~pn&n|K($T&<Iqa7yw;pCg`{SHy6t0^H`I9#3FA_H?kYx>a+gI-(a1d6< zS1Q?OY)V@e)P9!W0^oNjQgrLQPpGX&XT(4HAsI$hocUV9K)2*;yOInR&SAe#RpQ8N zO4HpZ8Pa+-=9=aJ3E}n}8_u7kM8ED5A9HiqKmjf_C){dOiM}>}W-8)T(|92~T=kkR zb%;ngnHek{Q)Gu1sC4>yc__57R8KyhyZNn}59|cz-}VIj3)eKPKeEpd|LA}7ONe8t zUu5yPRmeA_d)i@qy+FMaaDV(q5o=+wFSg=KB&QpIuy*jOgv?J@e ze4ZIsj=LW`v7P?yosq-wt~u$XYQyq@v_jI0bbF|LfgWV>uM(TWv;uU1LGL zo(4|EbMi%(sB!MguK|ENLVQ@?eoee=>p;X`dHd?OM7#4X{WedsK<8C9RO_m?Dd5P$0Dk03?35R)i8 zw#7Yn$J+7Rd%m?F?HS8!tDjQl9=N%YAB>iCTw}cLmSb;`GHFv#E!b*+ro?@ES$z7& zZN;-%BDjmlTMUlTsx^UP_-w2JW|sm8h73&Jq2M4?0Yb&tV_mA3ctr(JG8;qs|6^!NUU_sYb64iG=iDD`gg5?D2snxWh522Xs-KDzW&A0v0oC6% zpP%-QgRRpYMel&p{7)h6e5J`#JKLPFdYYR25uD7XxI^|fC``FQjyKgjiAHI?D*I)f zrh0g7LEj#@aNp>Kv$9-h8F|u_L$5l4^BwFYq!IwG@@?)3-Y$?~ddbJgk}K#`Vo()l z$QVx%qRu$h%fj}_Q3f${M@B3be)G?PB<&uOYc&~fW!J6zHt>tVQ_5~Hkp66^Sdiwe%z3*rpLB8Y5@l;$ zcm#8Tg)GL&1owGkkrYSLm;{5dMc#k$+vm-AOIb6};7|a7JeU{g3WSYFnUzX$u_`E! z2H?)90hO!fqe?^ICLeX- zBo?MDT$*Z_SN_){=SpZ*7inGJLBcl7Z!9u6lL$Z@(juPo^qYHM;pXW#VOpa~5LHQh zt7zaXd6QNq_vRgys*+y2<(T`o2L_#bTh8TbiBJ~t|8lqC>=(i9Nq4doX%Hml-PD0nk!j>uBQV{>MYFKT!Op<=+mNf1dd$HcyEe0L@18~Y;o}?) zo=AMz-j=g~9S5)u`Ds`USUC$ejA%HEJ8BAl(ul?24jHVncQ=k*&X@Q{_{;wTO0=hb zx22|iqBqvoU0}>B9%o}ewAXC7{hCXVP|IfwO~mmLgb*(xzK20U<5G?K1(?FwNCH5b z(HggsUPYe1?E-CvHRV;ligPRRYxO#p;@oRi6l z7f43Ak`FF1HNF;LdP9fl(C^n$C(i>_8O1+f-idt_uM+>r+tmw1-)jG)`xpq@0EclF>q?~}qwC+g4$j%<&)mR&D#QFZ3kLaF%Rx|dM<2Y1^?tYv#Xe*f$RpXY3- z75O@SAOr-F7QjIx2~61nqo0f^YfTIc!rYX<)39AjZC>2qHNF*@9{z5X_d{OyIn$ri&??ha zG4__9)P=2vtKTJWyNgjFe^6i^TjtS?7;WPM0|#jdD~7+PSu1BnKM5?&tsfkX)^3uF zisLd)+qaQV#z#92TqXh(--gYI^5%-VAL9eJ5V!8GdiP5pyidMdy&-hc@n!$0ql>ZK zx!Lyp@4#zS*B|qYH@BnbZK;j7>k%6DD6`${z6U-Emb=s3Nf`qM7Ktd-yEYSE*Dqp{ zYpc!MNUbu`pPjnIl9dp7LYmjt1vlQbQfJgLr)OFDUFgbel}Bs?bFnxw3#RmB?!+DC zDS046em@j7eB=E{Nm1QkThCA`B7iF8^?c3m{tNcfKAXv8 zPd7cnd??Vw_bV*bQa`$U&-BA($aB8K&nmSvENp$63;rehiPHWYgUbsVJBO6k*rJa@ zhFn(J%PdI~RvhPl2P#pi(t2}h7juncVcwrHl1v`@J`F0`X}088ZQII1$emUy?%FJ)4 zsjDEFZC27PY!WWGi-=t8eHM3X>!isyXKHBr;%HamV^RRpbm1?u{jS+Wn@6AA5KGo+NS7bo4+t-Ms?eG3q7g&qVL#rT}x} z)Fv6v1wEGLnD8<#b@Y>ckWnt7+3Pv_9+4GTt{~bzB(RQ{J@iVg_O}!8iK)C9>+ybcagFanJS$ELyIxIg0+rIEt$G+}D5uy2m zUP__{lm^1eBfOBzS4e-rX_asOo4=5WL%UDodnV<;Brzg9@t6`^ITiFfzy#txvMOag zR!%g-EbNM6Ds;K7q@8qUe9UQ*uvgHLqx|#XTv;FwlAGmOV&!CBzMsq27e>XztP_}e zauLVDH=E*29cr&0B$`i%^N5;@I`6~zTV)zO-|fC~e&whq`E0L5o}M z1DKEVr0a0|YB3asPlTd9gR%f7ibMI)c;|8)Vf7YaA}z zxo`}Icat^cy#3)CWVh3g78~{*o4X!JRd2kR+2-x_`7iLP=jbrHW@Z|y;^1b{_yuyP zOTnXo_cjr1pWk1s22`}@#h=pr@A&_}L*|y?9Oh{@i8$K*+>%Gu4{K2z0-S>-%bbL{ zft4O{w_brrI~hUy#tk2p(+qLBbt#XhqSFaaf=xm1YBs(B!!fU^??AL~H>w0D25)Rm zA)}+S1I&#V^`BayFHXAPxx}Xd)dd^l%*dA6?z^SI$FtV!K~Z;7{L>Tm>y=*GUC%F2 zb=p}?Va?D9{hd1iW9MWjhVffUlO}7EcKlF9ESgR8bs@JoeldsXm zI>vKdX-UR8M7e~akxq3#KL_b^)pDmi11N|B%`Xx#t~pJ-1~Sq+6=+YKehNlxJWR6@ zBm+R}m1KkksSJHyQMjzHYf8HP$K8R)-J6KSktO!UnzcZdi9cI`o$J>Y)^`p#zXTo^ zBM2mWPp@W!zciU{PV){FAo|*IedRLaJ>J2LknX&^b8l0G^t#f9-TofMN_KU9#8kw6 zq4Zo>3UJ)4S-WeY`VX*O9UMJKL;eFqPAlXm^x!^e7SUQe0%&%_nONfz1GTcS(b@zVkmM=XH zITR*YVyL`D8=6IZ#WIFY2cr+JkD465NzkatUluA6!>v0OFrsg>x1oJPzhwyu@xp@u z{=o>_jAxl*l>d(qz>^EQ$#`4bg-0xxQiuNmtt*?9&TcbC50!k}P@q{HQh>8k&K*2+ zh$+(+JPHz^aIu32tH_O&I#Pvz&I#e<2Wn0R+(yYCOBtOX=k+m)zt*QKV(A(rz~OHb zsk+BIl)B!_*cP_3fRCbS*Hs1&%(layt%(??CRkT=QVr=IuMYW|Qx6@gN?Vro;>GBL zG+prkC{=iG-Z`Nji|4!-)y~Dx^5zsDsNm<}kH)weJVxv8M#|)`Jr;sJx?KNYv>^ao zpDvedwtdT?4#?VhEJ3RcU`cvP^zT4bc-@if0yADIMNa`XmoPET>Z{D_ksx}3?n!%T z3#y|dFfQ(-f3@Ty%7v_DdeG!+$u?Inm$`8q<%n-L4n4lci(AxTXt#{abfha&gk){`VKpzEJC~nqlHTX(EkAhE+8REXzl7MqZ&#a} zpysHkkE@aW2i)C1eYm=*^Jes9{4U8~DL}z*$}dft3nTAoQ9Z}^{?Khz;gew{Z9)My zrRus0DK@sFetu1+S(`s@KG%faOX}goV0WHMRg`3N%hM;ENu|PY+RuKkS*bk)@wM2s}a3J_Vjo+1y^=P zl6g2120AGL2wVE+%q#ltw?Bi698iB~_U9Fy+mq;ixk+iR@<_R)o+he>b>minnwR^x z+}r~y+aR0pDBnoF5flZ7d)7_%=~|@O)N>7eT`Q07=2kSZXoAB_)iZoX1nc!|XG4)#?f+SS@Qj=%D(p7?B1)mMJf7hmfq zjdduEeSVpq%IQ`f`%ElByK9~XB6*kl-nv}HXpLFD57U;msm*mS)Jabz&XbsSTKo^_ z%!Y$`68-_-Pn8!B0(6WIpY{{cNK%@#jjzESQcXkeHUG!hpT{?3=Qc)JW{PJBuWMIU zwgZ_L-j|rX*}f#S(4w$E6T7=ESY^znRdy+GcA|40m!luqbYXit^&50m!4TN7r$XO| zTd$Y1fP4G{CWg9pZoOUk*3>Ve=|*xhkoVM&9^V>^`qIOT(Ot$l^{8>Atn8Y*yp9oC zeVMSd(T93PFcaN=d;NVwDz3CV=gE&bnDk&5%VYaL3|XZyL6;Usq11&p%YK`vMht5n zX?B4_`v0$UP`-&TE4yGNr<(DWENrJ^*+#WNF`KXZI^F~)hrE`Gs9R9 zW@k$BQ5u2?rq-UqaMiSgTA*q$6%1h?rJSHMwH>Ok#pwyw@U>wn6&vo$IvPYn)dUT^lG7uH`M$R$@f3iHnkndRKV={ZG6#wsmX+&HZ8j^e4kza(4o))`njT92`himF(Qu$9&Ej2_QXz$p{k z?MZE2w7mH-?qpd$C&i~fADr|WTNtUef>U{W^md6IVnm*$cQ{@>4>N>E!vU{S@sp&+VPQ;WnlUoMG^xuYg1AlUcOY&9ITsN3&}g% ze`4nLv*1f2u%E0&rS&r8AeITZFY25efxwH`|19PRRBj102x7vllxubJDVuW*{K64c z>QBL^sqTQYSY8W?#{BN^|+x9-GQ8 z3uf4c8{R$Jk*+GT#w8hp=PhAA;;3RjEdSKf={eO>(C=fBT!A@AKXeH2JbI=*+IXCj za+Le{{68SJK_@*1?X&nezis@_ZnfbrtOklKXjYcGV{2N5&1j>~fLACPOsA&bqWn$B z@(J#mIK6Pv*Y6F=$78ZQ>v~qs&Q$WexH;=nI7{4ij!!fR8 zQKQk9(oUsi*A=&ar^v9yy=JhK9o_Qt#n#)oeKp}Ue|4(!p(Jpu0w&`)`t2NkY1(+e z?N!^3@IpZF+EU>${7>9{$?c))fpB7zNTYp=PF=ZU0EjB<0EMmU_KuwM;{cXVQ}1u} zoS%X3AnprJ zu;>wU0e#U_383E{571K6oNe9)c?lIepT};NID84pyU^7Ve^*P-&7B0&&IBChU~==5 zq{79gs;aJqlM3|PWe$YlNozaXaeY&Y*ZM#y0H9X4DV*$(K$@KsXodqQKk%8J0h%Ic zo%wbqF4LlJ8iSTPX1u1vd`ITY?yZuC@soEXS(rcZ(v4FV4H9?fbhmBeb3cH&-X57A zLLv$I{Siqww1d;#R8tok*CMT1amy1{QQ7?OY3^*`2hW6I<{M#_TxrD{OjCW}rWFL? zI`uu9KPbb1z6nwOn2m#{u_!Dh4`Eue~MUyCxNmcl-UG;E|RF!_8d?tb_#z z8|Oa&QyEz(IHbjAQro7U6{sXO(6IhM4)Mu-4DJJNj`$rvhB?O0EMN1nOb01c zao*sH3$d}Sc4;`uVKmQ+Wc03;MboY~<(hsrE4@Y_<{v;B`_bpGU=grb9*bPs+_4P* z`45QtF&r!YvPGur-KpKGXU#h6n3kIDp<{?{nv(V`Vksm=gUCy`~PWYlvG4F1apkX zMK#@NHF3n<%a4S`2US;=-`y9|JWZLqin>f>{D<+Y(EGYQIAqZd@ zhx>HC7m}9!*%<0Xq5m@#+o0KID{-eb;wh{ag8?%=1F}1Z5H_bfP+|`{bTKFoq`)r- zy2PL}I8nZ0DP04I0?P=A;j3KQ;})-phARzzq#I}DSD7hXy%nRbQj=)E%5CcrNtc1z zW6XJLrg$sOB3;&3=u|dqlw5o|xg*)lICw>eHDDg5S#D}Qzxb5Xr^?@m0^Zy#Kx3X# z7AVwena1XS5PO}j!L@JW1zbzSu2XjNz@^$VFlbi}X*tr`fKdn8NR_9wjg)8%PQ%^~$=lr5-?VO8jU`mPOcSmCD z(LZAYwF8`e>!L*|zD(KGPl)H5gq>^#8?gs0UUTi(4c8EC}ezDJi@ zRzxhxb1?Vu%eoMivZ)|@J^($8>V{twtaf49^NzXpYLoDS-0QJ4g?hEwlA!(WcT+4cqxu^WAf52!@ zZiBj^4{~Y#sCj*3aly%PrQLo0(Q7AR%F`sIk*R-b!JgsX0}+`K>2;?f_r)h_QuBm~ zwB2VY!SR|+(8t(RIX^##RMKqAY#1~4fzNGLg^O#AG&cVOj^ZkRW{{2>S5Siksnq z!Ck4eLr9ue`&PqvUBg9p*EIfX#$fgphN>oGHm>SrtHLI!lIvC#VOPnk!^bzQv^N$B z1T7~R=w!otPi*eB*iHHw4Lv(JNXV%_%-Cf~cgHO4VHEihKTf$LGKTU=rwXWBV-_hvV^925XQR=D=7kjh%cODs9tYXK?mF1jC#|83zt`K&Dh zAKw&m^KzM(cxBr|?upa6@piZRw_>ea#a_~>-5$&PIEL(8X5B`vv783yJ^t`r(wz>? z&CMchNxCf5_rPC|g;en!nj1?FDMJ=)WFvI$?B_`k2NR%J66QJe@?#N3m$*%g{;;r)(SRGc@MO%dxA3;NsU56i({wH` zkhZquX4ac!VZO3jmfZt1DVY|c^MNu`ds6=Z^m@-{sf4SU=A7BXEhhNjYYB087v?5e zRpg|@njY!-Iqp92aA%YWw?$e`9S9-Dhp~g(%@y#6AXu1V9w9c8U((?*9M(wjNiMK= zywO)?_0F^Ve&0kDXXD%hgxrkNYQK>1*NaTqv>hf=mF=&VS_drBJ@%%W zd}FUGcD>@Q`LO`zzaE?0mN~HXO5?<0gvs*NLj-#}1I@!5Upxn1SHX@dY8huw8pd;u zKDZt1=i(2k=33?~+7c#$ji!HjbhsZbSFpboH}}a_YfvAKC1?%kni?jWlBhj%i=Q`8 z*EK)l0%f)Mcb>`yBk|jIMbsb@oE2~K)4{~O}zg#ZLu#BFev+&Ovmq5 zJr_kH9l{y}wGEH%K-yen!TY@HlC$_<*NaUlF4#Ae%JM(~kjN#jy@XwP2A(o@W#x%? zL_EC+rnIHb(#R=@88#tnD}f$KfI3T^(d$AlZR!pH7Km71Ug6mZ7yVMa{f-2SKSn`U zhwM~#OV#6429dcCC0~H~Wc79U5&4T!jUh+Gur%!)^jAvBkCn@r(I4(RzwH00p2y&o z!PtQv73+6m87-W-*I8_ik`n22%9hs_`tD{K6&tY_xXigEb@(bk=WkQ3UE9{yc%%7^ z_OZ6AEfIwqxwC}D-Kf7UQ+Gx;ll@C(%NM7XWHV>}0XO~RrtPky|62S5X8!?@{eds8 z$NssTdv|sC75RKbPEY6^-}+A=ymC{I?ZEZ(#ujhSJN%7`zSBQq9cj~no?aIf_vIZT z2;^Gqz}g^jq1-2Xbl$gOVST;+uCD^iU-)6*VA#C_UMHPhLH#LmKmHMW;hHFlAi4GR zUH9=$@h#r0B0FctvL{ao!gmNwI_vIrUmUU&FENRmy6wRW5K@tSb$?rKp0tha_RIM2 zk^Ln=LvHkm{KKQ8s+_ga8cVM0ywulq+z+m~jhlJ49JcI-cE~MyA(;Yo!S?aLLpu8> zQ_`*Nr5YL{!6={*=TT+WLurUXa(|9BwP^jp)vZv zNPZW$w&glUwlBTYwsq)O)+vE+3%JJn;vXQ^;OB|mo&sl!ch@E)w9|`=(K%PqHzxK< z_FlMBc`XO8+OTqocJI= zTUW_#R5C9AxyK#2U3_~P*1=9YIP=L(X^8c;A>vg_-bZ2OIYA#5mClF`EX>-jilrC- zi^Bl`@rA03WxG|SKj!yNSRVV05GoheC{ zFJx6XjT|1_?GcA;|A(V>idFVlkG{{Xa=?&*;HvjSK0IS-pHycFHW9WM>s z|DneAsUe%f;YukK_B%23;$!}5At62jucpAJ5GFR`OW?=QULD?D+(*897|ClV2G^~f z4lgBWqpxER-}y-z{X+RTQkwk(A{SiiVf z>m^iuEM7hQHWD}93|z47w+A8_p79QR>kW#4&vDsFd!;`j2&&diU>66LPhO!C7mM?ch_?L|U5EROg=ZCKgT0l;5MfEfF$dE|SOQYEssDc|&so z^ z=p$p}+2bT@nweEJ8aH{WlUetvRx-P!{pYZh%&FRB{}UAFhDp@lIrDvX+nsWo#wI0( z;Pf?VxBNFB*=j-bA%%MTSc|=o%J1?1P`VmTjKY(hYsnUy*W8}(8%b9+Wun<5{jEAX zPncE|E@_c3k~TNTNt?r^Iv?;7Y0=7$O78AYuSym$R8|)d3fO)#jSzo*>VYwvkamxy zyx>zS?nDQ~`rL6Kmoe6C%T{t=t(N}=+x77;PA?MmmC3UEa@v9sH{O*NyTxl?aBXF)OUt8u|-|y zishn+R}`rd6#=D1dQkxpL_mnrYoa185s)r5paLpV1OW|Aq)Cm^dlaNb5~-0IgoHqV z0D%Ar3A}Uf_k8a=KW3ge&-|J>=gi(~@3oejDt`nh>c2Vm?}<0StLIc`s5?74OBd8| zKrZw^lzCrMl#iam0^jzRlLPvb zZY^qhK2x=lGNUH_kJXgM#{-oka+5gjf%o_-FC6A^PPqo*Q^awDm9#G(oZdPghu%J$ zV!5Rz{brfcJ9zo#nOT7D0cL3aE^lO&d^cc8LImyHo=`W4soYL3VTbfR2)?1KM1W1y zWYi@|erb$d+EOEYmS^num zzLwDy^_9W%PXR?(1KqdH2KUQHLRxt;(rxLQOK!Cu+R9k9WioFtkQ!B5ExOta5hdWm zIQ1n(7)(c-(?YZYLKjQ70m`1yF80ex<<1Tm*Hepxjwn~Hp`^HDEC~j_t_`o4_Su2K z3X4No`Uj6R0z!d=fcf#%CA*r6FoTMt_>6uRwQekxwNwrL^J(Q z+xK>(Q`&usVgqE-K!)iSf|cg)&3|h}CUgaDt6UM-`kvOkP}|!)PB5h@SycEeJd@2r zu#o56aUE4-T~*0ais0~+icoQJ$3+O7C-cl7RC_Sl22=Ex^Q#|T?NL+_hkcOHg{J-t z+ZnOy4s5jFh7``NZp`K9wbseX*K6ye&C_0^s#2T%w4n*D%2*K#Gt&q6EAs{~CB)91 z&nb>sQ*N|tzI^wY6w%Etfcj}t36pQGkNfx1Gi@}n5-FO{Mw{>2ATGFrEf=;$f*BK~Ub zfPOv>st4w7rkd;57}ldz#DrTipOm|s2&{_-NQycRc!f^rscf>MLc_oDzx==XERX@> z1wg02G(5}yItL7EBV0;9QOKsMornIt1@U?xMA&FIiO4yH9`pck;%lGd;*{+SnyocA zQXh{|QW5SS?H`#Ur0;zu*xHZxj-DyLO?{cE7|q)?+C;N|qHj^?QOnR^p0;1kZ(TPj z@mlbsr4ot>dttlVYv5OfBdmIcrMiLxgZWRIZ${_QnojiH*wTi1)VILI5!I>pn<^gI~IzP(Coy*Ey>{7;E}&b@mcW0z+&X7>B744?|yv`y zz!xo#-c*z6k*ZtBS*tFe%#5_o+{KTLe3#rJQ_vX6K1;ZKf(dn1S8^;!FlRNT7Pa^R z^^x_^D4qpbExk99v_2W>xC*XPGnP0K#!B31X(rRP&XN|v4{xVyXK4(XIE)JpoQSB=#o{JEm9x+i~}*zsO)4P+}$Va2v)m^zuj zixG6trjg}f3KKzviRC;E36FV|vNe|{M@$~3k-oPtc4a5t>zhL4Sw9u4I}cBjSGc30 zr4MVN7{q30Cj~S(&NZVaF0D86Y_7T&6<#w(_mn6okm)1Jh9b$ zio1oBwnAPEXIS`s@5B;21?3V-uX6ZV6`H4MD+Hq4!XMk+8~0TaUYim$+}HVJN15JZ3wNQg$p9S$R_D z6!)I#?hr$8yA-JYrJ>$NI_-n@o+5Wwn}OfLuQ?RJC8YVY-oRNi@agSpz@6*)X0;-G zt&@Yc-R+K90zUKZbD=CGbd{fg+_Z;?3%4wt^?ga*2W=gh2@5Zx2xxOiimq%gk-!_zN2kFMZQw$rz z&vLsbY?0ddCxbOqeL&FsjPdoK6X3z=Vqdw-seJ6u4l^#TSI@MVc@9 zmL1WsAJgA>6d;qH`|KHSeQk7RcR}I{yz_|UxqZ;kxI0_-wnXtz1Zc2f#r4Yi@R6Ui zQRQ!ygX!r+y6Kb33TDxVMu_=SuvDYM*Ts_9HuD-n{4wj=A51>3s`2%RDIT?fiD2;> zNBN@ce|%}$a$(Nyf@>=F@fCutc7G=eo1Co}rFIpU)ORVN2<4Im9yQG3EJNy396(C&Hqm8+|DQ zmvtyPSJ`0((i=Xq&W&bd`l)9^c^tEH{7-F5tzuS*di^CnL)v`q0s+7( z`tLX}e0VXzxD;S7gWffOpvYuF^!R_7?O?j;P3u^<5k<3Oxa($j(C1ze^b7xCE{L?= zKk_SP7HfgPm4vqhj_iF99ktpA;bu!WDXe_;@>w9j09xU;2J{&+BMAh&)kFg&^nOO^ zFo*1p^mnuwXMd<0r7FoL>=x-1W^$cg1vsKZMHb{PmJa@UtCaoqAB1eMNhSip=i}j1 zHgvP4u%ROz-}rPR)M$9%8vAMP`#mN{W=^Qn9Gcs-4_aT7@*&*}XRLN}rUF=SfI5bX zbZI~bnY0#*by&r3=F?jqa0IEXfw3qBikFQD?^ zQ#O5&CC_Ow-LNb44s>>q7RGajJeL)(#QdasWhFa@)Gd$+K!4y788t-Fs?Rhp1rO-M zvgpLRZc&y3HJ72V*3DiC;gYCfIn?7T`3p^vUEyFw$6#5yW5%4MNL}GJuX^fk28EEv z7}N3s>RmJ}S&F%Sr+;24&mV97LB}Q6isak#4hQ+^U$Zpjry=_@yh|I~xew~2%l?56 zn~JYE&{-)Np2}3S;BA;ke*+$6ymxDezk%UqzmQ9o8%^Yq#gH{K2QVcfH9D)$Rt4I= z$MbHiD`LMC>i}0cFN=&TC}3SKC^;&awuU|i=)leC>Z`|VK4EGF zvifaHCv`R{wMSc^HnW4rTu00q7sBhUt$-LUi%ST=Nl6XO%^A}jvevvDxNh(G4G7J)+M0>9ezhN@nOW@VL@ z#~ELt3PgLFFCUx&3ZkY5@E@b+^a78X{ERlTP&+Xw`n~C6dr&D~FfYTXHug$*D*dnp z_JV`p=iJPLD#qLV`r#Qktq1N@OYcWq%*EQ0t}u7+&#CiAb#(A1urne*bVF`!y82_Yt*HSD+L>wipYmz{4^aZBRfoJxrF~3% z^lzUV2c5NQ_{)4UTD=PKkHEi6)712d+(kDQv;ncQ@G5Tjc(V(%q!O`fh_NoSKw4}d z6efM|c{YBiEn$&p@ZhjZCPFtAp!o9)7+&UH1^$s~Sr%FGMlG%BY0L>(_%i4n;DmB4 z!ZPXt-AnG~b?FQJcQp8JmuIK81g^dF_P4K%3nK+(XNZyMEFrKcF4*JtFt!#HHx~82QtHfyM(0|);&AKerz1<=U z6;$U`wk6S8VXvP|1WV-w{yj&>HXscaC-N^dW~i&pITV7_*O_O;tJG>^Yt>%2uijGA z#BJy=yjHg5VoAnTgK5`nH5`;uO}r`GX@MZ!axbOYlnFZs`+w@~-URyG1<9W6eG6WR zAIqwtK?Rk8W(Duww=@n;+2A7#`pqzBhV+%(PNW15^_3jC>)0LDNN3aasOguOf~@A+uJ1k`Rx;VIN1c-i^@}Ut3UUPM5*~iKH&;N{x>Dlx1NeO zo>NdRy3(>OJ%n_KT*XG?qeXGr_G-tj#;o%lC6!s}1a7Tj@kzoKqpYP1)lMH+1KUKcp8^_ly}+3v&yiJFmhr)5mP* zrD+!qzc;D;u0My=KiseZ*}CkOGpwd#LOcC5LC50Vq2!Z#r;q`9rfE4ZYRoV%;UzjL zNc<`w;))g9VK*`0WI$fYPz9VXvnyE-PIA7c2n1HmjBATSb)_?Zo=%BXfXViwt>XJ2 zf=qqVv|kw`d~z#1W4$^PlCN!)pW{D7pobNo?0&UAJQ2>?Vl=mzHec_KlpG>xiC+V- z{@K|K_nDvs9|F3Kv^LlVTV1*HXd(ku$@b|rG*Q&Hwm{d^X!QF|x!_!z0yy$?n>_sp_wpv2n!E0tbb(~{yMxttC7XRoT)~B zu5fy}Gvvn>U(czmD9RU2>#mGJOk|7kJIl>^J$hqjQW3$&DJ&h&4qyss3C#H%u5c+e zuPZasri?h4C8aCy!w$P-Hw2WHeoM;?C`WJYQT&P#V+A>R_+q5FxpV2`oK?w_gi^z5 z5&r6I5p;h6jpI(cBdKUZENB>h>6M>rYKgoGK>lveGyrvwWk5#3E)MCjt}U{_KWgVA zbJZb6(e2KT?P4ys9p7tvlSpA|E>~1|L^z~;5lA$PpKQObNLXJya8=2)rt9U@pUE2XU=8@ zJqu_EtQmk z+*fH^Cb=z4mkfxIFogQ%T~j?!lA+aiA?Y~LD5CP4rM+uWI<7hfO>$(|!ExCvOkSQf zr8y)@weYKy$%uLlUwCP{kHtfDkWFw|EK`1sIx;#LR264?hDNl^2P;Po(6aiuWY-F!ly)p{6$JD+&u$hZx0iT-|jw z#;ICuEtLL(V0ksqL&5BoUl9g_fiVglVnP-xRz=3!Cob1(h_?H2jxj~E0By$PbQh*n z*;;N6{rC5@tnc11(@V*upYDjU#=RFh_bbH7vMtd-EnNx}?SOAOErt5$m_xt;S3sf9 zy!V{+cHc?e+~u%cDaNO%s#fqdGEPK=l6mZpzZP;qs!|p6BegHqlkjP0 zb!%PaJr$Z1C+Wn#8blu(NL@^#fsYU2bEF{-t)ZrKG2mfbidWb8%UA`|CvDeUER-{? zyYzq92ZkOUdEol!k9=g2{9PjZ9i%|K*B7#NrdBa;U{hu|@Kya;G@duqB+k^@tY%%y z!Q{LraoH7~|CwqNmTR}Ut7z2Q;fOuXlLR~48h2oRRS@$_E0FyN(EhWwfSr^$B9l@o z6!l28mc|1W!`@ddHSXgvRw+$1Xl*?X(HUxtSHrqHs%@%-Kx5=^&o75`JUCayysz<- z5pr9@`;dFF-p{2QV#mMR*B|re-L!FJ@-gpzjdmpag*`g!aGnRy>Er^nN*(}j}!t5+sPyYtgDP8S7Tq-AZOUBw=`|QfR zy+c-e5ZULLge!9XP?K_%FzvFs2v{neZ~S3dm_e=78|(Z1pO!pF(9cRY5Yc4IC zDZO$O6f%4T#D|r^rKO{xnOzR@9#+mU3g3acR)xhH$U&Dyh;l8)9|tS?y$`Z-SPeq!$3 z$)}nZ4tTZd>B)F3>gqd2+2p)s3M{yuLYm-(;-BTmw{VCq<0BQjji=e3xwN0tU)!Ft zLt07H-DyvZcblTd$o#lCdl6`HqA%eoC^?qa@~Y3Ccbr1ddqQeTUT@sY@%(x@xun#@$lVOG z%wh~DNj7uhbXDTj2L=th71A*Dz1*G5AFh!?j&hJ+-F+m<*`Kp_8kv9KXWc^I{*<-- zR&E_0d4o_|Xi&p%?A&VeN?-g>Jnx8Ti!>OW9e%Z2le7 zRoIyH*`1wvPd@e@0`f(qN%2M5=Kvq06zv}9D=qo#-KDb?u-rDVpW4>` G*#7|0Dx%l` literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/backgrounds/services-background.jpg b/src/wp-content/themes/Broadside/images/backgrounds/services-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd6eb1043abb4a3897efa02dde617312a723e090 GIT binary patch literal 32782 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/blockquote.png b/src/wp-content/themes/Broadside/images/blockquote.png new file mode 100644 index 0000000000000000000000000000000000000000..987f5b1cb99af432c0f9e5b77987434369b047f4 GIT binary patch literal 1360 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoN!3HEN%BSrG36!`-lmzFem6RtIr7}3C)9WTXpJp<7&;SCUwvn^&w1Gr=XbIJqdZpd>RtPXT0NVp4u- ziLDaQr4TRV7Ql_oD~1LWFu?RH5)1SV^$b8>f+_U%#ji9s7p}UvBq$Z(UaSTehg24% z>IbD3=a&{G10ya?8Dv#~m2**QVo82cNPd0}EEEGW@=NlIGx7@*oP$jjd=ry1^FVyC zdS72F&%EN2#JuEGPZwJypb2`JnJHH0=B7@D&L*x#hK{C&hOP#d=B5TtjutKkj)s=5 zE|#V+y)OC5rManjB{01y2)%AN^@5T@ZUN9{m(-%nveXo}qWoM1u$Qeeal6GCr+HAl zDY)I@f>WN(8)!cXG?=8MY&oTaf=Kr0~bKlp@E3lZ8X2_qxs{g=3*YtC9-UhyV zd#4>fn!tMGfZYkdg$v{g7#1b?u=*o_pZKOqpi)NDE5Dm z_^ZiWl|{!UMz(*rS`pr)BlWuY!@>L@rcaShdTRx@uI4+qV%dSHhy4x41umA1H`h&A zYMOoMykM|uF8>|xiACKfwx*q)CUwp}VD*2OD@m)(Ra7cNQ(PDAz2x_#WM$~3JP(fv z0^7AtpDkb75x@EHj+bWnGhI~_U7M!0%y_o@;-C5HFBS*Zn5Y~v^}aZz`1Kz7zQ0@s Y454{Jo5Xq~SU_c*r>mdKI;Vst0I&M$t^fc4 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/blog-comments.png b/src/wp-content/themes/Broadside/images/blog-comments.png new file mode 100644 index 0000000000000000000000000000000000000000..c41ed9c45571d74d50bf857d76c852f052b342ed GIT binary patch literal 1533 zcmeAS@N?(olHy`uVBq!ia0vp^@<8mu!3HENpTFY;Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^Ko2Tt~skz|cV7z)0WFNY~KZ%Gk)tz(4^Clz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$Ab zT4JjNbScCOxdpzyaD(%Tp#cR9GX09g0)0b01O41wkiWpHi%Wu15zfG>x;Uh=AXPso zwK%`DC>aHCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd9xtW{0 z85)|K7?>Lwm{}MaS{PUuyE<7IJDV9fxtKc}!py*?*U<^6&A{Bz*wxb2(9qSu(#h1o z&D;n`nwdJ9xR}B8dgc|EB<3Zj!tBii+6&cdiC3?cb5UwyNq$jCetr%t1q5W|m*f{` zjh_UW+;VG0yaiir znx>XsV$BI!dQs`AhkPXZALRDMvdnEw?7w4l|J%=|D_r z{;Fd$INosN9RHEcdE@x!%a2tYD!%^`OBA2C@TQsGW#_pEiZ|Gu$$Hn#A=#&KIIy$s z_VT(%!acly`hV_BsoSU-^N=fi$05;m1+CVN`YXQcDL5WpE2*QfJfS_owBje{-<~hm zO1PJ6>@C-AyJq>o;l;OU0+ZZQp2T+T;}JM6FMi?Ii|@I->glF0zG*O(h;2GHO?bf- zS0yezHZidWnya7Wf8d?C@N@8$&jvq28={MnTvf|&F4}T1>@LGG4R!|KF1>v=KYUUc z8`IYv*!kOLvR7ZlJEk0A%jI@USZ4@SJWM)&`vCin|Atp1uI;iZ2wVL(e%{;FTP}09 z-`~nx#uWDPM9;yt51j5b#*G`S&tJ%S{kbVyNFu!W{86)C5BXR4O6GkwUms}yiF4WJ z#p}J?;9mVNTj900oRL#%-K4bNw8GB})ec})L=0pUZ zoEyIM*p+ta1Dc`|8`le23Pw6SSgO6@?AaC{RrfhN7;eiMZM0zi@be(+jc;j-+;3|h i-4vFu7PCd4k&WRG+Y<{u)r}IM0@>5m&t;ucLK6T|m@V@F literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/checkmark.png b/src/wp-content/themes/Broadside/images/checkmark.png new file mode 100644 index 0000000000000000000000000000000000000000..97aafb17ac62278cdf84562838aa48cfe31f1c2f GIT binary patch literal 1374 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/fancybox/fancy_loading.png b/src/wp-content/themes/Broadside/images/fancybox/fancy_loading.png new file mode 100644 index 0000000000000000000000000000000000000000..2503017960b3972499d3aa92f89953935ae40934 GIT binary patch literal 10195 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/fancybox/fancy_nav_left.png b/src/wp-content/themes/Broadside/images/fancybox/fancy_nav_left.png new file mode 100644 index 0000000000000000000000000000000000000000..ebaa6a4fd34e51575a01da366312c20618985cbc GIT binary patch literal 1446 zcmV;X1zGxuP)R`@usIzf?P{x4#0gFqr~|(;IJySuwjr=+Ar78e&sHZ(Lu;P)*wKU%|U#jmpg5~Q6= zNl8{#mZGz>Q!_F$qJ8n=#Z9x>Jn_n|ZEtTsSzllOW_Wn`!@Rt_=!l4jAl`tKb-5%L zv7js_CMF<1KR>Fcr{|nbr~AR4Y-MG|y0EZdwI6@^^5yrikSZ}TQ5hH*C?{R4Q{?KT zKD6U2SFWfB2M0g0TCEGD5GUP%Y0a>J0W!M1fVuVU?d@ix(YV91PjUK7@OzY8E)OJ~ z&Q30n%8njA8kC)#t?uvd&xMXHQZzI)WQmTB-n1vQM_gQ-{_*3-7UA?*_bJ9=m|W(F zT+IHE$H&L3T3T8zSS*%BTHM>)YZi;eI#;9uNVch|X-go#ckf=VQmKq2-ORBYaGo52 zejyg&!SS;_ltMX3~N9_#ORsfn&tMTp}T$j*yAd)6-A(_4O6g z0=-^ug|9bVkxorbSsNQ0x9sPG&EF`laq6qgf=!d ztnQGKnVtDqz_Vx1Y=Kr=TU+Vx?;nS;5H`1m#Lv%9fqI)#T3Y%!3C+yRSpE-E!h;77 zwm7Z1{&Y;%TkkIqz&m9sAKBbnCkzsHry#@vbY{a-wI?zu7 zloV4Q9NtQWLUAT7Ev=G-*4EZ6|HZd^F*!MDB>C#<>PDGN_5sGi_Yq4ZlG7@css!ck z9};wyN`LrygSGPaaLVfqXl2Z+Nkm;ygvo12>(Bf+YwDwC`Hbwy5foiCI>(Z2*F z+nZVe;)K}P*aF#9Y8tUS3{lK|w(!NULrkdP#x17leSb zXU`h&IIwaw4`8eqNV6{>BDOh|vjhZ0E{e&QDDu0Pe|>%Zmb;{dg@s0w$z&rPA0K~+ zu^J$UblaCq5g(ljxEe?Y`8AmFYt-vOfqZ&;+Eh?bV07kp3Z#jN34Zfk3!OW_7k zM!Hz%fopN!Lja&lI}y+lIZjBszTeT&@!Ra|?DQ)q4Us*EN5ey8M=zh0NVTlX;X`2G z(+8kuN)-Dfn@v@Ns?$arfE9ks%*_0?uCDGc0&cYN@bK_KngiO{r&oDx0_$@6^x5~= zW5Gx^5k=$2z;)mYpdQiR47B2ZEBzOVMD;v(on_N_Z6xdRarMj=Ped`)=n zv4Dh?$k=SYcJSdjDa(58`F?t%ZzxBbaRs;9zaA#)un(S!5dZ)H07*qoM6N<$g4RXF AD*ylh literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/fancybox/fancy_nav_right.png b/src/wp-content/themes/Broadside/images/fancybox/fancy_nav_right.png new file mode 100644 index 0000000000000000000000000000000000000000..873294e969db9160f5ddd4e1ab498ff60b080e3f GIT binary patch literal 1454 zcmV;f1yTBmP)Wa6`&Z+!IVkxf`V#(j>y7#5eg z5*PD+C=wGBwT+F9xi*_^fd=>X_FBba@wz8b0c3ma+OG#c&LYnSBp_4S(*6BG8m#QpsI))yBSw}|WBy?ft)>pk?VIMu|0u-xC@UxO$< zHa9o-0~vR8bXeVyB61x;@W6T@vgyO$TgWvPslhu zJ>BGvFeN3$D2UT9wO!c-2M2E;RvddB6cm(&J}nRg`1!DUaA;_#J})n?kc`&W*6f~w z$XoI8@o`6>)z;Ql1O^7iqc4Qr?IQ^Y2vDQmrd_^#`AagIo}RXO6Tw=o)=2K&OZ?8A zJDVKcH{^2p2j~ms)bf#Ff5Y^8{ZZ7~8Zw%koV0nHJ||9`FbS!%u(0sL`TfAafI}Du zN;}#qfQDkqhr?T=R;!O@W@c89(aOq-SHe5pO)Do4INRL6f8R{+tE;Q)Wir`E=nLN^ zERjf#VBjT`yZ^}0T`IW~brs!I17PDwDHNtJpz(@u7&_Ci&*x`nXGh4eva-_hHlhTo z>wKX6jrLg})!Ef*2q(qH#unh5y~V~`*!#E25W2>+0$@y%jAkE;d^% z7KiBQ=;#CV)c|?K?OZZNymTtyIv@+;=i$b0QLhID@u{gPOF=<_+1^cd)FbceJt|Pr3Z2#UW)pC9hbbpr%#_w3xu>9DucKZSqKjwKC}oa!!=;B zxw)ARh3h~maWUsB$KtMw06>R!GGHKatdM5?eS3TRA2TyEQ!m{-s9LkQG(13d^zuqc z)WBRWF9N%+J^)=)qIgeo*i|*CI?Xfzc;V-hCr|!<<;s9veooizpgD1ug<#0dV!Z literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_e.png b/src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_e.png new file mode 100644 index 0000000000000000000000000000000000000000..2eda0893649371f8d92b92976d8542cdd1b601ed GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W@!3HGnP3ltxQbwLGjv*Y^lSRZuwe#}JO|p{EaWGAM`~zK|Yh zF7SQ+m+Ig>B0@o-N8?trihfzZ+Vp1~`{zf0o*#X0$hUAi%N$P)W1wCJ22WQ%mvv4F FO#q)zAp-ya literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_ne.png b/src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_ne.png new file mode 100644 index 0000000000000000000000000000000000000000..79f6980a3ba5c43de120d963dbba2516b8f27ac7 GIT binary patch literal 347 zcmV-h0i^zkP)dR9Yb&V8f!h)aDezHAsc|y@|hdQ zYJb}?8~~zFbQ)ku!Ey)KSukutuvdZ@MKMX|x|A3tPyx?YVhN^6z!Mi4Mj2f#%<;nh z2{>?YAzu|{u^;Oq!;f7Z4tPBpJEmZ+^GZ#$=9nz(K+UmK7}|u&EPi%aRt_C3qOFB_ zHc`~N>51%{?ijG?xsHt>MwRChgk=x_z0gh3O2xSL)-6?+2LKZL74~Q>MZjWtwukkA tvjRC=&j+0R$&bLyT7MhBcTXDISHC&xXU0&5CWHV0002ovPDHLkV1fX+la~Mh literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_nw.png b/src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_nw.png new file mode 100644 index 0000000000000000000000000000000000000000..7182cd938ae98e7e28c65a0bc55df576042ff9f5 GIT binary patch literal 324 zcmV-K0lWT*P)2-&4CO{qhKP$XKD&mgeXEM77>~`RA}h@U^Z##eQZVtM>a-K?QT4 z&(8BFf(rD5V61)2I__wHYuRwoaDIqw5Vdr_JSDVr){#J@r;{vbDL|tRyCiirf~4OF zX-l=Ecm>@yR)1nSMt~dy90Zb`^`)TQbhf8jR@fA!l6V$musRyB9Y{p$SCW}!$3==V zk)fW)Xo{s^ez$t+XhmZj;ts)!kTokvmM>z)zt70000 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_se.png b/src/wp-content/themes/Broadside/images/fancybox/fancy_shadow_se.png new file mode 100644 index 0000000000000000000000000000000000000000..541e3ffd3e88224b34a4d2097c66a780e6060aeb GIT binary patch literal 352 zcmV-m0iXVfP){pM9=`y8<_IvWD02WY@RZ<9dgjNmAB|sYF}Xw>7Sq@O0000eMf9z;FC21=)67q_`W0*0KnS4AR00W2`RGn3i8UfsEegLO@ zPhds?2e1Tm)FK3=bymIAx?X=YFo3Mdh7W?@I#8s#svp!&PB> zwah@Ngd|l0N4SCfzvjtQnd$dZ0yM)N$X+lqdtN!Pt{Wn*_`0U}m1^#r1 mwpaW{;a?9KKt^WrpTAEd?0j1W(3L*`0000P{ho=rRL|66mGO)=r*Hk83F#~lnc)I$ztaD0e0sy?& B8X5oq literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/fancybox/fancy_title_left.png b/src/wp-content/themes/Broadside/images/fancybox/fancy_title_left.png new file mode 100644 index 0000000000000000000000000000000000000000..6049223d1ec6af46e100499c01f6489c9e2c6240 GIT binary patch literal 503 zcmV+)0005LNklqcp9&~$uJw{{rUub~E?-XJ#Upm4Fe%-Gl z!u%tb0N102a|s5;SPlQvJlFCTBbvYaK@wIW6Gjx@?i20AlVDJcHNfh25WRlbF6CIq zv9_ZnqOH`}ppaUR0@%ZcM9zpDt2uQM>f+Z#wIMmyuui3DeoYXWE|hQ{D$te=Yhgkq zIvyj+$t8T|S1wITzUftNOe(E+Qjn$kDotY;I5}1lRgwi=?K26ke)djLR5W2|!7CVH zJ-`tuAq|`lK978y+CnqGNCkUke_%Gig ukvFM-ftpWh!il7Wg7kz7Y?7xB@G*olNlgoj4E_Yv!rmdKI;Vst0Ha3^zyJUM literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/fancybox/fancy_title_right.png b/src/wp-content/themes/Broadside/images/fancybox/fancy_title_right.png new file mode 100644 index 0000000000000000000000000000000000000000..e36d9db2a7c6e570aec993d3665cbc13620115e2 GIT binary patch literal 506 zcmV+)0005ONklxjQB-g>5=x46nGBwseihc$zfzvTFh(=tCRj6cJ4M&ASrCAq-HbokPnRBAHVa2(-|l wYU(UxfYLN;KDSr z1<%~X^wgl##FWaylc_d9MY*0Xjv*Ddw)7kFH5l+P-xcE$W)3=fYI&uMKVzWNT*W|n zhqlRY)q0r(8Mg&Fu_zpISivgz+b7g)c6G&O{~njE??Y{u-MM!p^=9_W+X-j8mhfK? zj`H2Yy;kp%)!V-M3;EVThyB(Z@o88wpMja-vy^g)SgE!<&|(HpS3j3^P6|6H_V+Po~-c6$N>^IEGZ*^681?Yf#{6Zf~e!I`r4y-J+3m*Ue*gH=cNZ zzpU%p61aCO%jt%FHUKW&bEWLcUAGzK?;SYE)E{9#W9O8@uj{O@89qzNU(dkI YVCW(7-@(*!CeU;SPgg&ebxsLQ07`N|KL7v# literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/fancybox/fancybox.png b/src/wp-content/themes/Broadside/images/fancybox/fancybox.png new file mode 100644 index 0000000000000000000000000000000000000000..65e14f68fd83b87f75c22c0c074e7b20bf20a133 GIT binary patch literal 15287 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 ZMt7F5hocMxav&E)U0Fw|QQ>vO{{ZOG+C=~W literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/logo-space.png b/src/wp-content/themes/Broadside/images/logo-space.png new file mode 100644 index 0000000000000000000000000000000000000000..50251af8830780fa00e9b9572315e5a01587fa74 GIT binary patch literal 5581 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 literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/logo.png b/src/wp-content/themes/Broadside/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..240f8fa57479450296a967491eb7a6e8b5fde0eb GIT binary patch literal 2129 zcmb`Ji$Bwg8^;yNB_iRtO*pprg-{bw`Wnt=6QgLFWo)@5v0*Mti5MkwNor{BA-8SB zInvQZYMR@~Er((*Lq+Bij`Mq+|KRs~J+J5e{`>>a^ZL+SoE_z4)MdoP#N^<=!O%Nq z?`(pUn@<6v(L#SNuf$%idM1EqXin3 zLoV?x&-KOrx-0(W{IK@4$>QRo%q64PNd+-L{Lr!g;$QvGx$16+X8dcVxf0zbqk&=c zY%3`tAM$88Bb>6m*1&N1SW}eV(Z0}da94xc%xBk*N3*TiER67?cFwsaf)49a$+`r1 zUE&RhUXi)#oA7pZiqfLcUEgPxU0^MVH4$3zw={PPWr6((L4vqFDap`=M#9+FZNmdw z^0DKZoUVqR@^Y#Nsr#~()JMdf%=@u6?tlp;G*pu^9CCl&d-qk}pusn|O-vtNYbH3V zuBvQZzN1ZRwYJI<@SqDeY=@r~eyW`0C@5O>xLUG`&Cc4OZzF4127>FLCm+tRut_7e z@RTc$=LzE1a{^mUvbsx>eJ_&y&P#_QX|}m zYnnAJMFa_^bDS+zp}8nRg6NGR)bZvN)k4^N zt&%QD<^ax;3+vm*56Co(DT7bTmc4Iol(Ml&v}Y@HgH<@K{(G%<lrYw-dy1Rgo(wgd;W@~+nflr(kS=7;fj^>+mdEejJJJ5GL$@;vJK7XB zCTj^ZZuxQXl1GB~)gjl=+-GKA9@bBkx2u+rR7`B(9C?+`_Pc|qG%{-j zDfeg3woyW}yp!|`MjZ3{=SP+}rpC}=J(9({&9}7;X1F8WTf&Y>#b}=>HZ8+#zw&Xk z>dlh0?9IVm{x=HdC5`IN44(Kv7-7+eR$}P`Y09skZXxk-QvN^~UONgrNJ@HZ!?za| zKNPsZ$!sdWzEtjseZ|s(#U?AC=&sy~3)Cl7{&L?eAYF~5n2Krs88Ef`7)ktLnfzMd zTnIkzd6OJ<c%;wo-zB(f;y#EZmObWk24LZ>%8cx+?bYtj3U$dg^Ce(AAo z*X?!d-<+?VPyMt_LAgD98j5LDKzY)V3!UbWN9~YqgvG;a)&0<>DH*iQ`>rCU|SB5<-fe@0^O9qB@ZlRLlq(A|%|t zfHsWe6{s=T*v~mQ*t>6wyn^p%&A$tu+}FFxZ?P+}3J_qr)#pSH20D!#h=&QrVJ^KJ z5&fw%0Vk6uMvkpb;$w)yFz^3Np+ZI+;@$}Ds&Tw!9*oLJndthOJ9;{9i*0#jL#1a5 zvlV6pn3w{Wqv3&^)!#-hV~zUST?zac9G^=0;{0tfN5(FQ~wo z_y39JT7>JjuW!=Q*uP`G7-vx(1~Ru8KS9{vDf&y=4d3NEI`~H)XaM?9f+R{Y<3}^=*4F zVrV_OI(ozPmbEcbKeVg_>D~&qFkgro7;j5?ZNFT7Dz0%KV8Ivx+{>LS*3KA!w8+UFR=ky%-9(;x#$}AR7E2-I4T2n(U0zrwM-Fd z_X!p&4D8t-V0k*#=g!Nz4q}lk5O%EAaN0m3LDJS=>>vEA|3kiExl|w~F7|LU1TAqo S++?RCh{5fhVb#E;_`d-T(jq literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/orbit/arrows-new.png b/src/wp-content/themes/Broadside/images/orbit/arrows-new.png new file mode 100644 index 0000000000000000000000000000000000000000..e39a65f4792c3a62ab4bdc2bab6632952e30906a GIT binary patch literal 2004 zcmbVNc~ld39?ugIuY{(k9FJFqn2L)eGZS)Tg6S$Y9}JLfB3rZ?eD$$UGx2X zzn||lQ<|)Ng}gXuF^NPX%Vmg)SXsmqv2Xz~hmHNPkyrxpg!Oo;S&!#wFq9U z+^ESwRj5X1`|BrY42k5GX;81n*DKZvv}Pky=i3px8q|K6AuSf7;-s0o)N zLK^XgsWa#V5Gx9TVICXeu^?^~3`a>2zBE2cB87Njgq?uQ>3AMCfdg~lNGTN0g^7^> z#d9QLX{40RlCTrlFb|%?%1u^WW748?b`6BxS!{yzPq6|ChH7v#rZ$_m&s9KjrWrR| zGtCx2lFDJifI_1+m^?S01kL)3pqL>S)k!h45qJ_|f#Ep}pveE_`7BoV|3nQW$bg>m z_(QqOT@f|t**+_N;_$3}P!rKJn5Q{{oS`Jr{CRRjtj-^CZP+BM&@3zZ@5Hz-<#Ec< zOUu@s{7yY&r+OFgF2p78wH)x@OmFmmn=X^R%qd-PDz|a>;zWN3ZGYlAzvYR3j0;QN zg?4TGg~z+{rSHofKCL_MbUU&TX!sW$_mVQ$mpvqOQNJHk+=25qn3W@oR{c#9DvqyS4 z?DiLihKI4FMwR!cJDJr786eorIlA`5jqRs8I__4z)~tBBPM7Q4*?R8W&p!wNg07@>#m2_!qobp@^!4@qI50S9D)d5Hzi4)Lb=8K7HMhR_){?yY ztj%US?4GfEdwYNH-qGIBFs3gk=t`+ihK{cN_@9~$5mi1CiKOns#>*okHGV~+fTblr zxYtz5=n()ASK)Bn3=R%{{TpvO1P!gUH#Ifgx_I%T6Z_!xcyW1o`Ssr3-h(A23z}P_ zVqv(wvZ|`nXGSk;6sy_i=@lp(1p3p?A| z?g+xddLod|Hn#lxKW?`>`^ec}f8E*XbUHVsq@?hLLgQF)&?xzSbZYZ8jGb53-Q8Ui zE`B&VGP04uWOiCcC(6E?m`HE?B~4vdpAityV9LsBT125#Sx3VpZ$Fl`JbLu##S_Ym zleNIU_!3u6PR?}i;JSL0lxW%un;`vd0eFF#II^ELJa-21=Xzz-?ht%>);(JlOI{H>{lY{b75^1s=6vy4< z*k=loOCNom8-BN&b_gKii>FJiAUkYju9Q%4cBRu>7nM|HOU92wZy+!4obCK;1 z$BPU~?7sBmxUam5-OYi@c|OuyN|k%>>Zk4U7%dg8@$^k?;YXpCr9B%yvVV()tWaK~ k0>ys!DVC5UDGKfoZ!!N9{H%FHOpz$D1XEXer(2tz8! zVL(SB04E0vng~!%fPsODgN2QW8K#zromrTLl}(&Ol2KHQlR-#CRZT)r$x+#rOAw|6 zZsh-43_L)MOoGgU4E7Ai-u`EZxH{$P?jWubKPNGXpv$r0Ofvx1#%#3@^2e&FO7Z2n6nAoQGhDl`a;fAEBQ;WGPZ4Yf{)bh((wvvf!%D10= z+({<8mRBX1-0G}oIclJ^Lm{xmt6WyldTHaz{|o|Fvw}N(KAaZ6+M^+$`e5b z)b=}HCw*CYI6o#8t%9c6Q~>zr;O1eWh4YrsjTwU5x9W{1bV8dgrvF zpF#WQ<)3HpdiQgYp0q%8+QaYeQv}Mlnti_T=}}PK&hocQ4u81Wzx-#({^JFwf2ICs zh}qvTEB4x%?JCJr?`AzH=hEGJ-ecRl>DtqlZCQE#>W_0RQ+A!!h`wR+FJ<+9y$AOH GZvp_rbGwrO literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/orbit/bullets.png b/src/wp-content/themes/Broadside/images/orbit/bullets.png new file mode 100644 index 0000000000000000000000000000000000000000..81477634fb3946620dcbd7847e5d45a705a89666 GIT binary patch literal 361 zcmV-v0ha!WP)U825kmewyjyUYSe18nZ;l<2%5B5ENhm5u)kt{CpS2U(^vf9$9A{Jy~n-p<|Ii% zq7vwU2Jj>of(tl+nBG+Z1JDI^$z8!7Y(c~cM>eQ|A!yTQoxmF0ByNHU=;y58fjKxE zIr+EZq`oac;YV>&-$q8-@~ybugj-Nl1s-4pHWK?F0A*QoG}3ch@!G12x%f=Q>HAck zT~}SGjXZUsq)tvbxw=b#mMd1YRVepBs^?kh+|`KBTb3K}+B@h;9Aw(!s~l_3bHFwo zTR7>YY`Xkm({vVIHjQP7$YRjaX`W~No;PTb^Y359Q-A>gpTk71C&Y@}00000NkvXX Hu0mjfghQMM literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/orbit/bullets2.png b/src/wp-content/themes/Broadside/images/orbit/bullets2.png new file mode 100644 index 0000000000000000000000000000000000000000..1090c4a3aa0913f8fc9d924565052f3500789b50 GIT binary patch literal 374 zcmV-+0g3*JP)B*7a< zVH#7|1Wc;MN}CjR0jq%I4$|ieatSHY2zCkB*sX$v0WCt%#)~j+AV1CI9sCvsO{{X@ zS(Y=ynV&O(wbl?3&T)wo^AjI+iK42Ib6Yab=hti&+c)87w^tuZ%(Y7i`P(3 zqyA4*zHqOmWDV%=Xv%GsF?~5wu@Hh zLKg`gI=U!=uh5qe1m8k*arYsDiwXrdJBZ+*LkkYJOKC+?EEHR+W2ZLId+&b^{|^#e z6h2NgxjExXa#`pb1x7)oK z4u@BnOvbnJof^>k{eDobR`bXAg+gJu*=+W#xEN@yR%yzLq~&zlYj;XCj|`(P7)dn zoHR5DIEiS^;iRHDg_Dft3{E3B{bNK3|Z-U1;N52EQtA|6be zmoz-6#zIMWaILIT@F1I~CE&rf>!agA4~QV+!H*=N;)xi7L&Os^c8P{3YS0%6PuyrZ z3ZBT#3=r_dZlB>AFX0K_T|b>pr^e&)br1w+`~Ci_SS;Qy7K?XQ+#f4%G#WjvR;#!5 zdi}wQ0}i)ABOKufM>vLXgd-f`2*(hPaD*cq;TXaZj&Ouye&kz#0RV%dT+D+aNg+BXC~aqF_uFn~+VkOj zIA6}0-<Uy#$g#LwFPH-F?NB>NFPX~8)J;h5sYDsHJ-b9 z));53u>nk@{PUZTeQrhvktXKgJMXGSZMWVBhv%$1kkD_l7zsd+>O$rGgwH}zXSOD+ zAN{myeC_X�xnl(rspR>h;YP7ve1?`vn|B#q%T0{*kGusPQ1VElyHoH}5X5vB<-4 zV*k0aF$Kbq1hWQT>WSs-H;GTDsDu?Zm;Y`ws1(tN-x~qnR7keG4}Z!#>%Nv!@ukrc zlJ#fmh;+4KkfYo8;F5jrZ+gIsmI&|2S1+AWRQgU&& zDZ8bGE=^IhI3~=){R6}eAm~qhgh71>1H}I{hzZfYESzyIO3=qA;hp1vYab87k4;_f zo#m2l%(%|Y@)}fE?1F~~AMCda(Wlgp z@Q(+er^uB~mFgeQ$1Lt-FS4vpK6$I5+H_?7?&riow^9ZM_giWVi7hdfo_uiLOYRwg zE9J1|-cfgnfA^EbA;{Nl<0`Mr(2@~VJ-rUUXl&UdzE#2SC7Wzm4TUEI+??1mud3LA&3n8` zN@2ch`WbE;BO*?KWpcl|LU#kavC`8+54G}25#J0yfOK-&;vZfY;IFJ9GsvE1L1gox zgCrWYqT`2mM*PJa6?=5OhdYhx+N5Mq_=)MI$;VbLC9R9KRnHT+G1cO2OGZGs2qU0t z9{;AS+An73R7lGc}37fCwI0)tO(QLc2u;GQL3W4qU`f8x40YL%}Ls?_wNeyt^(5 zSH6{THU6lt;uLTgz3(y{7E#XIu>a7PoHjq26hJ@Ry0s*7>yyFka^2f#*emnag8cF} zA#43e=eKo-;U<MDh?J$blat+ZjnxPkve1Z@-Id zH4&pXH31FFx#ZT4xOznXgZHmPc-4L80tr7mF{6&h84qo(AWnZcs!Gtm7AFjYD(VASzJ5a+^sYr<(Y<17 z-8}^Om6n}P@cBzZ$BrE`O{(p2qWFM!V07yFNA&2>)s(ny@R6hb*Ex3Ep*2@i_?%aR z$79cWx1WjLA*=S&+!xO@h*q4)|Kap|aR?7yX}08VcN_gx0V0dTn?Bh=t_|FEY1={X z&DtVo`!{xHfYN8?%hQzLmj$U=g;Zemo+y}>2Ix?Mt8%H`3|X}87_k9yhlCn7>#%`{ zkqZHjy}KcVUda9!V;2&@Jh~<7xB+~}z_^CV-XrBTj>CB*D33WV zW#&P1<1>cYxp~8uI}1~W_`I>X$?Oq>b?(Ntgn{v)ywju7q;;yGjhBJeng^Y?*KOO5R%vm`A9ZIv91KsJ^Y@9bximKooxR5xV4(uf@x55fTM@eL^?|8ej>d(KaA8C e+Qgee&ab)=ys&@6bg#4GHaRP9)6)NFdHf4M2#AmX literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/orbit/mask-black.png b/src/wp-content/themes/Broadside/images/orbit/mask-black.png new file mode 100644 index 0000000000000000000000000000000000000000..ea62557fc5a182a8768c1c99b4abb0938b866e9a GIT binary patch literal 549 zcmV+=0^0qFP)d^%aumd_S3LM5e zI8s7;E(+8ux(06IlCqv$OoJ=1<*Go695@8~t_mE+HmJMSgMY;;xUem70xWC%6zl{oxiY3qlMMf@F@hR<}u-v7bOM0GIFLQ z1?D(Ok^)PNoW7*Mvf=s%nFdLLzTr9zRs$)41yD8Qv?Y76rbNcYwUk+?D6^0^n1xx| zak2t`Zqp#nQ?|dG_9rHrb;n#@g0wAv-8IXv4^7oEhNhmf``@m6(t^1Eyz%Dmk-(L~ zonjB1xjMKXgAG@YK7vu=Z1o^F`byZji*}1d&6&idT|uf?OMTLidy`FpVJ_Q&6d!KgtFTVtb00000NkvXXu0mjfW0R?h2_7GP=T$+V@v!+FYR|3uZ)k zkY8zQ)P|-C7Ql_nnkkE)4VaKw-9#v}Cg+@~(4hlUVVRuICc+A6klBh`8(CtH)aEGb z#4Wa`D0WA;*gY_cxq1QT>c!;*ivN1PDSr z1<%~X^wgl##FWaylc_d9Mc+ML978H@y}9Pd#h573UZ~Hmz#fqIz{M=A?*W6Crs_Ab zB1UiaLZ(#pV6U8G^;uUgm~@u^IQ99OFn8SkXO|NSWx}20m^lO#92yuHnRJ9B!jHe% z_r-Acmc+D+yXP~*#49%6JiVS3ri=x~`16m2e~s0f8!P-W4?W?kyHOjq>g|U2iv9^k z;-|6H_V+Po~-c747tNaSW-rmGtNTe|u(AMq%cu2Uj#YUvNlQ_{VhQW&lr8 z_oK@PoDMilurU|d?EF)~>~Y4D2_kLv4L`I6{JO!B zJkH28&U&z-QTY&1m$51D7KTTv4mr+SIu~4G<1b@))c;>G!B8MuFu*@V;?Sw>5(@iR zj)+c~a^nO;NYr`eM_;E%aCA+$@32RvV|K$2HpOVpsW)a_;E3csBH!`xSca%UmVzXM b!U2Z!yeYEB*!Y$MJ;C7V>gTe~DWM4fg-dC& literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/orbit/right-arrow.png b/src/wp-content/themes/Broadside/images/orbit/right-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..e4e03455c7a124906729567a747cf3fbee1a9cc6 GIT binary patch literal 664 zcmeAS@N?(olHy`uVBq!ia0vp^en6bU!3HEX=Cb($DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg3`|y@E{-7;x8B^@=;f3saqQ#cmkutoymhyABs~c8eWk$i z=+Uz@^M`XSDh2cSe3eQVd6UYR`I=HfnlA>VRUT95ShVkbW!yabnu2AY5A_#s`##4- zfJMCVSK&eq7Ilk*oPL~s1x>go+`{g|9-01(z|i%%Xi1E zXZ;>KJN&ERT)*|FpMKiMYLi}2*nIH8L9Thh7Ty)-9a$) z&Objt)92Zz_3!hG?AP7RlRtJl@Z;AEld2#6k_%n8_$@D%X-iD9k-NV=YOVCazXEHc z*2d{hKW%=naly>S;@&i-bL>*KbM#HJEaqoyDcE;WFVdQ&MBb@08W@K!2kdN literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/orbit/rotator-black.png b/src/wp-content/themes/Broadside/images/orbit/rotator-black.png new file mode 100644 index 0000000000000000000000000000000000000000..53d95350c04d83a8ea29383f5cf8453234627c5a GIT binary patch literal 561 zcmV-10?z%3P)nip@rJ>=Y5DRhJ_6FX#}F*hANpmWVDLhD_hL-r+U2d7rJB z_j$j3PV>(C?lbTE{CK@6ibO^l1w-IgWT^f>zE=QM5P(@QsXg;J4UU5?Wo%Gb5Y?dk zbak)_`h-PM4A#J*t%xP%8=g178J9Uz1P{Q9V3wZ}Id*g3DWOXqTn4BA`OQ2H4udu* z65oFVP0#|*;0}Cd8bWDM<2a(}12jM}@qXs$5iEmy!hh<3MQ~&L6mJsN%g8`iypUCu;3ZCH1uQVNT~f@(I?)Z{F6B|;1J zz-f@usdQXx7Mzigc@5!ScN}aU`>U(lbO?9D*5!5vzey)I* zQX=Yc8jK}pn5vqmXTX$e27jy7<*b{DF98MsWpHY6tPMaz00000NkvXXu0mjftmN}H literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/orbit/rotator-black2.png b/src/wp-content/themes/Broadside/images/orbit/rotator-black2.png new file mode 100644 index 0000000000000000000000000000000000000000..372792d315c85e1a58a9cd1b381305ae1eb13f97 GIT binary patch literal 343 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 Jv?Z`6{|5f{vhM%@ literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/blog-img_2.jpg b/src/wp-content/themes/Broadside/images/portfolio/blog-img_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..00ff445084d0ede87458271ee18324905a095c00 GIT binary patch literal 2057 zcmY+94LsBP9>@RNY*<>xjKeqw=@@k!b>bjg&rHppY#LVcl!q<~6{F&`M6Ji|baFV? z(=d&l)ppCG$Wt~~VR=Z(RqIlS#gdb|L-(A{>%L#F-|zE%eZQ~I@ALa=N3{P2%mR)j zB>+H3hy$Pp{DpP~K>BCJrep&kKxeHT3IN(U0O1pt784J|wXStQ+A-i100FPFc0-^L z2m}h%fk1SiFz7lkJ(%tqFg-neI2^98XYdKcI)00IK7ozEMse+vxg>VZD<=Lie| z=>RaOt|0&hU?4DTZI?f6Afz>T&FAc6L}c1*_eGh&NX8X0wtmP@Z~W*gLdJGwR5wP$f2JV5JmeVsTtRr5zAaQCCuCr7l?n0K-s-@b zJl<+^k?W1|!591btsEcp_s>QXQ5F<&ntes9Gy}duxE5@3V#7B3-9n4-h6B}282mk_ z8Csg1O_px_4MGMMv$~z-SzIdbcG}&S+7_^upUGqGZ^rox9LF{}`@c@0p4frGSE&wU zICs<^9oGW2HhX5>Z(J=}csNB@#n-75r-p7)vQd_Vu0EVG#**4O!q?~Khab}P_$f(5 z54_554pZTK?+)R3g}lsvB$XVdB+#FRahmpC z5*z>E;kg7ivLM@y(-p&W51Q2igO?IxpP0iSMsf=sp&vh*-agC$zn?LBkD$D!GTzC&Dlb-1<*{tV>WM)rj(sy3uebH0q|GaxZI-89j>m5(M zke0UTl57x_TA{`?Ak&y?l*rrRxfb|Um0)`3o)%!r(WpDkb01JVM>tLL_BDy(o*#Z~ zTv=V01*v}*Zx^Vx40pkjes!2Wn1hBy|M;&(tEjvKWK#Sj z9vvN)<7PlSQiC1148LAiT_0?zkXp+lNSg4_I_Yg+&EG@o_$>J2e^9b9Rk3&WHr&O@ z%Zf+#B5G==6k+1G$#eNhBr(fqI1}zKq;_}AO?@{*6pJqSWu`AR#N~V;RJ%^9+DaZe zl^lGYCQzHNVo?h}*TY_4c6jk5%UUieMDIu`xKVoYS!X>4LF#C}Zeo9y(Q&TCfr!3o z{ATWq%EEFaE5L;3VY+j+)AUspy&-ObVMi~^({GjFB@tBPlZB?v>4T>((0eI23(BiE zFxtI+j?8aleQ7>P84HqoR3~O>#tFM5oGpm0q>FrdK;$v!C=_q^amH{!I*B@oPmuQc z4#illOMl1Nm6aAg3;DYsckLSy?B{wxh;5F z1@C_&NQP#)T&FJ=&Bl^NrH~YwIBCyU$hn6;oZJ+VGTda^+gv@vNf1$#n{jGMa(Y%D zw>q%1vZd7JDhvx*1ML*!`oDy#7UQ(TJ~xtp$v$xWaE18?Vl~ zyJalS4M_)<-EB<5j7e+lS$+ z2NUPLqci!_w%Md@BLgy;gsqD37?RO+W=K$~MKt8JDkfmweqOV*Iu7q54wX?__)SHR z<`QFCYQvnZik?04o6O8GoZ{yMg=%8FZQ@lP*|>Nz7sCK7ex^zdGxfOD41moxL#o&{%-a9lR$N~;OY{`OaFu0-)b2z z+TL#S;E2v`CI!_udNn#0eC(JOwb!)N205EEG?z{oscp$`r;V1mMWmxU4VQnxw+`Ks z&L@1^SsJu^Gs~YPojr~42RyqI5zVkN ze2b6)n=oz?g;vZM-Ys>vYCF2;3?fi}_3%mYh2%kYSpLKF3uv499p;m-Z00v|tgoCd zjl1o4nhpJ>aA=Ju1J#I8)9+r=13~HP&pDO%{e&j41gSwa^7uu(PU*^dA;+O$; d!?L2a-+HaID8Q>uaazkCCqqm8g7p9Z literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/blog-img_3.jpg b/src/wp-content/themes/Broadside/images/portfolio/blog-img_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f30905701bd8d8c85fcbce9ab7d7c02da3f479fc GIT binary patch literal 1331 zcmY+92~bm46o&8HLI@LUolJoJan^s?KS`blqxRotFih#@Gq8+Ud;vmGlt!bO)9L1HmN|=UWmK&286E$WEIy|% zJ^#BH+5t`nIUpB-Z~)^FfnS0ZX^I}I9ofU-W^%Y0 zGso#dA$FX8Cr%dR77Em2vl4d$u)H-<%y!PUQ|dj~CAFh?Sd_cgGuEftOdSpDLa~lu zKUI_x@~~hlowLzD^xGWn=;N^tX<``E5xaqEu#|B;?64>#Xf{*IfmjNs3J@%Hasv(X z;S+yZb|u~I$P6hNFu`j)UG}TPYeyk0il#+t2&Eqr8WOtZODljj3X-bf`d5r2ni%iP zeyWhYPObZpk~^lM_dKO`W@>cS&?kGmf4eqHDRYB^rKl&i^apuQ(r`61BAa(e@5FLZ z>V>dWXr|zS8GD3+hqs?%=gZtyNZnS*=2pqho{>y0_%6HIDHRc<-FS*~nVuc+($zz{ppr;u{GpBr#am@ec=8sjmHf=HT;SFhX?;bsNHf?TyH5K^}RaE>o zc%-v(jVc9I$wM^Z#eUYNZ!1jW_k_e(X^9#wQRibeV!aSwweds1ubRY@fzcvo&iKTx zn%?2Xj?Etn=8<;u&=2K;Jk1Cdw=~v&*pCx!8ra*#ym&+0zuuu$2qzxUFPugoadJW zt@pZmW1_EqTYvPu|OQbyZj% z-!;YV+{WJlpIath)gE?hTGp{emYM?6WQDRv~T-*)(%pWI5MT{u_xE9 ztKf?Sjp3xXr1u<$h^%}POIW{1tK39*OB}mapPHZ8w6JZQ<(u#8tMU~=z9LnCEq@37 zFmZeBBQd9WaK5H- zt#JJAxO{Wi;GY9GpBL}E;4R5XlDyASR1`|cLXzBF)W}Wwk(;tUqc-45(bdAmEom(e z#^i#gy^qeH7~5*A%UZqVsL21NpmpNO*7P$+G#713`yQrK6S@*gdkVI4O9SfC9f-2N zO`X?{y&dR`9mg93q~MwLEyX y;JQP3Q{VQc-jxRyDPDN59KLkpg#7Z~%ilyyPPw)`T@dF-ko>@B4F!&d$NvIb<=iy@ literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/blog-img_4.jpg b/src/wp-content/themes/Broadside/images/portfolio/blog-img_4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7b68a28acca23eee0500bd134684df5437308f53 GIT binary patch literal 1439 zcmY+AeKga19LIm#Z(GBxZAO_^Zshp+6iFo?&ImH z0Ki~414!U2+8F@5>nQus2>=4XbnPGj(9QyA+JTJZ6yQLIt^?7I0r>z3)uTH>I0%Ap zI1B_~a0FZr0*P3q1A#;u7#bQHAW@$|>%pu50bwu%0)avzQ8+XTjl=5|JodAW{ZcUh zmle-97i|ZCMFPix91wy9pjZfqg=l+#GytLl03j=hU?3a{KoG0+eLX7z6aoUel`+7V zBwqyx6vV=;H`8!QCU_g{w;RTq6uEu>T9b__-h9R^ikB;U z`_Q@Nr&$GRhN6Dj#!@KwXH&ybK7!XJLd94el}J#wi`~+hv81ZJ!2vc~_?uGE>*}v* zx~25zo6JwrN6RO&&q$%AzI4(HZ_K6I{!Q{KNz?SH*btwb2PH1($hy&xV<~J#;tLNF z4!1Z&_D{WMc{$L`ZMF{aaX8w@BQN)m1*Wtyn<^FuMtTY=3VjyVw(~N*1%F%J=av%E z@PiqU7+ycIwwrC`7gc*Fb5hlHcChV=eKc`<{dK#MiUONYN;=P{*`673MM|r_%HFmp zEjg0SW_jML8hj8eCLEp%RQ9yV-5>T2tL*ny&iCM-U#!{|&U}mW-_vPI-N$ti$cAP- z=vBY0Zt_BVG;eJx44$FJ%^h}f?VoWBjpFY$stYlTlIo_5ud>~eMFaAG1m~CP(&j?T z69YcvDnxnfl57KQ)f~E4xKrnboz|&ceoQiPf-J49D?2P(g6BUPdUhh7doLsX^%RlY zEs*SfMOSt2cc#1gz8WImI={?w6B*kXnctcIXc1bj-uQ62bzP-qkzw@`spdolg*$cB z)7H-z7^M?Ud#qFJ%i`PHUT;Zmk+r-l^h=)pIr0!i_bGy!y(9k7L}oL|)K@v=lGl2^ zFuXBiVA&{uP|W#|NFvi}EpNJW;F)e5SYWqnRUyWH)M()xrP;lgHVb`ogqmKnJ^ zMp|TVnUy739G9dfhV8!|SF{hYbGFF$YtDb@a=K5 zes&gfP`5zB@BnKMD-C_QPd!DMq)0}NXjs9^MGiXOeZ4ONpUy4yWz}H$A)czNNIcEe dk4su22DFabH#!|9bksS%^WB>uJ zio#T)YysI+Ajl$N5CuU+PzF$x3hu~MTi2>-(2m;QANSn(&N<&b_ozlxe*i=N&Zuwz z)~>Y$H1HMGG+?=I|0#MGfPkWwJpfS60OqRDIB^&VRjL)Jx&`(E6q!YRq8N&z7)C)+ z3Wj5|;53}72B*>J8X6jO8sihpS#-VtQ3?geaR!aX&}A~1x_Yx2J=Ui@>vPcgFMR3w z-$kVaEE?De(oo0(2n(VtsJZ|m06Zsg^D_XcDmM3+zky<^?*Is5YLon*2 z4Hn~@O^P!a)3ZKLg)zkP){4`F)-~U;$DnqqA&uPdFiN0A@7r8aYD|gbXhC(Mw7~a} zzxFY=dbW`(edT&GcJdUz2VR8Fh2-Gm%7+tpF4h_Z_m?=CnU4F7$Y>E!{93rRH}W4) zcg?4Wq+A{@vd_sH*>yR1BXa5B^;a;YxD1O2JV{bKA~H_$rp{Cfh{|^sGJ)sadiJrn z5&DX@62MIeP?#}1xq(SU{B!3^O8lYehQ4LynkUQ&BzR$MejS=7ORyd0CC;F= zf3T<&9DZpdH;OCKN2^jkkcxG;HSHDCl#We4q~UN1(`_Ef=?pqo8$(7X2<-xjfpha% z6_@;evOoe$&&xumD!Z$|{Pa846YS+#qdPoaAa}W|naL#Ue91ZDYLKSRyt23v&4!v* z7|SL9(&qVnr(Yy~^pqDRhO{{w$^rutciImkJ#Xrw;X48mXrFR&aC67XQ#-|v zfqt6!yoZ@}xl2GY@~p{0sEdk+bWYLX+339iu49-AOw>Jn2}}Dm{oYHrW$4#z_U6_& zWcIjgwR*%Ex@$=od(7A)RBo^yI@kQiUOiAfo_BC5!Erp=9gs4B#wBRfhRB2!8JjuY zT>E-S{TS5B#TSm@AC98}S(FMq9D4aq1(eK#y&a@wSc#vE9Tj{s85y^YN5*;3(O)}c zq0PA83qDA)3D4u_!_kd_h1I0-xlVpx1MSg-bE>p1OuDChfM#ExnLmc#FE_8G!xQhz zKemJB9Aa5CaX?P4Q_dGl?fjW!?nyql(xPy?!0_l#bP*C^H@Z&N$xR2lEI4vwr;+js zf*U(+e20v@-r)KOE3Q4h6do;<-r9~fN$2|0jb-lHH<$;00lQnE)*1_`u&jkc*wqvT zB%|e`#-&jF`xz@@fnRARmf-}}Qucx_0r9LwIw+y+N1JL%_iW(uf>@CS?^P4`gR-c{ VL8^MdHA=e40Nt3HaEMTi{tKXUDY*au literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/images/portfolio/contact-filler.jpg b/src/wp-content/themes/Broadside/images/portfolio/contact-filler.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d3a90c5e8cfaf14d4b79de02c9c0ae79fa2eba3f GIT binary patch literal 20692 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

    • ");if(a.bulletThumbs&&(w=e.eq(i).data("thumb")))k=d('
    • '+ +i+"
    • "),k.css({background:"url("+a.bulletThumbLocation+w+") no-repeat"});d("ul.orbit-bullets").append(k);k.data("index",i);k.click(function(){n();l(d(this).data("index"))})}B()}})}})(jQuery); \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/js/jquery.validate.min.js b/src/wp-content/themes/Broadside/js/jquery.validate.min.js new file mode 100644 index 0000000..6264866 --- /dev/null +++ b/src/wp-content/themes/Broadside/js/jquery.validate.min.js @@ -0,0 +1,16 @@ +/* + * jQuery validation plug-in 1.7 + * + * http://bassistance.de/jquery-plugins/jquery-plugin-validation/ + * http://docs.jquery.com/Plugins/Validation + * + * Copyright (c) 2006 - 2008 Jörn Zaefferer + * + * $Id: jquery.validate.js 6403 2009-06-17 14:27:16Z joern.zaefferer $ + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ +(function($){$.extend($.fn,{validate:function(options){if(!this.length){options&&options.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing");return;}var validator=$.data(this[0],'validator');if(validator){return validator;}validator=new $.validator(options,this[0]);$.data(this[0],'validator',validator);if(validator.settings.onsubmit){this.find("input, button").filter(".cancel").click(function(){validator.cancelSubmit=true;});if(validator.settings.submitHandler){this.find("input, button").filter(":submit").click(function(){validator.submitButton=this;});}this.submit(function(event){if(validator.settings.debug)event.preventDefault();function handle(){if(validator.settings.submitHandler){if(validator.submitButton){var hidden=$("").attr("name",validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);}validator.settings.submitHandler.call(validator,validator.currentForm);if(validator.submitButton){hidden.remove();}return false;}return true;}if(validator.cancelSubmit){validator.cancelSubmit=false;return handle();}if(validator.form()){if(validator.pendingRequest){validator.formSubmitted=true;return false;}return handle();}else{validator.focusInvalid();return false;}});}return validator;},valid:function(){if($(this[0]).is('form')){return this.validate().form();}else{var valid=true;var validator=$(this[0].form).validate();this.each(function(){valid&=validator.element(this);});return valid;}},removeAttrs:function(attributes){var result={},$element=this;$.each(attributes.split(/\s/),function(index,value){result[value]=$element.attr(value);$element.removeAttr(value);});return result;},rules:function(command,argument){var element=this[0];if(command){var settings=$.data(element.form,'validator').settings;var staticRules=settings.rules;var existingRules=$.validator.staticRules(element);switch(command){case"add":$.extend(existingRules,$.validator.normalizeRule(argument));staticRules[element.name]=existingRules;if(argument.messages)settings.messages[element.name]=$.extend(settings.messages[element.name],argument.messages);break;case"remove":if(!argument){delete staticRules[element.name];return existingRules;}var filtered={};$.each(argument.split(/\s/),function(index,method){filtered[method]=existingRules[method];delete existingRules[method];});return filtered;}}var data=$.validator.normalizeRules($.extend({},$.validator.metadataRules(element),$.validator.classRules(element),$.validator.attributeRules(element),$.validator.staticRules(element)),element);if(data.required){var param=data.required;delete data.required;data=$.extend({required:param},data);}return data;}});$.extend($.expr[":"],{blank:function(a){return!$.trim(""+a.value);},filled:function(a){return!!$.trim(""+a.value);},unchecked:function(a){return!a.checked;}});$.validator=function(options,form){this.settings=$.extend(true,{},$.validator.defaults,options);this.currentForm=form;this.init();};$.validator.format=function(source,params){if(arguments.length==1)return function(){var args=$.makeArray(arguments);args.unshift(source);return $.validator.format.apply(this,args);};if(arguments.length>2&¶ms.constructor!=Array){params=$.makeArray(arguments).slice(1);}if(params.constructor!=Array){params=[params];}$.each(params,function(i,n){source=source.replace(new RegExp("\\{"+i+"\\}","g"),n);});return source;};$.extend($.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:true,errorContainer:$([]),errorLabelContainer:$([]),onsubmit:true,ignore:[],ignoreTitle:false,onfocusin:function(element){this.lastActive=element;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,element,this.settings.errorClass,this.settings.validClass);this.errorsFor(element).hide();}},onfocusout:function(element){if(!this.checkable(element)&&(element.name in this.submitted||!this.optional(element))){this.element(element);}},onkeyup:function(element){if(element.name in this.submitted||element==this.lastElement){this.element(element);}},onclick:function(element){if(element.name in this.submitted)this.element(element);else if(element.parentNode.name in this.submitted)this.element(element.parentNode);},highlight:function(element,errorClass,validClass){$(element).addClass(errorClass).removeClass(validClass);},unhighlight:function(element,errorClass,validClass){$(element).removeClass(errorClass).addClass(validClass);}},setDefaults:function(settings){$.extend($.validator.defaults,settings);},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:$.validator.format("Please enter no more than {0} characters."),minlength:$.validator.format("Please enter at least {0} characters."),rangelength:$.validator.format("Please enter a value between {0} and {1} characters long."),range:$.validator.format("Please enter a value between {0} and {1}."),max:$.validator.format("Please enter a value less than or equal to {0}."),min:$.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){this.labelContainer=$(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||$(this.currentForm);this.containers=$(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();var groups=(this.groups={});$.each(this.settings.groups,function(key,value){$.each(value.split(/\s/),function(index,name){groups[name]=key;});});var rules=this.settings.rules;$.each(rules,function(key,value){rules[key]=$.validator.normalizeRule(value);});function delegate(event){var validator=$.data(this[0].form,"validator"),eventType="on"+event.type.replace(/^validate/,"");validator.settings[eventType]&&validator.settings[eventType].call(validator,this[0]);}$(this.currentForm).validateDelegate(":text, :password, :file, select, textarea","focusin focusout keyup",delegate).validateDelegate(":radio, :checkbox, select, option","click",delegate);if(this.settings.invalidHandler)$(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler);},form:function(){this.checkForm();$.extend(this.submitted,this.errorMap);this.invalid=$.extend({},this.errorMap);if(!this.valid())$(this.currentForm).triggerHandler("invalid-form",[this]);this.showErrors();return this.valid();},checkForm:function(){this.prepareForm();for(var i=0,elements=(this.currentElements=this.elements());elements[i];i++){this.check(elements[i]);}return this.valid();},element:function(element){element=this.clean(element);this.lastElement=element;this.prepareElement(element);this.currentElements=$(element);var result=this.check(element);if(result){delete this.invalid[element.name];}else{this.invalid[element.name]=true;}if(!this.numberOfInvalids()){this.toHide=this.toHide.add(this.containers);}this.showErrors();return result;},showErrors:function(errors){if(errors){$.extend(this.errorMap,errors);this.errorList=[];for(var name in errors){this.errorList.push({message:errors[name],element:this.findByName(name)[0]});}this.successList=$.grep(this.successList,function(element){return!(element.name in errors);});}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors();},resetForm:function(){if($.fn.resetForm)$(this.currentForm).resetForm();this.submitted={};this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass);},numberOfInvalids:function(){return this.objectLength(this.invalid);},objectLength:function(obj){var count=0;for(var i in obj)count++;return count;},hideErrors:function(){this.addWrapper(this.toHide).hide();},valid:function(){return this.size()==0;},size:function(){return this.errorList.length;},focusInvalid:function(){if(this.settings.focusInvalid){try{$(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin");}catch(e){}}},findLastActive:function(){var lastActive=this.lastActive;return lastActive&&$.grep(this.errorList,function(n){return n.element.name==lastActive.name;}).length==1&&lastActive;},elements:function(){var validator=this,rulesCache={};return $([]).add(this.currentForm.elements).filter(":input").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&validator.settings.debug&&window.console&&console.error("%o has no name assigned",this);if(this.name in rulesCache||!validator.objectLength($(this).rules()))return false;rulesCache[this.name]=true;return true;});},clean:function(selector){return $(selector)[0];},errors:function(){return $(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext);},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=$([]);this.toHide=$([]);this.currentElements=$([]);},prepareForm:function(){this.reset();this.toHide=this.errors().add(this.containers);},prepareElement:function(element){this.reset();this.toHide=this.errorsFor(element);},check:function(element){element=this.clean(element);if(this.checkable(element)){element=this.findByName(element.name)[0];}var rules=$(element).rules();var dependencyMismatch=false;for(method in rules){var rule={method:method,parameters:rules[method]};try{var result=$.validator.methods[method].call(this,element.value.replace(/\r/g,""),element,rule.parameters);if(result=="dependency-mismatch"){dependencyMismatch=true;continue;}dependencyMismatch=false;if(result=="pending"){this.toHide=this.toHide.not(this.errorsFor(element));return;}if(!result){this.formatAndAdd(element,rule);return false;}}catch(e){this.settings.debug&&window.console&&console.log("exception occured when checking element "+element.id ++", check the '"+rule.method+"' method",e);throw e;}}if(dependencyMismatch)return;if(this.objectLength(rules))this.successList.push(element);return true;},customMetaMessage:function(element,method){if(!$.metadata)return;var meta=this.settings.meta?$(element).metadata()[this.settings.meta]:$(element).metadata();return meta&&meta.messages&&meta.messages[method];},customMessage:function(name,method){var m=this.settings.messages[name];return m&&(m.constructor==String?m:m[method]);},findDefined:function(){for(var i=0;iWarning: No message defined for "+element.name+"");},formatAndAdd:function(element,rule){var message=this.defaultMessage(element,rule.method),theregex=/\$?\{(\d+)\}/g;if(typeof message=="function"){message=message.call(this,rule.parameters,element);}else if(theregex.test(message)){message=jQuery.format(message.replace(theregex,'{$1}'),rule.parameters);}this.errorList.push({message:message,element:element});this.errorMap[element.name]=message;this.submitted[element.name]=message;},addWrapper:function(toToggle){if(this.settings.wrapper)toToggle=toToggle.add(toToggle.parent(this.settings.wrapper));return toToggle;},defaultShowErrors:function(){for(var i=0;this.errorList[i];i++){var error=this.errorList[i];this.settings.highlight&&this.settings.highlight.call(this,error.element,this.settings.errorClass,this.settings.validClass);this.showLabel(error.element,error.message);}if(this.errorList.length){this.toShow=this.toShow.add(this.containers);}if(this.settings.success){for(var i=0;this.successList[i];i++){this.showLabel(this.successList[i]);}}if(this.settings.unhighlight){for(var i=0,elements=this.validElements();elements[i];i++){this.settings.unhighlight.call(this,elements[i],this.settings.errorClass,this.settings.validClass);}}this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show();},validElements:function(){return this.currentElements.not(this.invalidElements());},invalidElements:function(){return $(this.errorList).map(function(){return this.element;});},showLabel:function(element,message){var label=this.errorsFor(element);if(label.length){label.removeClass().addClass(this.settings.errorClass);label.attr("generated")&&label.html(message);}else{label=$("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(element),generated:true}).addClass(this.settings.errorClass).html(message||"");if(this.settings.wrapper){label=label.hide().show().wrap("<"+this.settings.wrapper+"/>").parent();}if(!this.labelContainer.append(label).length)this.settings.errorPlacement?this.settings.errorPlacement(label,$(element)):label.insertAfter(element);}if(!message&&this.settings.success){label.text("");typeof this.settings.success=="string"?label.addClass(this.settings.success):this.settings.success(label);}this.toShow=this.toShow.add(label);},errorsFor:function(element){var name=this.idOrName(element);return this.errors().filter(function(){return $(this).attr('for')==name;});},idOrName:function(element){return this.groups[element.name]||(this.checkable(element)?element.name:element.id||element.name);},checkable:function(element){return/radio|checkbox/i.test(element.type);},findByName:function(name){var form=this.currentForm;return $(document.getElementsByName(name)).map(function(index,element){return element.form==form&&element.name==name&&element||null;});},getLength:function(value,element){switch(element.nodeName.toLowerCase()){case'select':return $("option:selected",element).length;case'input':if(this.checkable(element))return this.findByName(element.name).filter(':checked').length;}return value.length;},depend:function(param,element){return this.dependTypes[typeof param]?this.dependTypes[typeof param](param,element):true;},dependTypes:{"boolean":function(param,element){return param;},"string":function(param,element){return!!$(param,element.form).length;},"function":function(param,element){return param(element);}},optional:function(element){return!$.validator.methods.required.call(this,$.trim(element.value),element)&&"dependency-mismatch";},startRequest:function(element){if(!this.pending[element.name]){this.pendingRequest++;this.pending[element.name]=true;}},stopRequest:function(element,valid){this.pendingRequest--;if(this.pendingRequest<0)this.pendingRequest=0;delete this.pending[element.name];if(valid&&this.pendingRequest==0&&this.formSubmitted&&this.form()){$(this.currentForm).submit();this.formSubmitted=false;}else if(!valid&&this.pendingRequest==0&&this.formSubmitted){$(this.currentForm).triggerHandler("invalid-form",[this]);this.formSubmitted=false;}},previousValue:function(element){return $.data(element,"previousValue")||$.data(element,"previousValue",{old:null,valid:true,message:this.defaultMessage(element,"remote")});}},classRuleSettings:{required:{required:true},email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(className,rules){className.constructor==String?this.classRuleSettings[className]=rules:$.extend(this.classRuleSettings,className);},classRules:function(element){var rules={};var classes=$(element).attr('class');classes&&$.each(classes.split(' '),function(){if(this in $.validator.classRuleSettings){$.extend(rules,$.validator.classRuleSettings[this]);}});return rules;},attributeRules:function(element){var rules={};var $element=$(element);for(method in $.validator.methods){var value=$element.attr(method);if(value){rules[method]=value;}}if(rules.maxlength&&/-1|2147483647|524288/.test(rules.maxlength)){delete rules.maxlength;}return rules;},metadataRules:function(element){if(!$.metadata)return{};var meta=$.data(element.form,'validator').settings.meta;return meta?$(element).metadata()[meta]:$(element).metadata();},staticRules:function(element){var rules={};var validator=$.data(element.form,'validator');if(validator.settings.rules){rules=$.validator.normalizeRule(validator.settings.rules[element.name])||{};}return rules;},normalizeRules:function(rules,element){$.each(rules,function(prop,val){if(val===false){delete rules[prop];return;}if(val.param||val.depends){var keepRule=true;switch(typeof val.depends){case"string":keepRule=!!$(val.depends,element.form).length;break;case"function":keepRule=val.depends.call(element,element);break;}if(keepRule){rules[prop]=val.param!==undefined?val.param:true;}else{delete rules[prop];}}});$.each(rules,function(rule,parameter){rules[rule]=$.isFunction(parameter)?parameter(element):parameter;});$.each(['minlength','maxlength','min','max'],function(){if(rules[this]){rules[this]=Number(rules[this]);}});$.each(['rangelength','range'],function(){if(rules[this]){rules[this]=[Number(rules[this][0]),Number(rules[this][1])];}});if($.validator.autoCreateRanges){if(rules.min&&rules.max){rules.range=[rules.min,rules.max];delete rules.min;delete rules.max;}if(rules.minlength&&rules.maxlength){rules.rangelength=[rules.minlength,rules.maxlength];delete rules.minlength;delete rules.maxlength;}}if(rules.messages){delete rules.messages;}return rules;},normalizeRule:function(data){if(typeof data=="string"){var transformed={};$.each(data.split(/\s/),function(){transformed[this]=true;});data=transformed;}return data;},addMethod:function(name,method,message){$.validator.methods[name]=method;$.validator.messages[name]=message!=undefined?message:$.validator.messages[name];if(method.length<3){$.validator.addClassRules(name,$.validator.normalizeRule(name));}},methods:{required:function(value,element,param){if(!this.depend(param,element))return"dependency-mismatch";switch(element.nodeName.toLowerCase()){case'select':var val=$(element).val();return val&&val.length>0;case'input':if(this.checkable(element))return this.getLength(value,element)>0;default:return $.trim(value).length>0;}},remote:function(value,element,param){if(this.optional(element))return"dependency-mismatch";var previous=this.previousValue(element);if(!this.settings.messages[element.name])this.settings.messages[element.name]={};previous.originalMessage=this.settings.messages[element.name].remote;this.settings.messages[element.name].remote=previous.message;param=typeof param=="string"&&{url:param}||param;if(previous.old!==value){previous.old=value;var validator=this;this.startRequest(element);var data={};data[element.name]=value;$.ajax($.extend(true,{url:param,mode:"abort",port:"validate"+element.name,dataType:"json",data:data,success:function(response){validator.settings.messages[element.name].remote=previous.originalMessage;var valid=response===true;if(valid){var submitted=validator.formSubmitted;validator.prepareElement(element);validator.formSubmitted=submitted;validator.successList.push(element);validator.showErrors();}else{var errors={};var message=(previous.message=response||validator.defaultMessage(element,"remote"));errors[element.name]=$.isFunction(message)?message(value):message;validator.showErrors(errors);}previous.valid=valid;validator.stopRequest(element,valid);}},param));return"pending";}else if(this.pending[element.name]){return"pending";}return previous.valid;},minlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)>=param;},maxlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)<=param;},rangelength:function(value,element,param){var length=this.getLength($.trim(value),element);return this.optional(element)||(length>=param[0]&&length<=param[1]);},min:function(value,element,param){return this.optional(element)||value>=param;},max:function(value,element,param){return this.optional(element)||value<=param;},range:function(value,element,param){return this.optional(element)||(value>=param[0]&&value<=param[1]);},email:function(value,element){return this.optional(element)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);},url:function(value,element){return this.optional(element)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);},date:function(value,element){return this.optional(element)||!/Invalid|NaN/.test(new Date(value));},dateISO:function(value,element){return this.optional(element)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);},number:function(value,element){return this.optional(element)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);},digits:function(value,element){return this.optional(element)||/^\d+$/.test(value);},creditcard:function(value,element){if(this.optional(element))return"dependency-mismatch";if(/[^0-9-]+/.test(value))return false;var nCheck=0,nDigit=0,bEven=false;value=value.replace(/\D/g,"");for(var n=value.length-1;n>=0;n--){var cDigit=value.charAt(n);var nDigit=parseInt(cDigit,10);if(bEven){if((nDigit*=2)>9)nDigit-=9;}nCheck+=nDigit;bEven=!bEven;}return(nCheck%10)==0;},accept:function(value,element,param){param=typeof param=="string"?param.replace(/,/g,'|'):"png|jpe?g|gif";return this.optional(element)||value.match(new RegExp(".("+param+")$","i"));},equalTo:function(value,element,param){var target=$(param).unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){$(element).valid();});return value==target.val();}}});$.format=$.validator.format;})(jQuery);;(function($){var ajax=$.ajax;var pendingRequests={};$.ajax=function(settings){settings=$.extend(settings,$.extend({},$.ajaxSettings,settings));var port=settings.port;if(settings.mode=="abort"){if(pendingRequests[port]){pendingRequests[port].abort();}return(pendingRequests[port]=ajax.apply(this,arguments));}return ajax.apply(this,arguments);};})(jQuery);;(function($){if(!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener){$.each({focus:'focusin',blur:'focusout'},function(original,fix){$.event.special[fix]={setup:function(){this.addEventListener(original,handler,true);},teardown:function(){this.removeEventListener(original,handler,true);},handler:function(e){arguments[0]=$.event.fix(e);arguments[0].type=fix;return $.event.handle.apply(this,arguments);}};function handler(e){e=$.event.fix(e);e.type=fix;return $.event.handle.call(this,e);}});};$.extend($.fn,{validateDelegate:function(delegate,type,handler){return this.bind(type,function(event){var target=$(event.target);if(target.is(delegate)){return handler.apply(target,arguments);}});}});})(jQuery); \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/js/superfish.js b/src/wp-content/themes/Broadside/js/superfish.js new file mode 100644 index 0000000..c6a9c7d --- /dev/null +++ b/src/wp-content/themes/Broadside/js/superfish.js @@ -0,0 +1,121 @@ + +/* + * Superfish v1.4.8 - jQuery menu widget + * Copyright (c) 2008 Joel Birch + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt + */ + +;(function($){ + $.fn.superfish = function(op){ + + var sf = $.fn.superfish, + c = sf.c, + $arrow = $([' »'].join('')), + over = function(){ + var $$ = $(this), menu = getMenu($$); + clearTimeout(menu.sfTimer); + $$.showSuperfishUl().siblings().hideSuperfishUl(); + }, + out = function(){ + var $$ = $(this), menu = getMenu($$), o = sf.op; + clearTimeout(menu.sfTimer); + menu.sfTimer=setTimeout(function(){ + o.retainPath=($.inArray($$[0],o.$path)>-1); + $$.hideSuperfishUl(); + if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);} + },o.delay); + }, + getMenu = function($menu){ + var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0]; + sf.op = sf.o[menu.serial]; + return menu; + }, + addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); }; + + return this.each(function() { + var s = this.serial = sf.o.length; + var o = $.extend({},sf.defaults,op); + o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){ + $(this).addClass([o.hoverClass,c.bcClass].join(' ')) + .filter('li:has(ul)').removeClass(o.pathClass); + }); + sf.o[s] = sf.op = o; + + $('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() { + if (o.autoArrows) addArrow( $('>a:first-child',this) ); + }) + .not('.'+c.bcClass) + .hideSuperfishUl(); + + var $a = $('a',this); + $a.each(function(i){ + var $li = $a.eq(i).parents('li'); + $a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);}); + }); + o.onInit.call(this); + + }).each(function() { + var menuClasses = [c.menuClass]; + if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass); + $(this).addClass(menuClasses.join(' ')); + }); + }; + + var sf = $.fn.superfish; + sf.o = []; + sf.op = {}; + sf.IE7fix = function(){ + var o = sf.op; + if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined) + this.toggleClass(sf.c.shadowClass+'-off'); + }; + sf.c = { + bcClass : 'sf-breadcrumb', + menuClass : 'sf-js-enabled', + anchorClass : 'sf-with-ul', + arrowClass : 'sf-sub-indicator', + shadowClass : 'sf-shadow' + }; + sf.defaults = { + hoverClass : 'sfHover', + pathClass : 'overideThisToUse', + pathLevels : 1, + delay : 800, + animation : {opacity:'show'}, + speed : 'normal', + autoArrows : true, + dropShadows : true, + disableHI : false, // true disables hoverIntent detection + onInit : function(){}, // callback functions + onBeforeShow: function(){}, + onShow : function(){}, + onHide : function(){} + }; + $.fn.extend({ + hideSuperfishUl : function(){ + var o = sf.op, + not = (o.retainPath===true) ? o.$path : ''; + o.retainPath = false; + var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass) + .find('>ul').hide().css('visibility','hidden'); + o.onHide.call($ul); + return this; + }, + showSuperfishUl : function(){ + var o = sf.op, + sh = sf.c.shadowClass+'-off', + $ul = this.addClass(o.hoverClass) + .find('>ul:hidden').css('visibility','visible'); + sf.IE7fix.call($ul); + o.onBeforeShow.call($ul); + $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); }); + return this; + } + }); + +})(jQuery); diff --git a/src/wp-content/themes/Broadside/options.php b/src/wp-content/themes/Broadside/options.php new file mode 100644 index 0000000..5946578 --- /dev/null +++ b/src/wp-content/themes/Broadside/options.php @@ -0,0 +1,276 @@ +cat_ID] = $category->cat_name; + } + + // Pull all the pages into an array + $options_pages = array(); + $options_pages_obj = get_pages('sort_column=post_parent,menu_order'); + $options_pages[''] = 'Select a page:'; + foreach ($options_pages_obj as $page) { + $options_pages[$page->ID] = $page->post_title; + } + + // If using image radio buttons, define a directory path + $imagepath = get_bloginfo('stylesheet_directory') . '/images/'; + + $options = array(); + + $options[] = array("name" => "Basic Settings", + "type" => "heading"); + + $options[] = array( "name" => "Email Address", + "desc" => "Enter the email address that you would like to use for the social-networking icons.", + "id" => "email_address", + "std" => "", + "type" => "text"); + + $options[] = array( "name" => "Footer Text", + "desc" => "Add your copyright phrase or any text to be displayed below the footer (e.g. Copyright 2012. Designed by ProgressionStudios)", + "id" => "footer_text", + "std" => "Copyright © 2011 – MQ –
      info@mqarquitects.com", + "type" => "textarea"); + + $options[] = array("name" => "Social Settings", + "type" => "heading"); + + $options[] = array( "name" => "Facebook Link", + "desc" => "Enter the Facebook Link that you would like to use for the social-networking icons. Note: Use http://", + "id" => "facebook_link", + "std" => "", + "type" => "text"); + + $options[] = array( "name" => "Twitter ID", + "desc" => "Enter the Twitter Link that you would like to use for the social-networking icons. Use http://", + "id" => "twitter_id", + "std" => "", + "type" => "text"); + + $options[] = array( "name" => "Flickr Link", + "desc" => "Enter the Flickr Link that you would like to use for the social-networking icons. Use http://", + "id" => "flickr_link", + "std" => "", + "type" => "text"); + + $options[] = array( "name" => "Vimeo Link", + "desc" => "Enter the Vimeo Link that you would like to use for the social-networking icons. Use http://", + "id" => "vimeo_link", + "std" => "", + "type" => "text"); + + $options[] = array( "name" => "Google Link", + "desc" => "Enter the Google Link that you would like to use for the social-networking icons. Use http://", + "id" => "google_link", + "std" => "", + "type" => "text"); + + $options[] = array( "name" => "StumbleUpon Link", + "desc" => "Enter the StumbleUpon Link that you would like to use for the social-networking icons. Use http://", + "id" => "Stumbleupon_link", + "std" => "", + "type" => "text"); + + $options[] = array( "name" => "Youtube Link", + "desc" => "Enter the Youtube Link that you would like to use for the social-networking icons. Use http://", + "id" => "youtube_link", + "std" => "", + "type" => "text"); + + $options[] = array("name" => "Appearence", + "type" => "heading"); + + $options[] = array( "name" => "Logo", + "desc" => "Use the upload button to upload your site's logo and then click 'Use this image'. The Maximum width is 270px. The navigation menu is 180px wide. Note: You will have to resize your own logo before uploading.", + "id" => "logo", + "std" => get_template_directory_uri() . "/images/logo.png", + "type" => "upload"); + + $options[] = array( "name" => "Logo Position", + "desc" => "This changes the Logo position to the top or bottom. Note: The Navigation position should be set to the opposite.", + "id" => "logo_position", + "std" => "top", + "type" => "select", + "class" => "mini", + "options" => array('top' => 'Top', 'bottom' => 'Bottom')); + + $options[] = array( "name" => "Navigation Position", + "desc" => "This changes the Navigation position to the top or bottom. Note: The Logo position should be set to the opposite.", + "id" => "nav_position", + "std" => "bottom", + "type" => "select", + "class" => "mini", + "options" => array('top' => 'Top', 'bottom' => 'Bottom')); + + $options[] = array( "name" => "Favicon", + "desc" => "Use the upload button to upload your favicon (bookmark icon) and then click 'Use this image'.", + "id" => "favicon", + "std" => "", + "type" => "upload"); + + $options[] = array( "name" => "Default Background (Required)", + "desc" => "This is used for the default background image of your website. It will automatically be resized to fit your browser window. Use the upload button to upload your own background and then click 'Use this image'. The default image(in case you delete it) should be located at: /wp-content/themes/Broadside/images/background.jpg", + "id" => "default_bg", + "std" => get_template_directory_uri() . "/images/background.jpg", + "type" => "upload"); + + $options[] = array( "name" => "Default Content Background (Required)", + "desc" => "This is a content background image of your website. It will automatically be resized to fit your content window. Use the upload button to upload your own background and then click 'Use this image'. The default image(in case you delete it) should be located at: /wp-content/themes/Broadside/images/backgrounds/blog-background.jpg", + "id" => "blog_bg", + "std" => get_template_directory_uri() . "/images/backgrounds/blog-background.jpg", + "type" => "upload"); + + $options[] = array( "name" => "Site Height", + "desc" => "Use this to adjust your site overall height. 'The Space' Live Preview is 600px tall, and 'The Architects' Live Preview is 500px tall. ", + "id" => "site_height", + "std" => "500", + "class" => "mini", + "type" => "text"); + + $options[] = array( "name" => "Scrollbar Height", + "desc" => "Use this to adjust at what height the scrollbar will be activated. This will depend on how tall you adjust your site height. ", + "id" => "scrollbar_height", + "std" => "330", + "class" => "mini", + "type" => "text"); + + $options[] = array( "name" => "Menu Background", + "desc" => "Use this to change the Menu background color. This includes the navigation and logo background. The default for 'The Space' is #b8174d and the default for 'The Architects' is #f20a0a.", + "id" => "menu_bg", + "std" => "#f20a0a", + "type" => "color"); + + $options[] = array( "name" => "Headings Color", + "desc" => "Use this to change the main headings color. The default for 'The Space' is #000000 and the default for 'The Architects' is #f20a0a.", + "id" => "headings_color", + "std" => "#f20a0a", + "type" => "color"); + + $options[] = array( "name" => "Static Menu", + "desc" => "Use this setting to remove the show/hide on the navigation menu. When marked yes, the navigation menu will be visible at all times.", + "id" => "static_menu", + "std" => "no", + "type" => "select", + "class" => "mini", + "options" => array('yes' => 'Yes', 'no' => 'No')); + + $options[] = array("name" => "Tools", + "type" => "heading"); + + $options[] = array( "name" => "Homepage Title", + "desc" => "Enter a title for the homepage, leave blank if you want to use an auto generated one.", + "id" => "home_title", + "std" => "", + "type" => "text"); + + $options[] = array( "name" => "Homepage Meta Description", + "desc" => "Enter a description for the homepage, about 140 characters.", + "id" => "home_meta", + "std" => "", + "type" => "text"); + + $options[] = array( "name" => "Tracking Code", + "desc" => "Paste your tracking code here e.g. Google Analytics etc... without script tags", + "id" => "tracking_code", + "std" => "", + "type" => "textarea"); + + $options[] = array( "name" => "404 Error Message Text", + "desc" => "Enter your custom 404 error message.", + "id" => "404_error", + "std" => "404 Page Not Found", + "type" => "textarea"); + + $options[] = array( "name" => "Custom CSS", + "desc" => "Past your custom css here... without script tags", + "id" => "custom_css", + "std" => "", + "type" => "textarea"); + + $options[] = array( "name" => "Custom Javascript", + "desc" => "Past your custom JavaScript code here... without script tags", + "id" => "custom_js", + "std" => "", + "type" => "textarea"); + + $options[] = array("name" => "Slider Settings", + "type" => "heading"); + + $options[] = array( "name" => "Animation", + "desc" => "Choose a transition effect between slides.", + "id" => "animation", + "std" => "fade", + "type" => "select", + "class" => "mini", + "options" => array('fade' => 'Fade', 'horizontal-slide' => 'Horizontal Slide', 'vertical-slide' => 'Vertical Slide', 'horizontal-push' => 'Horizontal Push')); + + $options[] = array( "name" => "Animation Speed", + "desc" => "Duration of animation between images (the time the images changes in).", + "id" => "speed", + "std" => "1200", + "class" => "mini", + "type" => "text"); + + $options[] = array( "name" => "Timer", + "desc" => "Show the timer countdown and autoplay. Note: If turned off, autoplay is off.", + "id" => "timer", + "std" => "true", + "type" => "select", + "class" => "mini", + "options" => array('true' => 'On', 'false' => 'Off')); + + $options[] = array( "name" => "Transition Speed", + "desc" => "How long each slide will show.", + "id" => "transition", + "std" => "4000", + "class" => "mini", + "type" => "text"); + + $options[] = array( "name" => "Arrows", + "desc" => "Show the next/previous navigation.", + "id" => "arrows", + "std" => "false", + "type" => "select", + "class" => "mini", + "options" => array('true' => 'On', 'false' => 'Off')); + + $options[] = array( "name" => "Bullets", + "desc" => "Show the bullet navigation.", + "id" => "bullets", + "std" => "false", + "type" => "select", + "class" => "mini", + "options" => array('true' => 'On', 'false' => 'Off')); + + return $options; +} \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/page.php b/src/wp-content/themes/Broadside/page.php new file mode 100644 index 0000000..5f2dfc3 --- /dev/null +++ b/src/wp-content/themes/Broadside/page.php @@ -0,0 +1,37 @@ + +
      +
      +

      post_title; ?>

      + ID, 'pyre_heading_sub', true)): ?> +

      ID, 'pyre_heading_sub', true); ?>

      + +
      + post_parent) { + $children = wp_list_pages('sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&depth=1&echo=0'); + } + else { + $children = wp_list_pages('sort_column=menu_order&title_li=&child_of=' . $post->ID . '&depth=1&echo=0'); + } + + if ($children) { ?> + + + + + +
      px;"> + + + +
      +
      + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/portfolio-full.php b/src/wp-content/themes/Broadside/portfolio-full.php new file mode 100644 index 0000000..6bd5a34 --- /dev/null +++ b/src/wp-content/themes/Broadside/portfolio-full.php @@ -0,0 +1,12 @@ + +
      +
      +

      post_title; ?>

      + ID, 'pyre_heading_sub', true)): ?> +

      ID, 'pyre_heading_sub', true); ?>

      + +
      +
      + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/portfolio-gallery.php b/src/wp-content/themes/Broadside/portfolio-gallery.php new file mode 100644 index 0000000..052775c --- /dev/null +++ b/src/wp-content/themes/Broadside/portfolio-gallery.php @@ -0,0 +1,89 @@ + +
      +
      +

      post_title; ?>

      + ID, 'pyre_heading_sub', true)): ?> +

      ID, 'pyre_heading_sub', true); ?>

      + +
      + +
      px;"> + + + + + + + + +
      +
      + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/portfolio-scrolling.php b/src/wp-content/themes/Broadside/portfolio-scrolling.php new file mode 100644 index 0000000..622d78a --- /dev/null +++ b/src/wp-content/themes/Broadside/portfolio-scrolling.php @@ -0,0 +1,97 @@ + +
      +
      +

      post_title; ?>

      + ID, 'pyre_heading_sub', true)): ?> +

      ID, 'pyre_heading_sub', true); ?>

      + +
      + +
      px;"> + + + + + + + + +
      +
      + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/portfolio-thumbnails.php b/src/wp-content/themes/Broadside/portfolio-thumbnails.php new file mode 100644 index 0000000..b8d5471 --- /dev/null +++ b/src/wp-content/themes/Broadside/portfolio-thumbnails.php @@ -0,0 +1,68 @@ + +
      +
      +

      post_title; ?>

      + ID, 'pyre_heading_sub', true)): ?> +

      ID, 'pyre_heading_sub', true); ?>

      + +
      + +
      px;"> + + +
      + + ID, 'pyre_portfolio_type', true); + $args = array( + 'showposts' => '-1', + 'post_type' => 'portfolio', + 'tax_query' => array( + array( + 'taxonomy' => 'type', + 'field' => 'id', + 'terms' => $portfolio_type + ) + ) + ); + $portfolio = new WP_Query($args); + $count = 1; + while($portfolio->have_posts()): $portfolio->the_post(); + if($count == 5) { + $count = 1; + } + ?> + +
      + ID), 'full'); ?> + ID, 'pyre_video_link', true)): ?> + + + + + + + + +
      + + +
      +
      + + + + + + + +
      + + + +
      + +
      + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/screenshot.png b/src/wp-content/themes/Broadside/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..48b2d76041b38be88be147b6b7befd999b099adc GIT binary patch literal 6127 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 asj;A{e`pI3bl?8If`>tEEvn5tqW=s1V*7*u literal 0 HcmV?d00001 diff --git a/src/wp-content/themes/Broadside/services.php b/src/wp-content/themes/Broadside/services.php new file mode 100644 index 0000000..03dc360 --- /dev/null +++ b/src/wp-content/themes/Broadside/services.php @@ -0,0 +1,88 @@ + +
      +
      +

      post_title; ?>

      + ID, 'pyre_heading_sub', true)): ?> +

      ID, 'pyre_heading_sub', true); ?>

      + +
      + + +
      px;"> + + + + + + + +
      + + +
      + \ No newline at end of file diff --git a/src/wp-content/themes/Broadside/shortcodes.php b/src/wp-content/themes/Broadside/shortcodes.php new file mode 100644 index 0000000..78517e6 --- /dev/null +++ b/src/wp-content/themes/Broadside/shortcodes.php @@ -0,0 +1,331 @@ +[' => '[', + ']

      ' => ']', + ']
      ' => ']' + ); + + $content = strtr($content, $array); + + return $content; + } + +////////////////////////////////////////////////////////////////// +// Youtube shortcode +////////////////////////////////////////////////////////////////// +add_shortcode('youtube', 'shortcode_youtube'); + function shortcode_youtube($atts) { + $atts = shortcode_atts( + array( + 'id' => '', + 'width' => 600, + 'height' => 360 + ), $atts); + + return '
      '; + } + +////////////////////////////////////////////////////////////////// +// Vimeo shortcode +////////////////////////////////////////////////////////////////// +add_shortcode('vimeo', 'shortcode_vimeo'); + function shortcode_vimeo($atts) { + $atts = shortcode_atts( + array( + 'id' => '', + 'width' => 600, + 'height' => 360 + ), $atts); + + return '
      '; + } + +////////////////////////////////////////////////////////////////// +// SoundCloud shortcode +////////////////////////////////////////////////////////////////// +add_shortcode('soundcloud', 'shortcode_soundcloud'); + function shortcode_soundcloud($atts) { + $atts = shortcode_atts( + array( + 'url' => '', + 'width' => '100%', + 'height' => 81, + 'comments' => 'true', + 'auto_play' => 'true', + 'color' => 'ff7700', + ), $atts); + + return ''; + } + +////////////////////////////////////////////////////////////////// +// Button shortcode +////////////////////////////////////////////////////////////////// +add_shortcode('button', 'shortcode_button'); + function shortcode_button($atts, $content = null) { + $atts = shortcode_atts( + array( + 'color' => 'light', + 'link' => '#', + 'target' => '', + ), $atts); + + if($atts['color'] == 'light') { + $class = 'button'; + } else { + $class = 'big-button'; + } + + return '' .do_shortcode($content). ''; + } + +////////////////////////////////////////////////////////////////// +// Dropcap shortcode +////////////////////////////////////////////////////////////////// +add_shortcode('dropcap', 'shortcode_dropcap'); + function shortcode_dropcap( $atts, $content = null ) { + + return '' .do_shortcode($content). ''; + +} + +////////////////////////////////////////////////////////////////// +// Highlight shortcode +////////////////////////////////////////////////////////////////// +add_shortcode('highlight', 'shortcode_highlight'); + function shortcode_highlight($atts, $content = null) { + $atts = shortcode_atts( + array( + 'color' => 'yellow', + ), $atts); + + if($atts['color'] == 'black') { + return '' .do_shortcode($content). ''; + } else { + return '' .do_shortcode($content). ''; + } + + } + +////////////////////////////////////////////////////////////////// +// Check list shortcode +////////////////////////////////////////////////////////////////// +add_shortcode('checklist', 'shortcode_checklist'); + function shortcode_checklist( $atts, $content = null ) { + + $content = str_replace('