stump-cli 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +3 -16
- data/Rakefile +2 -0
- data/bin/stump-cli +58 -0
- data/lib/stump-cli/version.rb +3 -0
- data/lib/stump.rb +5 -0
- data/lib/wp/Movefile-example +62 -0
- data/lib/wp/README.md +25 -0
- data/lib/wp/index.php +17 -0
- data/lib/wp/license.txt +385 -0
- data/lib/wp/readme.html +96 -0
- data/lib/wp/wp-activate.php +131 -0
- data/lib/wp/wp-admin/about.php +193 -0
- data/lib/wp/wp-admin/admin-ajax.php +98 -0
- data/lib/wp/wp-admin/admin-footer.php +99 -0
- data/lib/wp/wp-admin/admin-functions.php +15 -0
- data/lib/wp/wp-admin/admin-header.php +243 -0
- data/lib/wp/wp-admin/admin-post.php +71 -0
- data/lib/wp/wp-admin/admin.php +347 -0
- data/lib/wp/wp-admin/async-upload.php +114 -0
- data/lib/wp/wp-admin/comment.php +299 -0
- data/lib/wp/wp-admin/credits.php +192 -0
- data/lib/wp/wp-admin/css/about-rtl.css +446 -0
- data/lib/wp/wp-admin/css/about.css +446 -0
- data/lib/wp/wp-admin/css/admin-menu-rtl.css +917 -0
- data/lib/wp/wp-admin/css/admin-menu.css +917 -0
- data/lib/wp/wp-admin/css/color-picker-rtl.css +127 -0
- data/lib/wp/wp-admin/css/color-picker-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/color-picker.css +127 -0
- data/lib/wp/wp-admin/css/color-picker.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/_admin.scss +525 -0
- data/lib/wp/wp-admin/css/colors/_mixins.scss +43 -0
- data/lib/wp/wp-admin/css/colors/_variables.scss +58 -0
- data/lib/wp/wp-admin/css/colors/blue/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/blue/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/blue/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/blue/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/blue/colors.scss +11 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/coffee/colors.scss +7 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/ectoplasm/colors.scss +8 -0
- data/lib/wp/wp-admin/css/colors/light/colors-rtl.css +349 -0
- data/lib/wp/wp-admin/css/colors/light/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/light/colors.css +349 -0
- data/lib/wp/wp-admin/css/colors/light/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/light/colors.scss +38 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/midnight/colors.scss +5 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/ocean/colors.scss +8 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.css +341 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors.css +341 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors.min.css +1 -0
- data/lib/wp/wp-admin/css/colors/sunrise/colors.scss +6 -0
- data/lib/wp/wp-admin/css/common-rtl.css +3212 -0
- data/lib/wp/wp-admin/css/common.css +3212 -0
- data/lib/wp/wp-admin/css/customize-controls-rtl.css +889 -0
- data/lib/wp/wp-admin/css/customize-controls-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/customize-controls.css +889 -0
- data/lib/wp/wp-admin/css/customize-controls.min.css +1 -0
- data/lib/wp/wp-admin/css/customize-widgets-rtl.css +603 -0
- data/lib/wp/wp-admin/css/customize-widgets-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/customize-widgets.css +603 -0
- data/lib/wp/wp-admin/css/customize-widgets.min.css +1 -0
- data/lib/wp/wp-admin/css/dashboard-rtl.css +1116 -0
- data/lib/wp/wp-admin/css/dashboard.css +1116 -0
- data/lib/wp/wp-admin/css/deprecated-media-rtl.css +371 -0
- data/lib/wp/wp-admin/css/deprecated-media-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/deprecated-media.css +371 -0
- data/lib/wp/wp-admin/css/deprecated-media.min.css +1 -0
- data/lib/wp/wp-admin/css/edit-rtl.css +1501 -0
- data/lib/wp/wp-admin/css/edit.css +1501 -0
- data/lib/wp/wp-admin/css/farbtastic-rtl.css +41 -0
- data/lib/wp/wp-admin/css/farbtastic.css +41 -0
- data/lib/wp/wp-admin/css/forms-rtl.css +992 -0
- data/lib/wp/wp-admin/css/forms.css +992 -0
- data/lib/wp/wp-admin/css/ie-rtl.css +785 -0
- data/lib/wp/wp-admin/css/ie-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/ie.css +785 -0
- data/lib/wp/wp-admin/css/ie.min.css +1 -0
- data/lib/wp/wp-admin/css/install-rtl.css +389 -0
- data/lib/wp/wp-admin/css/install-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/install.css +389 -0
- data/lib/wp/wp-admin/css/install.min.css +1 -0
- data/lib/wp/wp-admin/css/l10n-rtl.css +101 -0
- data/lib/wp/wp-admin/css/l10n.css +101 -0
- data/lib/wp/wp-admin/css/list-tables-rtl.css +1875 -0
- data/lib/wp/wp-admin/css/list-tables.css +1875 -0
- data/lib/wp/wp-admin/css/login-rtl.css +269 -0
- data/lib/wp/wp-admin/css/login-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/login.css +269 -0
- data/lib/wp/wp-admin/css/login.min.css +1 -0
- data/lib/wp/wp-admin/css/media-rtl.css +1196 -0
- data/lib/wp/wp-admin/css/media.css +1196 -0
- data/lib/wp/wp-admin/css/nav-menus-rtl.css +857 -0
- data/lib/wp/wp-admin/css/nav-menus.css +857 -0
- data/lib/wp/wp-admin/css/press-this-rtl.css +458 -0
- data/lib/wp/wp-admin/css/press-this.css +458 -0
- data/lib/wp/wp-admin/css/revisions-rtl.css +574 -0
- data/lib/wp/wp-admin/css/revisions.css +574 -0
- data/lib/wp/wp-admin/css/themes-rtl.css +1732 -0
- data/lib/wp/wp-admin/css/themes.css +1732 -0
- data/lib/wp/wp-admin/css/widgets-rtl.css +577 -0
- data/lib/wp/wp-admin/css/widgets.css +577 -0
- data/lib/wp/wp-admin/css/wp-admin-rtl.css +14 -0
- data/lib/wp/wp-admin/css/wp-admin-rtl.min.css +1 -0
- data/lib/wp/wp-admin/css/wp-admin.css +14 -0
- data/lib/wp/wp-admin/css/wp-admin.min.css +1 -0
- data/lib/wp/wp-admin/custom-background.php +482 -0
- data/lib/wp/wp-admin/custom-header.php +1366 -0
- data/lib/wp/wp-admin/customize.php +278 -0
- data/lib/wp/wp-admin/edit-comments.php +254 -0
- data/lib/wp/wp-admin/edit-form-advanced.php +636 -0
- data/lib/wp/wp-admin/edit-form-comment.php +160 -0
- data/lib/wp/wp-admin/edit-link-form.php +150 -0
- data/lib/wp/wp-admin/edit-tag-form.php +204 -0
- data/lib/wp/wp-admin/edit-tags.php +591 -0
- data/lib/wp/wp-admin/edit.php +330 -0
- data/lib/wp/wp-admin/export.php +243 -0
- data/lib/wp/wp-admin/freedoms.php +57 -0
- data/lib/wp/wp-admin/images/align-center-2x.png +0 -0
- data/lib/wp/wp-admin/images/align-center.png +0 -0
- data/lib/wp/wp-admin/images/align-left-2x.png +0 -0
- data/lib/wp/wp-admin/images/align-left.png +0 -0
- data/lib/wp/wp-admin/images/align-none-2x.png +0 -0
- data/lib/wp/wp-admin/images/align-none.png +0 -0
- data/lib/wp/wp-admin/images/align-right-2x.png +0 -0
- data/lib/wp/wp-admin/images/align-right.png +0 -0
- data/lib/wp/wp-admin/images/arrows-2x.png +0 -0
- data/lib/wp/wp-admin/images/arrows.png +0 -0
- data/lib/wp/wp-admin/images/bubble_bg-2x.gif +0 -0
- data/lib/wp/wp-admin/images/bubble_bg.gif +0 -0
- data/lib/wp/wp-admin/images/comment-grey-bubble-2x.png +0 -0
- data/lib/wp/wp-admin/images/comment-grey-bubble.png +0 -0
- data/lib/wp/wp-admin/images/date-button-2x.gif +0 -0
- data/lib/wp/wp-admin/images/date-button.gif +0 -0
- data/lib/wp/wp-admin/images/generic.png +0 -0
- data/lib/wp/wp-admin/images/icons32-2x.png +0 -0
- data/lib/wp/wp-admin/images/icons32-vs-2x.png +0 -0
- data/lib/wp/wp-admin/images/icons32-vs.png +0 -0
- data/lib/wp/wp-admin/images/icons32.png +0 -0
- data/lib/wp/wp-admin/images/imgedit-icons-2x.png +0 -0
- data/lib/wp/wp-admin/images/imgedit-icons.png +0 -0
- data/lib/wp/wp-admin/images/list-2x.png +0 -0
- data/lib/wp/wp-admin/images/list.png +0 -0
- data/lib/wp/wp-admin/images/loading.gif +0 -0
- data/lib/wp/wp-admin/images/marker.png +0 -0
- data/lib/wp/wp-admin/images/mask.png +0 -0
- data/lib/wp/wp-admin/images/media-button-2x.png +0 -0
- data/lib/wp/wp-admin/images/media-button-image.gif +0 -0
- data/lib/wp/wp-admin/images/media-button-music.gif +0 -0
- data/lib/wp/wp-admin/images/media-button-other.gif +0 -0
- data/lib/wp/wp-admin/images/media-button-video.gif +0 -0
- data/lib/wp/wp-admin/images/media-button.png +0 -0
- data/lib/wp/wp-admin/images/menu-2x.png +0 -0
- data/lib/wp/wp-admin/images/menu-vs-2x.png +0 -0
- data/lib/wp/wp-admin/images/menu-vs.png +0 -0
- data/lib/wp/wp-admin/images/menu.png +0 -0
- data/lib/wp/wp-admin/images/no.png +0 -0
- data/lib/wp/wp-admin/images/post-formats-vs.png +0 -0
- data/lib/wp/wp-admin/images/post-formats.png +0 -0
- data/lib/wp/wp-admin/images/post-formats32-vs.png +0 -0
- data/lib/wp/wp-admin/images/post-formats32.png +0 -0
- data/lib/wp/wp-admin/images/resize-2x.gif +0 -0
- data/lib/wp/wp-admin/images/resize-rtl-2x.gif +0 -0
- data/lib/wp/wp-admin/images/resize-rtl.gif +0 -0
- data/lib/wp/wp-admin/images/resize.gif +0 -0
- data/lib/wp/wp-admin/images/se.png +0 -0
- data/lib/wp/wp-admin/images/sort-2x.gif +0 -0
- data/lib/wp/wp-admin/images/sort.gif +0 -0
- data/lib/wp/wp-admin/images/spinner-2x.gif +0 -0
- data/lib/wp/wp-admin/images/spinner.gif +0 -0
- data/lib/wp/wp-admin/images/stars-2x.png +0 -0
- data/lib/wp/wp-admin/images/stars.png +0 -0
- data/lib/wp/wp-admin/images/w-logo-blue.png +0 -0
- data/lib/wp/wp-admin/images/w-logo-white.png +0 -0
- data/lib/wp/wp-admin/images/wheel.png +0 -0
- data/lib/wp/wp-admin/images/wordpress-logo-white.svg +1 -0
- data/lib/wp/wp-admin/images/wordpress-logo.png +0 -0
- data/lib/wp/wp-admin/images/wordpress-logo.svg +1 -0
- data/lib/wp/wp-admin/images/wpspin_light-2x.gif +0 -0
- data/lib/wp/wp-admin/images/wpspin_light.gif +0 -0
- data/lib/wp/wp-admin/images/xit-2x.gif +0 -0
- data/lib/wp/wp-admin/images/xit.gif +0 -0
- data/lib/wp/wp-admin/images/yes.png +0 -0
- data/lib/wp/wp-admin/import.php +132 -0
- data/lib/wp/wp-admin/includes/admin.php +74 -0
- data/lib/wp/wp-admin/includes/ajax-actions.php +2762 -0
- data/lib/wp/wp-admin/includes/bookmark.php +305 -0
- data/lib/wp/wp-admin/includes/class-ftp-pure.php +190 -0
- data/lib/wp/wp-admin/includes/class-ftp-sockets.php +250 -0
- data/lib/wp/wp-admin/includes/class-ftp.php +907 -0
- data/lib/wp/wp-admin/includes/class-pclzip.php +5687 -0
- data/lib/wp/wp-admin/includes/class-wp-comments-list-table.php +637 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-base.php +815 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-direct.php +384 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpext.php +415 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpsockets.php +352 -0
- data/lib/wp/wp-admin/includes/class-wp-filesystem-ssh2.php +392 -0
- data/lib/wp/wp-admin/includes/class-wp-importer.php +302 -0
- data/lib/wp/wp-admin/includes/class-wp-links-list-table.php +207 -0
- data/lib/wp/wp-admin/includes/class-wp-list-table.php +1080 -0
- data/lib/wp/wp-admin/includes/class-wp-media-list-table.php +574 -0
- data/lib/wp/wp-admin/includes/class-wp-ms-sites-list-table.php +402 -0
- data/lib/wp/wp-admin/includes/class-wp-ms-themes-list-table.php +459 -0
- data/lib/wp/wp-admin/includes/class-wp-ms-users-list-table.php +303 -0
- data/lib/wp/wp-admin/includes/class-wp-plugin-install-list-table.php +490 -0
- data/lib/wp/wp-admin/includes/class-wp-plugins-list-table.php +605 -0
- data/lib/wp/wp-admin/includes/class-wp-posts-list-table.php +1306 -0
- data/lib/wp/wp-admin/includes/class-wp-terms-list-table.php +466 -0
- data/lib/wp/wp-admin/includes/class-wp-theme-install-list-table.php +431 -0
- data/lib/wp/wp-admin/includes/class-wp-themes-list-table.php +279 -0
- data/lib/wp/wp-admin/includes/class-wp-upgrader-skins.php +767 -0
- data/lib/wp/wp-admin/includes/class-wp-upgrader.php +2676 -0
- data/lib/wp/wp-admin/includes/class-wp-users-list-table.php +459 -0
- data/lib/wp/wp-admin/includes/comment.php +171 -0
- data/lib/wp/wp-admin/includes/continents-cities.php +493 -0
- data/lib/wp/wp-admin/includes/dashboard.php +1333 -0
- data/lib/wp/wp-admin/includes/deprecated.php +1190 -0
- data/lib/wp/wp-admin/includes/export.php +508 -0
- data/lib/wp/wp-admin/includes/file.php +1152 -0
- data/lib/wp/wp-admin/includes/image-edit.php +828 -0
- data/lib/wp/wp-admin/includes/image.php +598 -0
- data/lib/wp/wp-admin/includes/import.php +206 -0
- data/lib/wp/wp-admin/includes/list-table.php +113 -0
- data/lib/wp/wp-admin/includes/media.php +3012 -0
- data/lib/wp/wp-admin/includes/menu.php +322 -0
- data/lib/wp/wp-admin/includes/meta-boxes.php +1119 -0
- data/lib/wp/wp-admin/includes/misc.php +845 -0
- data/lib/wp/wp-admin/includes/ms-deprecated.php +78 -0
- data/lib/wp/wp-admin/includes/ms.php +814 -0
- data/lib/wp/wp-admin/includes/nav-menu.php +1328 -0
- data/lib/wp/wp-admin/includes/plugin-install.php +550 -0
- data/lib/wp/wp-admin/includes/plugin.php +1899 -0
- data/lib/wp/wp-admin/includes/post.php +1661 -0
- data/lib/wp/wp-admin/includes/revision.php +228 -0
- data/lib/wp/wp-admin/includes/schema.php +1038 -0
- data/lib/wp/wp-admin/includes/screen.php +1179 -0
- data/lib/wp/wp-admin/includes/taxonomy.php +284 -0
- data/lib/wp/wp-admin/includes/template.php +2157 -0
- data/lib/wp/wp-admin/includes/theme-install.php +205 -0
- data/lib/wp/wp-admin/includes/theme.php +474 -0
- data/lib/wp/wp-admin/includes/translation-install.php +240 -0
- data/lib/wp/wp-admin/includes/update-core.php +1186 -0
- data/lib/wp/wp-admin/includes/update.php +432 -0
- data/lib/wp/wp-admin/includes/upgrade.php +2218 -0
- data/lib/wp/wp-admin/includes/user.php +442 -0
- data/lib/wp/wp-admin/includes/widgets.php +245 -0
- data/lib/wp/wp-admin/index.php +131 -0
- data/lib/wp/wp-admin/install-helper.php +199 -0
- data/lib/wp/wp-admin/install.php +305 -0
- data/lib/wp/wp-admin/js/accordion.js +143 -0
- data/lib/wp/wp-admin/js/accordion.min.js +1 -0
- data/lib/wp/wp-admin/js/color-picker.js +155 -0
- data/lib/wp/wp-admin/js/color-picker.min.js +1 -0
- data/lib/wp/wp-admin/js/comment.js +50 -0
- data/lib/wp/wp-admin/js/comment.min.js +1 -0
- data/lib/wp/wp-admin/js/common.js +804 -0
- data/lib/wp/wp-admin/js/common.min.js +1 -0
- data/lib/wp/wp-admin/js/custom-background.js +75 -0
- data/lib/wp/wp-admin/js/custom-background.min.js +1 -0
- data/lib/wp/wp-admin/js/custom-header.js +61 -0
- data/lib/wp/wp-admin/js/customize-controls.js +1305 -0
- data/lib/wp/wp-admin/js/customize-controls.min.js +1 -0
- data/lib/wp/wp-admin/js/customize-widgets.js +1882 -0
- data/lib/wp/wp-admin/js/customize-widgets.min.js +1 -0
- data/lib/wp/wp-admin/js/dashboard.js +190 -0
- data/lib/wp/wp-admin/js/dashboard.min.js +1 -0
- data/lib/wp/wp-admin/js/edit-comments.js +625 -0
- data/lib/wp/wp-admin/js/edit-comments.min.js +1 -0
- data/lib/wp/wp-admin/js/editor-expand.js +705 -0
- data/lib/wp/wp-admin/js/editor-expand.min.js +1 -0
- data/lib/wp/wp-admin/js/editor.js +324 -0
- data/lib/wp/wp-admin/js/editor.min.js +1 -0
- data/lib/wp/wp-admin/js/farbtastic.js +276 -0
- data/lib/wp/wp-admin/js/gallery.js +237 -0
- data/lib/wp/wp-admin/js/gallery.min.js +1 -0
- data/lib/wp/wp-admin/js/image-edit.js +633 -0
- data/lib/wp/wp-admin/js/image-edit.min.js +1 -0
- data/lib/wp/wp-admin/js/inline-edit-post.js +359 -0
- data/lib/wp/wp-admin/js/inline-edit-post.min.js +1 -0
- data/lib/wp/wp-admin/js/inline-edit-tax.js +142 -0
- data/lib/wp/wp-admin/js/inline-edit-tax.min.js +1 -0
- data/lib/wp/wp-admin/js/iris.min.js +4 -0
- data/lib/wp/wp-admin/js/language-chooser.js +26 -0
- data/lib/wp/wp-admin/js/language-chooser.min.js +1 -0
- data/lib/wp/wp-admin/js/link.js +69 -0
- data/lib/wp/wp-admin/js/link.min.js +1 -0
- data/lib/wp/wp-admin/js/media-gallery.js +26 -0
- data/lib/wp/wp-admin/js/media-gallery.min.js +1 -0
- data/lib/wp/wp-admin/js/media-upload.js +69 -0
- data/lib/wp/wp-admin/js/media-upload.min.js +1 -0
- data/lib/wp/wp-admin/js/media.js +111 -0
- data/lib/wp/wp-admin/js/media.min.js +1 -0
- data/lib/wp/wp-admin/js/nav-menu.js +1205 -0
- data/lib/wp/wp-admin/js/nav-menu.min.js +1 -0
- data/lib/wp/wp-admin/js/password-strength-meter.js +75 -0
- data/lib/wp/wp-admin/js/password-strength-meter.min.js +1 -0
- data/lib/wp/wp-admin/js/plugin-install.js +76 -0
- data/lib/wp/wp-admin/js/plugin-install.min.js +1 -0
- data/lib/wp/wp-admin/js/post.js +1094 -0
- data/lib/wp/wp-admin/js/post.min.js +1 -0
- data/lib/wp/wp-admin/js/postbox.js +199 -0
- data/lib/wp/wp-admin/js/postbox.min.js +1 -0
- data/lib/wp/wp-admin/js/revisions.js +1110 -0
- data/lib/wp/wp-admin/js/revisions.min.js +1 -0
- data/lib/wp/wp-admin/js/set-post-thumbnail.js +24 -0
- data/lib/wp/wp-admin/js/set-post-thumbnail.min.js +1 -0
- data/lib/wp/wp-admin/js/svg-painter.js +240 -0
- data/lib/wp/wp-admin/js/svg-painter.min.js +1 -0
- data/lib/wp/wp-admin/js/tags.js +72 -0
- data/lib/wp/wp-admin/js/tags.min.js +1 -0
- data/lib/wp/wp-admin/js/theme.js +1691 -0
- data/lib/wp/wp-admin/js/theme.min.js +1 -0
- data/lib/wp/wp-admin/js/updates.js +65 -0
- data/lib/wp/wp-admin/js/updates.min.js +1 -0
- data/lib/wp/wp-admin/js/user-profile.js +127 -0
- data/lib/wp/wp-admin/js/user-profile.min.js +1 -0
- data/lib/wp/wp-admin/js/user-suggest.js +30 -0
- data/lib/wp/wp-admin/js/user-suggest.min.js +1 -0
- data/lib/wp/wp-admin/js/widgets.js +494 -0
- data/lib/wp/wp-admin/js/widgets.min.js +1 -0
- data/lib/wp/wp-admin/js/word-count.js +44 -0
- data/lib/wp/wp-admin/js/word-count.min.js +1 -0
- data/lib/wp/wp-admin/js/wp-fullscreen.js +704 -0
- data/lib/wp/wp-admin/js/wp-fullscreen.min.js +1 -0
- data/lib/wp/wp-admin/js/xfn.js +17 -0
- data/lib/wp/wp-admin/js/xfn.min.js +1 -0
- data/lib/wp/wp-admin/link-add.php +29 -0
- data/lib/wp/wp-admin/link-manager.php +99 -0
- data/lib/wp/wp-admin/link-parse-opml.php +84 -0
- data/lib/wp/wp-admin/link.php +117 -0
- data/lib/wp/wp-admin/load-scripts.php +162 -0
- data/lib/wp/wp-admin/load-styles.php +153 -0
- data/lib/wp/wp-admin/maint/repair.php +124 -0
- data/lib/wp/wp-admin/media-new.php +84 -0
- data/lib/wp/wp-admin/media-upload.php +100 -0
- data/lib/wp/wp-admin/media.php +146 -0
- data/lib/wp/wp-admin/menu-header.php +227 -0
- data/lib/wp/wp-admin/menu.php +255 -0
- data/lib/wp/wp-admin/moderation.php +12 -0
- data/lib/wp/wp-admin/ms-admin.php +13 -0
- data/lib/wp/wp-admin/ms-delete-site.php +91 -0
- data/lib/wp/wp-admin/ms-edit.php +13 -0
- data/lib/wp/wp-admin/ms-options.php +12 -0
- data/lib/wp/wp-admin/ms-sites.php +13 -0
- data/lib/wp/wp-admin/ms-themes.php +13 -0
- data/lib/wp/wp-admin/ms-upgrade-network.php +13 -0
- data/lib/wp/wp-admin/ms-users.php +13 -0
- data/lib/wp/wp-admin/my-sites.php +145 -0
- data/lib/wp/wp-admin/nav-menus.php +798 -0
- data/lib/wp/wp-admin/network.php +561 -0
- data/lib/wp/wp-admin/network/about.php +16 -0
- data/lib/wp/wp-admin/network/admin.php +32 -0
- data/lib/wp/wp-admin/network/credits.php +16 -0
- data/lib/wp/wp-admin/network/edit.php +42 -0
- data/lib/wp/wp-admin/network/freedoms.php +16 -0
- data/lib/wp/wp-admin/network/index.php +79 -0
- data/lib/wp/wp-admin/network/menu.php +63 -0
- data/lib/wp/wp-admin/network/plugin-editor.php +16 -0
- data/lib/wp/wp-admin/network/plugin-install.php +19 -0
- data/lib/wp/wp-admin/network/plugins.php +16 -0
- data/lib/wp/wp-admin/network/profile.php +16 -0
- data/lib/wp/wp-admin/network/settings.php +347 -0
- data/lib/wp/wp-admin/network/setup.php +16 -0
- data/lib/wp/wp-admin/network/site-info.php +178 -0
- data/lib/wp/wp-admin/network/site-new.php +153 -0
- data/lib/wp/wp-admin/network/site-settings.php +173 -0
- data/lib/wp/wp-admin/network/site-themes.php +185 -0
- data/lib/wp/wp-admin/network/site-users.php +319 -0
- data/lib/wp/wp-admin/network/sites.php +275 -0
- data/lib/wp/wp-admin/network/theme-editor.php +16 -0
- data/lib/wp/wp-admin/network/theme-install.php +19 -0
- data/lib/wp/wp-admin/network/themes.php +291 -0
- data/lib/wp/wp-admin/network/update-core.php +16 -0
- data/lib/wp/wp-admin/network/update.php +19 -0
- data/lib/wp/wp-admin/network/upgrade.php +120 -0
- data/lib/wp/wp-admin/network/user-edit.php +16 -0
- data/lib/wp/wp-admin/network/user-new.php +106 -0
- data/lib/wp/wp-admin/network/users.php +296 -0
- data/lib/wp/wp-admin/options-discussion.php +273 -0
- data/lib/wp/wp-admin/options-general.php +355 -0
- data/lib/wp/wp-admin/options-head.php +18 -0
- data/lib/wp/wp-admin/options-media.php +136 -0
- data/lib/wp/wp-admin/options-permalink.php +289 -0
- data/lib/wp/wp-admin/options-reading.php +184 -0
- data/lib/wp/wp-admin/options-writing.php +194 -0
- data/lib/wp/wp-admin/options.php +265 -0
- data/lib/wp/wp-admin/plugin-editor.php +279 -0
- data/lib/wp/wp-admin/plugin-install.php +134 -0
- data/lib/wp/wp-admin/plugins.php +474 -0
- data/lib/wp/wp-admin/post-new.php +74 -0
- data/lib/wp/wp-admin/post.php +318 -0
- data/lib/wp/wp-admin/press-this.php +691 -0
- data/lib/wp/wp-admin/profile.php +18 -0
- data/lib/wp/wp-admin/revision.php +221 -0
- data/lib/wp/wp-admin/setup-config.php +345 -0
- data/lib/wp/wp-admin/theme-editor.php +243 -0
- data/lib/wp/wp-admin/theme-install.php +278 -0
- data/lib/wp/wp-admin/themes.php +374 -0
- data/lib/wp/wp-admin/tools.php +75 -0
- data/lib/wp/wp-admin/update-core.php +653 -0
- data/lib/wp/wp-admin/update.php +272 -0
- data/lib/wp/wp-admin/upgrade-functions.php +12 -0
- data/lib/wp/wp-admin/upgrade.php +116 -0
- data/lib/wp/wp-admin/upload.php +292 -0
- data/lib/wp/wp-admin/user-edit.php +557 -0
- data/lib/wp/wp-admin/user-new.php +439 -0
- data/lib/wp/wp-admin/user/about.php +13 -0
- data/lib/wp/wp-admin/user/admin.php +32 -0
- data/lib/wp/wp-admin/user/credits.php +13 -0
- data/lib/wp/wp-admin/user/freedoms.php +13 -0
- data/lib/wp/wp-admin/user/index.php +12 -0
- data/lib/wp/wp-admin/user/menu.php +22 -0
- data/lib/wp/wp-admin/user/profile.php +12 -0
- data/lib/wp/wp-admin/user/user-edit.php +12 -0
- data/lib/wp/wp-admin/users.php +460 -0
- data/lib/wp/wp-admin/widgets.php +442 -0
- data/lib/wp/wp-blog-header.php +18 -0
- data/lib/wp/wp-comments-post.php +164 -0
- data/lib/wp/wp-config-sample.php +80 -0
- data/lib/wp/wp-content/index.php +2 -0
- data/lib/wp/wp-content/plugins/hello.php +82 -0
- data/lib/wp/wp-content/plugins/index.php +2 -0
- data/lib/wp/wp-content/themes/index.php +2 -0
- data/lib/wp/wp-content/themes/stump/.editorconfig +11 -0
- data/lib/wp/wp-content/themes/stump/.jshintrc +16 -0
- data/lib/wp/wp-content/themes/stump/404.php +13 -0
- data/lib/wp/wp-content/themes/stump/CHANGELOG.md +333 -0
- data/lib/wp/wp-content/themes/stump/CONTRIBUTING.md +121 -0
- data/lib/wp/wp-content/themes/stump/Gruntfile.js +151 -0
- data/lib/wp/wp-content/themes/stump/LICENSE.md +19 -0
- data/lib/wp/wp-content/themes/stump/assets/coffee/build/.gitkeep +0 -0
- data/lib/wp/wp-content/themes/stump/assets/coffee/build/site.js +6 -0
- data/lib/wp/wp-content/themes/stump/assets/css/editor-style.css +548 -0
- data/lib/wp/wp-content/themes/stump/assets/css/main.min.css +4 -0
- data/lib/wp/wp-content/themes/stump/assets/css/main.min.css.map +7 -0
- data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/lib/wp/wp-content/themes/stump/assets/img/.gitignore +0 -0
- data/lib/wp/wp-content/themes/stump/assets/js/_main.js +63 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/affix.js +137 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/alert.js +88 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/button.js +107 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/carousel.js +205 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/collapse.js +170 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/dropdown.js +147 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/modal.js +243 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/popover.js +110 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/scrollspy.js +153 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tab.js +125 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tooltip.js +399 -0
- data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/transition.js +48 -0
- data/lib/wp/wp-content/themes/stump/assets/js/scripts.min.js +1 -0
- data/lib/wp/wp-content/themes/stump/assets/js/vendor/jquery-1.11.0.min.js +4 -0
- data/lib/wp/wp-content/themes/stump/assets/js/vendor/modernizr-2.7.0.min.js +4 -0
- data/lib/wp/wp-content/themes/stump/assets/sass/app.scss +9 -0
- data/lib/wp/wp-content/themes/stump/assets/sass/core/_variables.scss +1 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_alerts.scss +67 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_badges.scss +55 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_bootstrap.scss +49 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_breadcrumbs.scss +26 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_button-groups.scss +226 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_buttons.scss +159 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_carousel.scss +232 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_close.scss +35 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_code.scss +63 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_component-animations.scss +29 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_dropdowns.scss +213 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_forms.scss +436 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_glyphicons.scss +233 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_grid.scss +84 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_input-groups.scss +162 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_jumbotron.scss +44 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_labels.scss +64 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_list-group.scss +110 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_media.scss +56 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_mixins.scss +947 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_modals.scss +139 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navbar.scss +620 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navs.scss +242 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_normalize.scss +423 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pager.scss +55 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pagination.scss +88 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_panels.scss +241 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_popovers.scss +133 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_print.scss +101 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_progress-bars.scss +80 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_responsive-utilities.scss +74 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_scaffolding.scss +134 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tables.scss +233 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_theme.scss +247 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_thumbnails.scss +38 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tooltip.scss +95 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_type.scss +284 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_utilities.scss +56 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_variables.scss +833 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_wells.scss +29 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon-deprecated-upcoming.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon.scss +59 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_button.scss +273 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_clearfix.scss +29 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_font-family.scss +5 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_hide-text.scss +5 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_html5-input-types.scss +56 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_position.scss +42 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_prefixer.scss +49 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_retina-image.scss +32 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_size.scss +44 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_timing-functions.scss +32 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_triangle.scss +45 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_animation.scss +52 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_appearance.scss +3 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_backface-visibility.scss +6 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background-image.scss +48 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background.scss +103 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-image.scss +55 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-radius.scss +22 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_box-sizing.scss +4 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_columns.scss +47 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_flex-box.scss +52 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_font-face.scss +23 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_hidpi-media-query.scss +10 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_image-rendering.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_inline-block.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_keyframes.scss +43 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_linear-gradient.scss +41 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_perspective.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_placeholder.scss +29 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_radial-gradient.scss +44 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transform.scss +15 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transition.scss +34 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_user-select.scss +3 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_compact.scss +11 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_flex-grid.scss +39 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_grid-width.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_linear-gradient.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_modular-scale.scss +40 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_px-to-em.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_radial-gradient.scss +23 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_tint-shade.scss +9 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_transition-property-name.scss +22 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_deprecated-webkit-gradient.scss +39 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_gradient-positions-parser.scss +13 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_linear-positions-parser.scss +61 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-arg-parser.scss +69 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-positions-parser.scss +18 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_render-gradients.scss +26 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_shape-size-stripper.scss +10 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan.sass +11 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_grid.sass +161 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_mixins.sass +63 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_utilities.sass +24 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_variables.sass +42 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat-helpers.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat.scss +21 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_new-breakpoint.scss +16 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_private.scss +107 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_px-to-em.scss +3 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_fill-parent.scss +7 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_grid.scss +5 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_media.scss +51 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_omega.scss +79 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_outer-container.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_pad.scss +8 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_private.scss +50 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_reset.scss +12 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_row.scss +17 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_shift.scss +9 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_span-columns.scss +38 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_to-deprecate.scss +57 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_visual-grid.scss +41 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_grid.scss +7 -0
- data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_visual-grid.scss +5 -0
- data/lib/wp/wp-content/themes/stump/base.php +36 -0
- data/lib/wp/wp-content/themes/stump/functions.php +19 -0
- data/lib/wp/wp-content/themes/stump/index.php +21 -0
- data/lib/wp/wp-content/themes/stump/lang/ar.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ar.po +270 -0
- data/lib/wp/wp-content/themes/stump/lang/bg_BG.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/bg_BG.po +338 -0
- data/lib/wp/wp-content/themes/stump/lang/ca.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ca.po +517 -0
- data/lib/wp/wp-content/themes/stump/lang/da_DK.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/da_DK.po +305 -0
- data/lib/wp/wp-content/themes/stump/lang/de_DE.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/de_DE.po +271 -0
- data/lib/wp/wp-content/themes/stump/lang/el.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/el.po +319 -0
- data/lib/wp/wp-content/themes/stump/lang/es_ES.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/es_ES.po +270 -0
- data/lib/wp/wp-content/themes/stump/lang/et.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/et.po +262 -0
- data/lib/wp/wp-content/themes/stump/lang/fa_IR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/fa_IR.po +273 -0
- data/lib/wp/wp-content/themes/stump/lang/fi_FI.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/fi_FI.po +367 -0
- data/lib/wp/wp-content/themes/stump/lang/fr_FR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/fr_FR.po +336 -0
- data/lib/wp/wp-content/themes/stump/lang/he_IL.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/he_IL.po +336 -0
- data/lib/wp/wp-content/themes/stump/lang/hu_HU.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/hu_HU.po +271 -0
- data/lib/wp/wp-content/themes/stump/lang/id_ID.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/id_ID.po +278 -0
- data/lib/wp/wp-content/themes/stump/lang/it_IT.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/it_IT.po +269 -0
- data/lib/wp/wp-content/themes/stump/lang/ja.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ja.po +267 -0
- data/lib/wp/wp-content/themes/stump/lang/ko_KR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ko_KR.po +282 -0
- data/lib/wp/wp-content/themes/stump/lang/mk_MK.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/mk_MK.po +297 -0
- data/lib/wp/wp-content/themes/stump/lang/ms_MY.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ms_MY.po +342 -0
- data/lib/wp/wp-content/themes/stump/lang/nb_NO.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/nb_NO.po +517 -0
- data/lib/wp/wp-content/themes/stump/lang/nl_NL.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/nl_NL.po +261 -0
- data/lib/wp/wp-content/themes/stump/lang/nn_NO.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/nn_NO.po +517 -0
- data/lib/wp/wp-content/themes/stump/lang/pl_PL.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/pl_PL.po +283 -0
- data/lib/wp/wp-content/themes/stump/lang/pt_BR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/pt_BR.po +394 -0
- data/lib/wp/wp-content/themes/stump/lang/ro_RO.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ro_RO.po +271 -0
- data/lib/wp/wp-content/themes/stump/lang/roots.pot +244 -0
- data/lib/wp/wp-content/themes/stump/lang/ru_RU.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/ru_RU.po +255 -0
- data/lib/wp/wp-content/themes/stump/lang/sk_SK.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/sk_SK.po +267 -0
- data/lib/wp/wp-content/themes/stump/lang/sr_RS.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/sr_RS.pot +261 -0
- data/lib/wp/wp-content/themes/stump/lang/sv_SE.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/sv_SE.po +323 -0
- data/lib/wp/wp-content/themes/stump/lang/tr_TR.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/tr_TR.po +405 -0
- data/lib/wp/wp-content/themes/stump/lang/vi_VN.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/vi_VN.po +516 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_CN.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_CN.po +329 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_TW.mo +0 -0
- data/lib/wp/wp-content/themes/stump/lang/zh_TW.po +261 -0
- data/lib/wp/wp-content/themes/stump/lib/activation.php +215 -0
- data/lib/wp/wp-content/themes/stump/lib/cleanup.php +261 -0
- data/lib/wp/wp-content/themes/stump/lib/comments.php +52 -0
- data/lib/wp/wp-content/themes/stump/lib/config.php +79 -0
- data/lib/wp/wp-content/themes/stump/lib/custom.php +4 -0
- data/lib/wp/wp-content/themes/stump/lib/gallery.php +130 -0
- data/lib/wp/wp-content/themes/stump/lib/init.php +25 -0
- data/lib/wp/wp-content/themes/stump/lib/nav.php +93 -0
- data/lib/wp/wp-content/themes/stump/lib/relative-urls.php +50 -0
- data/lib/wp/wp-content/themes/stump/lib/scripts.php +67 -0
- data/lib/wp/wp-content/themes/stump/lib/sidebar.php +43 -0
- data/lib/wp/wp-content/themes/stump/lib/titles.php +37 -0
- data/lib/wp/wp-content/themes/stump/lib/utils.php +14 -0
- data/lib/wp/wp-content/themes/stump/lib/widgets.php +133 -0
- data/lib/wp/wp-content/themes/stump/lib/wrapper.php +49 -0
- data/lib/wp/wp-content/themes/stump/package.json +32 -0
- data/lib/wp/wp-content/themes/stump/page.php +2 -0
- data/lib/wp/wp-content/themes/stump/screenshot.png +0 -0
- data/lib/wp/wp-content/themes/stump/single.php +1 -0
- data/lib/wp/wp-content/themes/stump/style.css +11 -0
- data/lib/wp/wp-content/themes/stump/template-custom.php +8 -0
- data/lib/wp/wp-content/themes/stump/templates/comment.php +14 -0
- data/lib/wp/wp-content/themes/stump/templates/comments.php +80 -0
- data/lib/wp/wp-content/themes/stump/templates/content-page.php +4 -0
- data/lib/wp/wp-content/themes/stump/templates/content-single.php +15 -0
- data/lib/wp/wp-content/themes/stump/templates/content.php +9 -0
- data/lib/wp/wp-content/themes/stump/templates/entry-meta.php +2 -0
- data/lib/wp/wp-content/themes/stump/templates/footer.php +8 -0
- data/lib/wp/wp-content/themes/stump/templates/head.php +12 -0
- data/lib/wp/wp-content/themes/stump/templates/header-top-navbar.php +21 -0
- data/lib/wp/wp-content/themes/stump/templates/header.php +14 -0
- data/lib/wp/wp-content/themes/stump/templates/page-header.php +5 -0
- data/lib/wp/wp-content/themes/stump/templates/searchform.php +9 -0
- data/lib/wp/wp-content/themes/stump/templates/sidebar.php +1 -0
- data/lib/wp/wp-content/themes/twentyfourteen/404.php +32 -0
- data/lib/wp/wp-content/themes/twentyfourteen/archive.php +74 -0
- data/lib/wp/wp-content/themes/twentyfourteen/author.php +74 -0
- data/lib/wp/wp-content/themes/twentyfourteen/category.php +58 -0
- data/lib/wp/wp-content/themes/twentyfourteen/comments.php +66 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-aside.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-audio.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-featured-post.php +34 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-gallery.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-image.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-link.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-none.php +31 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-page.php +31 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-quote.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content-video.php +57 -0
- data/lib/wp/wp-content/themes/twentyfourteen/content.php +66 -0
- data/lib/wp/wp-content/themes/twentyfourteen/css/editor-style.css +717 -0
- data/lib/wp/wp-content/themes/twentyfourteen/css/ie.css +1335 -0
- data/lib/wp/wp-content/themes/twentyfourteen/featured-content.php +39 -0
- data/lib/wp/wp-content/themes/twentyfourteen/footer.php +28 -0
- data/lib/wp/wp-content/themes/twentyfourteen/functions.php +519 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/COPYING.txt +9 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/Genericons-Regular.otf +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/LICENSE.txt +339 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/README.txt +123 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/example.html +464 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.eot +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.svg +135 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.ttf +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.woff +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/genericons/genericons.css +197 -0
- data/lib/wp/wp-content/themes/twentyfourteen/header.php +65 -0
- data/lib/wp/wp-content/themes/twentyfourteen/image.php +79 -0
- data/lib/wp/wp-content/themes/twentyfourteen/images/pattern-dark.svg +16 -0
- data/lib/wp/wp-content/themes/twentyfourteen/images/pattern-light.svg +6 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/back-compat.php +63 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/custom-header.php +147 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/customizer.php +114 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/featured-content.php +531 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/template-tags.php +203 -0
- data/lib/wp/wp-content/themes/twentyfourteen/inc/widgets.php +269 -0
- data/lib/wp/wp-content/themes/twentyfourteen/index.php +61 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/customizer.js +38 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/featured-content-admin.js +9 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/functions.js +134 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/html5.js +8 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/keyboard-image-navigation.js +21 -0
- data/lib/wp/wp-content/themes/twentyfourteen/js/slider.js +598 -0
- data/lib/wp/wp-content/themes/twentyfourteen/languages/twentyfourteen.pot +467 -0
- data/lib/wp/wp-content/themes/twentyfourteen/page-templates/contributors.php +52 -0
- data/lib/wp/wp-content/themes/twentyfourteen/page-templates/full-width.php +42 -0
- data/lib/wp/wp-content/themes/twentyfourteen/page.php +48 -0
- data/lib/wp/wp-content/themes/twentyfourteen/rtl.css +854 -0
- data/lib/wp/wp-content/themes/twentyfourteen/screenshot.png +0 -0
- data/lib/wp/wp-content/themes/twentyfourteen/search.php +49 -0
- data/lib/wp/wp-content/themes/twentyfourteen/sidebar-content.php +16 -0
- data/lib/wp/wp-content/themes/twentyfourteen/sidebar-footer.php +19 -0
- data/lib/wp/wp-content/themes/twentyfourteen/sidebar.php +29 -0
- data/lib/wp/wp-content/themes/twentyfourteen/single.php +40 -0
- data/lib/wp/wp-content/themes/twentyfourteen/style.css +4321 -0
- data/lib/wp/wp-content/themes/twentyfourteen/tag.php +60 -0
- data/lib/wp/wp-content/themes/twentyfourteen/taxonomy-post_format.php +85 -0
- data/lib/wp/wp-cron.php +115 -0
- data/lib/wp/wp-includes/ID3/getid3.lib.php +1376 -0
- data/lib/wp/wp-includes/ID3/getid3.php +1796 -0
- data/lib/wp/wp-includes/ID3/license.commercial.txt +27 -0
- data/lib/wp/wp-includes/ID3/license.txt +29 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.asf.php +2013 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.flv.php +745 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.matroska.php +1751 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.quicktime.php +2246 -0
- data/lib/wp/wp-includes/ID3/module.audio-video.riff.php +2586 -0
- data/lib/wp/wp-includes/ID3/module.audio.ac3.php +474 -0
- data/lib/wp/wp-includes/ID3/module.audio.dts.php +291 -0
- data/lib/wp/wp-includes/ID3/module.audio.flac.php +443 -0
- data/lib/wp/wp-includes/ID3/module.audio.mp3.php +2012 -0
- data/lib/wp/wp-includes/ID3/module.audio.ogg.php +756 -0
- data/lib/wp/wp-includes/ID3/module.tag.apetag.php +371 -0
- data/lib/wp/wp-includes/ID3/module.tag.id3v1.php +360 -0
- data/lib/wp/wp-includes/ID3/module.tag.id3v2.php +3424 -0
- data/lib/wp/wp-includes/ID3/module.tag.lyrics3.php +294 -0
- data/lib/wp/wp-includes/ID3/readme.txt +604 -0
- data/lib/wp/wp-includes/SimplePie/Author.php +157 -0
- data/lib/wp/wp-includes/SimplePie/Cache.php +133 -0
- data/lib/wp/wp-includes/SimplePie/Cache/Base.php +114 -0
- data/lib/wp/wp-includes/SimplePie/Cache/DB.php +137 -0
- data/lib/wp/wp-includes/SimplePie/Cache/File.php +173 -0
- data/lib/wp/wp-includes/SimplePie/Cache/Memcache.php +183 -0
- data/lib/wp/wp-includes/SimplePie/Cache/MySQL.php +438 -0
- data/lib/wp/wp-includes/SimplePie/Caption.php +210 -0
- data/lib/wp/wp-includes/SimplePie/Category.php +157 -0
- data/lib/wp/wp-includes/SimplePie/Content/Type/Sniffer.php +332 -0
- data/lib/wp/wp-includes/SimplePie/Copyright.php +130 -0
- data/lib/wp/wp-includes/SimplePie/Core.php +57 -0
- data/lib/wp/wp-includes/SimplePie/Credit.php +156 -0
- data/lib/wp/wp-includes/SimplePie/Decode/HTML/Entities.php +617 -0
- data/lib/wp/wp-includes/SimplePie/Enclosure.php +1380 -0
- data/lib/wp/wp-includes/SimplePie/Exception.php +52 -0
- data/lib/wp/wp-includes/SimplePie/File.php +292 -0
- data/lib/wp/wp-includes/SimplePie/HTTP/Parser.php +500 -0
- data/lib/wp/wp-includes/SimplePie/IRI.php +1238 -0
- data/lib/wp/wp-includes/SimplePie/Item.php +2964 -0
- data/lib/wp/wp-includes/SimplePie/Locator.php +372 -0
- data/lib/wp/wp-includes/SimplePie/Misc.php +2247 -0
- data/lib/wp/wp-includes/SimplePie/Net/IPv6.php +276 -0
- data/lib/wp/wp-includes/SimplePie/Parse/Date.php +983 -0
- data/lib/wp/wp-includes/SimplePie/Parser.php +407 -0
- data/lib/wp/wp-includes/SimplePie/Rating.php +129 -0
- data/lib/wp/wp-includes/SimplePie/Registry.php +225 -0
- data/lib/wp/wp-includes/SimplePie/Restriction.php +155 -0
- data/lib/wp/wp-includes/SimplePie/Sanitize.php +554 -0
- data/lib/wp/wp-includes/SimplePie/Source.php +611 -0
- data/lib/wp/wp-includes/SimplePie/XML/Declaration/Parser.php +362 -0
- data/lib/wp/wp-includes/SimplePie/gzdecode.php +371 -0
- data/lib/wp/wp-includes/Text/Diff.php +450 -0
- data/lib/wp/wp-includes/Text/Diff/Engine/native.php +436 -0
- data/lib/wp/wp-includes/Text/Diff/Engine/shell.php +162 -0
- data/lib/wp/wp-includes/Text/Diff/Engine/string.php +248 -0
- data/lib/wp/wp-includes/Text/Diff/Engine/xdiff.php +64 -0
- data/lib/wp/wp-includes/Text/Diff/Renderer.php +235 -0
- data/lib/wp/wp-includes/Text/Diff/Renderer/inline.php +206 -0
- data/lib/wp/wp-includes/admin-bar.php +870 -0
- data/lib/wp/wp-includes/atomlib.php +352 -0
- data/lib/wp/wp-includes/author-template.php +471 -0
- data/lib/wp/wp-includes/bookmark-template.php +298 -0
- data/lib/wp/wp-includes/bookmark.php +416 -0
- data/lib/wp/wp-includes/cache.php +704 -0
- data/lib/wp/wp-includes/canonical.php +586 -0
- data/lib/wp/wp-includes/capabilities.php +1539 -0
- data/lib/wp/wp-includes/category-template.php +1407 -0
- data/lib/wp/wp-includes/category.php +343 -0
- data/lib/wp/wp-includes/certificates/ca-bundle.crt +3785 -0
- data/lib/wp/wp-includes/class-IXR.php +1100 -0
- data/lib/wp/wp-includes/class-feed.php +140 -0
- data/lib/wp/wp-includes/class-http.php +2245 -0
- data/lib/wp/wp-includes/class-json.php +936 -0
- data/lib/wp/wp-includes/class-oembed.php +579 -0
- data/lib/wp/wp-includes/class-phpass.php +260 -0
- data/lib/wp/wp-includes/class-phpmailer.php +3265 -0
- data/lib/wp/wp-includes/class-pop3.php +652 -0
- data/lib/wp/wp-includes/class-simplepie.php +3119 -0
- data/lib/wp/wp-includes/class-smtp.php +943 -0
- data/lib/wp/wp-includes/class-snoopy.php +1256 -0
- data/lib/wp/wp-includes/class-wp-admin-bar.php +517 -0
- data/lib/wp/wp-includes/class-wp-ajax-response.php +199 -0
- data/lib/wp/wp-includes/class-wp-customize-control.php +1124 -0
- data/lib/wp/wp-includes/class-wp-customize-manager.php +1272 -0
- data/lib/wp/wp-includes/class-wp-customize-panel.php +200 -0
- data/lib/wp/wp-includes/class-wp-customize-section.php +196 -0
- data/lib/wp/wp-includes/class-wp-customize-setting.php +554 -0
- data/lib/wp/wp-includes/class-wp-customize-widgets.php +1556 -0
- data/lib/wp/wp-includes/class-wp-editor.php +1435 -0
- data/lib/wp/wp-includes/class-wp-embed.php +373 -0
- data/lib/wp/wp-includes/class-wp-error.php +276 -0
- data/lib/wp/wp-includes/class-wp-http-ixr-client.php +97 -0
- data/lib/wp/wp-includes/class-wp-image-editor-gd.php +459 -0
- data/lib/wp/wp-includes/class-wp-image-editor-imagick.php +512 -0
- data/lib/wp/wp-includes/class-wp-image-editor.php +475 -0
- data/lib/wp/wp-includes/class-wp-theme.php +1235 -0
- data/lib/wp/wp-includes/class-wp-walker.php +471 -0
- data/lib/wp/wp-includes/class-wp-xmlrpc-server.php +5984 -0
- data/lib/wp/wp-includes/class-wp.php +782 -0
- data/lib/wp/wp-includes/class.wp-dependencies.php +509 -0
- data/lib/wp/wp-includes/class.wp-scripts.php +247 -0
- data/lib/wp/wp-includes/class.wp-styles.php +210 -0
- data/lib/wp/wp-includes/comment-template.php +2286 -0
- data/lib/wp/wp-includes/comment.php +2606 -0
- data/lib/wp/wp-includes/compat.php +125 -0
- data/lib/wp/wp-includes/cron.php +469 -0
- data/lib/wp/wp-includes/css/admin-bar-rtl.css +1099 -0
- data/lib/wp/wp-includes/css/admin-bar-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/admin-bar.css +1099 -0
- data/lib/wp/wp-includes/css/admin-bar.min.css +1 -0
- data/lib/wp/wp-includes/css/buttons-rtl.css +364 -0
- data/lib/wp/wp-includes/css/buttons-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/buttons.css +364 -0
- data/lib/wp/wp-includes/css/buttons.min.css +1 -0
- data/lib/wp/wp-includes/css/dashicons.css +893 -0
- data/lib/wp/wp-includes/css/dashicons.min.css +1 -0
- data/lib/wp/wp-includes/css/editor-rtl.css +1993 -0
- data/lib/wp/wp-includes/css/editor-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/editor.css +1993 -0
- data/lib/wp/wp-includes/css/editor.min.css +1 -0
- data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.css +343 -0
- data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.min.css +19 -0
- data/lib/wp/wp-includes/css/jquery-ui-dialog.css +343 -0
- data/lib/wp/wp-includes/css/jquery-ui-dialog.min.css +19 -0
- data/lib/wp/wp-includes/css/media-views-rtl.css +2568 -0
- data/lib/wp/wp-includes/css/media-views-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/media-views.css +2568 -0
- data/lib/wp/wp-includes/css/media-views.min.css +1 -0
- data/lib/wp/wp-includes/css/wp-auth-check-rtl.css +100 -0
- data/lib/wp/wp-includes/css/wp-auth-check-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/wp-auth-check.css +100 -0
- data/lib/wp/wp-includes/css/wp-auth-check.min.css +1 -0
- data/lib/wp/wp-includes/css/wp-pointer-rtl.css +212 -0
- data/lib/wp/wp-includes/css/wp-pointer-rtl.min.css +1 -0
- data/lib/wp/wp-includes/css/wp-pointer.css +212 -0
- data/lib/wp/wp-includes/css/wp-pointer.min.css +1 -0
- data/lib/wp/wp-includes/date.php +475 -0
- data/lib/wp/wp-includes/default-constants.php +323 -0
- data/lib/wp/wp-includes/default-filters.php +307 -0
- data/lib/wp/wp-includes/default-widgets.php +1423 -0
- data/lib/wp/wp-includes/deprecated.php +3501 -0
- data/lib/wp/wp-includes/feed-atom-comments.php +115 -0
- data/lib/wp/wp-includes/feed-atom.php +87 -0
- data/lib/wp/wp-includes/feed-rdf.php +81 -0
- data/lib/wp/wp-includes/feed-rss.php +46 -0
- data/lib/wp/wp-includes/feed-rss2-comments.php +97 -0
- data/lib/wp/wp-includes/feed-rss2.php +115 -0
- data/lib/wp/wp-includes/feed.php +659 -0
- data/lib/wp/wp-includes/fonts/dashicons.eot +0 -0
- data/lib/wp/wp-includes/fonts/dashicons.svg +250 -0
- data/lib/wp/wp-includes/fonts/dashicons.ttf +0 -0
- data/lib/wp/wp-includes/fonts/dashicons.woff +0 -0
- data/lib/wp/wp-includes/formatting.php +4006 -0
- data/lib/wp/wp-includes/functions.php +4631 -0
- data/lib/wp/wp-includes/functions.wp-scripts.php +258 -0
- data/lib/wp/wp-includes/functions.wp-styles.php +245 -0
- data/lib/wp/wp-includes/general-template.php +2982 -0
- data/lib/wp/wp-includes/http.php +551 -0
- data/lib/wp/wp-includes/images/admin-bar-sprite-2x.png +0 -0
- data/lib/wp/wp-includes/images/admin-bar-sprite.png +0 -0
- data/lib/wp/wp-includes/images/arrow-pointer-blue-2x.png +0 -0
- data/lib/wp/wp-includes/images/arrow-pointer-blue.png +0 -0
- data/lib/wp/wp-includes/images/blank.gif +0 -0
- data/lib/wp/wp-includes/images/crystal/archive.png +0 -0
- data/lib/wp/wp-includes/images/crystal/audio.png +0 -0
- data/lib/wp/wp-includes/images/crystal/code.png +0 -0
- data/lib/wp/wp-includes/images/crystal/default.png +0 -0
- data/lib/wp/wp-includes/images/crystal/document.png +0 -0
- data/lib/wp/wp-includes/images/crystal/interactive.png +0 -0
- data/lib/wp/wp-includes/images/crystal/license.txt +9 -0
- data/lib/wp/wp-includes/images/crystal/spreadsheet.png +0 -0
- data/lib/wp/wp-includes/images/crystal/text.png +0 -0
- data/lib/wp/wp-includes/images/crystal/video.png +0 -0
- data/lib/wp/wp-includes/images/down_arrow-2x.gif +0 -0
- data/lib/wp/wp-includes/images/down_arrow.gif +0 -0
- data/lib/wp/wp-includes/images/icon-pointer-flag-2x.png +0 -0
- data/lib/wp/wp-includes/images/icon-pointer-flag.png +0 -0
- data/lib/wp/wp-includes/images/media/archive.png +0 -0
- data/lib/wp/wp-includes/images/media/audio.png +0 -0
- data/lib/wp/wp-includes/images/media/code.png +0 -0
- data/lib/wp/wp-includes/images/media/default.png +0 -0
- data/lib/wp/wp-includes/images/media/document.png +0 -0
- data/lib/wp/wp-includes/images/media/interactive.png +0 -0
- data/lib/wp/wp-includes/images/media/spreadsheet.png +0 -0
- data/lib/wp/wp-includes/images/media/text.png +0 -0
- data/lib/wp/wp-includes/images/media/video.png +0 -0
- data/lib/wp/wp-includes/images/rss-2x.png +0 -0
- data/lib/wp/wp-includes/images/rss.png +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_arrow.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_biggrin.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_confused.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_cool.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_cry.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_eek.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_evil.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_exclaim.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_idea.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_lol.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_mad.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_mrgreen.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_neutral.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_question.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_razz.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_redface.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_rolleyes.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_sad.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_smile.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_surprised.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_twisted.gif +0 -0
- data/lib/wp/wp-includes/images/smilies/icon_wink.gif +0 -0
- data/lib/wp/wp-includes/images/spinner-2x.gif +0 -0
- data/lib/wp/wp-includes/images/spinner.gif +0 -0
- data/lib/wp/wp-includes/images/toggle-arrow-2x.png +0 -0
- data/lib/wp/wp-includes/images/toggle-arrow.png +0 -0
- data/lib/wp/wp-includes/images/uploader-icons-2x.png +0 -0
- data/lib/wp/wp-includes/images/uploader-icons.png +0 -0
- data/lib/wp/wp-includes/images/wlw/wp-comments.png +0 -0
- data/lib/wp/wp-includes/images/wlw/wp-icon.png +0 -0
- data/lib/wp/wp-includes/images/wlw/wp-watermark.png +0 -0
- data/lib/wp/wp-includes/images/wpicons-2x.png +0 -0
- data/lib/wp/wp-includes/images/wpicons.png +0 -0
- data/lib/wp/wp-includes/images/wpspin-2x.gif +0 -0
- data/lib/wp/wp-includes/images/wpspin.gif +0 -0
- data/lib/wp/wp-includes/images/xit-2x.gif +0 -0
- data/lib/wp/wp-includes/images/xit.gif +0 -0
- data/lib/wp/wp-includes/js/admin-bar.js +365 -0
- data/lib/wp/wp-includes/js/admin-bar.min.js +1 -0
- data/lib/wp/wp-includes/js/autosave.js +589 -0
- data/lib/wp/wp-includes/js/autosave.min.js +1 -0
- data/lib/wp/wp-includes/js/backbone.min.js +1 -0
- data/lib/wp/wp-includes/js/colorpicker.js +707 -0
- data/lib/wp/wp-includes/js/colorpicker.min.js +1 -0
- data/lib/wp/wp-includes/js/comment-reply.js +47 -0
- data/lib/wp/wp-includes/js/comment-reply.min.js +1 -0
- data/lib/wp/wp-includes/js/crop/cropper.css +165 -0
- data/lib/wp/wp-includes/js/crop/cropper.js +516 -0
- data/lib/wp/wp-includes/js/crop/marqueeHoriz.gif +0 -0
- data/lib/wp/wp-includes/js/crop/marqueeVert.gif +0 -0
- data/lib/wp/wp-includes/js/customize-base.js +617 -0
- data/lib/wp/wp-includes/js/customize-base.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-loader.js +246 -0
- data/lib/wp/wp-includes/js/customize-loader.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-models.js +247 -0
- data/lib/wp/wp-includes/js/customize-models.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-preview-widgets.js +129 -0
- data/lib/wp/wp-includes/js/customize-preview-widgets.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-preview.js +154 -0
- data/lib/wp/wp-includes/js/customize-preview.min.js +1 -0
- data/lib/wp/wp-includes/js/customize-views.js +231 -0
- data/lib/wp/wp-includes/js/customize-views.min.js +1 -0
- data/lib/wp/wp-includes/js/heartbeat.js +738 -0
- data/lib/wp/wp-includes/js/heartbeat.min.js +1 -0
- data/lib/wp/wp-includes/js/hoverIntent.js +115 -0
- data/lib/wp/wp-includes/js/hoverIntent.min.js +1 -0
- data/lib/wp/wp-includes/js/imgareaselect/border-anim-h.gif +0 -0
- data/lib/wp/wp-includes/js/imgareaselect/border-anim-v.gif +0 -0
- data/lib/wp/wp-includes/js/imgareaselect/imgareaselect.css +41 -0
- data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.js +1205 -0
- data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.min.js +1 -0
- data/lib/wp/wp-includes/js/jcrop/Jcrop.gif +0 -0
- data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.css +29 -0
- data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.js +22 -0
- data/lib/wp/wp-includes/js/jquery/jquery-migrate.js +521 -0
- data/lib/wp/wp-includes/js/jquery/jquery-migrate.min.js +2 -0
- data/lib/wp/wp-includes/js/jquery/jquery.color.min.js +2 -0
- data/lib/wp/wp-includes/js/jquery/jquery.form.js +1193 -0
- data/lib/wp/wp-includes/js/jquery/jquery.form.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.js +134 -0
- data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.min.js +1 -0
- data/lib/wp/wp-includes/js/jquery/jquery.js +5 -0
- data/lib/wp/wp-includes/js/jquery/jquery.masonry.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/jquery.query.js +11 -0
- data/lib/wp/wp-includes/js/jquery/jquery.schedule.js +36 -0
- data/lib/wp/wp-includes/js/jquery/jquery.serialize-object.js +31 -0
- data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.js +99 -0
- data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.min.js +1 -0
- data/lib/wp/wp-includes/js/jquery/jquery.ui.touch-punch.js +11 -0
- data/lib/wp/wp-includes/js/jquery/suggest.js +316 -0
- data/lib/wp/wp-includes/js/jquery/suggest.min.js +1 -0
- data/lib/wp/wp-includes/js/jquery/ui/accordion.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/autocomplete.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/button.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/core.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/datepicker.min.js +12 -0
- data/lib/wp/wp-includes/js/jquery/ui/dialog.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/draggable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/droppable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-blind.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-bounce.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-clip.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-drop.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-explode.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-fade.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-fold.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-highlight.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-puff.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-pulsate.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-scale.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-shake.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-size.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-slide.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect-transfer.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/effect.min.js +21 -0
- data/lib/wp/wp-includes/js/jquery/ui/menu.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/mouse.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/position.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/progressbar.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/resizable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/selectable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/selectmenu.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/slider.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/sortable.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/spinner.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/tabs.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/tooltip.min.js +11 -0
- data/lib/wp/wp-includes/js/jquery/ui/widget.min.js +11 -0
- data/lib/wp/wp-includes/js/json2.js +480 -0
- data/lib/wp/wp-includes/js/json2.min.js +1 -0
- data/lib/wp/wp-includes/js/masonry.min.js +1 -0
- data/lib/wp/wp-includes/js/mce-view.js +829 -0
- data/lib/wp/wp-includes/js/mce-view.min.js +1 -0
- data/lib/wp/wp-includes/js/media-audiovideo.js +831 -0
- data/lib/wp/wp-includes/js/media-audiovideo.min.js +1 -0
- data/lib/wp/wp-includes/js/media-editor.js +1114 -0
- data/lib/wp/wp-includes/js/media-editor.min.js +1 -0
- data/lib/wp/wp-includes/js/media-grid.js +732 -0
- data/lib/wp/wp-includes/js/media-grid.min.js +1 -0
- data/lib/wp/wp-includes/js/media-models.js +1362 -0
- data/lib/wp/wp-includes/js/media-models.min.js +1 -0
- data/lib/wp/wp-includes/js/media-views.js +7484 -0
- data/lib/wp/wp-includes/js/media-views.min.js +3 -0
- data/lib/wp/wp-includes/js/mediaelement/background.png +0 -0
- data/lib/wp/wp-includes/js/mediaelement/bigplay.png +0 -0
- data/lib/wp/wp-includes/js/mediaelement/bigplay.svg +1 -0
- data/lib/wp/wp-includes/js/mediaelement/controls.png +0 -0
- data/lib/wp/wp-includes/js/mediaelement/controls.svg +1 -0
- data/lib/wp/wp-includes/js/mediaelement/flashmediaelement.swf +0 -0
- data/lib/wp/wp-includes/js/mediaelement/loading.gif +0 -0
- data/lib/wp/wp-includes/js/mediaelement/mediaelement-and-player.min.js +181 -0
- data/lib/wp/wp-includes/js/mediaelement/mediaelementplayer.min.css +1 -0
- data/lib/wp/wp-includes/js/mediaelement/silverlightmediaelement.xap +0 -0
- data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.css +274 -0
- data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.js +34 -0
- data/lib/wp/wp-includes/js/mediaelement/wp-playlist.js +175 -0
- data/lib/wp/wp-includes/js/plupload/handlers.js +488 -0
- data/lib/wp/wp-includes/js/plupload/handlers.min.js +1 -0
- data/lib/wp/wp-includes/js/plupload/license.txt +339 -0
- data/lib/wp/wp-includes/js/plupload/plupload.flash.swf +0 -0
- data/lib/wp/wp-includes/js/plupload/plupload.full.min.js +28 -0
- data/lib/wp/wp-includes/js/plupload/plupload.silverlight.xap +0 -0
- data/lib/wp/wp-includes/js/plupload/wp-plupload.js +376 -0
- data/lib/wp/wp-includes/js/plupload/wp-plupload.min.js +1 -0
- data/lib/wp/wp-includes/js/quicktags.js +652 -0
- data/lib/wp/wp-includes/js/quicktags.min.js +1 -0
- data/lib/wp/wp-includes/js/shortcode.js +356 -0
- data/lib/wp/wp-includes/js/shortcode.min.js +1 -0
- data/lib/wp/wp-includes/js/swfobject.js +4 -0
- data/lib/wp/wp-includes/js/swfupload/handlers.js +376 -0
- data/lib/wp/wp-includes/js/swfupload/handlers.min.js +1 -0
- data/lib/wp/wp-includes/js/swfupload/license.txt +32 -0
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.cookies.js +53 -0
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.queue.js +98 -0
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.speed.js +342 -0
- data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.swfobject.js +105 -0
- data/lib/wp/wp-includes/js/swfupload/swfupload.js +980 -0
- data/lib/wp/wp-includes/js/swfupload/swfupload.swf +0 -0
- data/lib/wp/wp-includes/js/thickbox/loadingAnimation.gif +0 -0
- data/lib/wp/wp-includes/js/thickbox/macFFBgHack.png +0 -0
- data/lib/wp/wp-includes/js/thickbox/thickbox.css +138 -0
- data/lib/wp/wp-includes/js/thickbox/thickbox.js +314 -0
- data/lib/wp/wp-includes/js/tinymce/langs/wp-langs-en.js +519 -0
- data/lib/wp/wp-includes/js/tinymce/license.txt +504 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.js +370 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.js +112 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/css/dialog.css +212 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.js +304 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.js +64 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.js +136 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.js +30 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.js +450 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.js +786 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/media/moxieplayer.swf +0 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.js +774 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.js +1553 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.js +125 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.js +272 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.js +513 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.js +207 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.js +92 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js +1035 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js +78 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.js +130 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.js +63 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.js +694 -0
- data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.inline.min.css +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.min.css +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/readme.md +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.eot +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.svg +62 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.woff +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.svg +63 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/anchor.gif +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/loader.gif +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/object.gif +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/trans.gif +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.ie7.min.css +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.min.css +1 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/audio.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/dashicon-edit.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/dashicon-no-alt.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/embedded.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/gallery-2x.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/gallery.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/more-2x.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/more.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/pagebreak-2x.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/pagebreak.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/playlist-audio.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/playlist-video.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/video.png +0 -0
- data/lib/wp/wp-includes/js/tinymce/skins/wordpress/wp-content.css +618 -0
- data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.js +617 -0
- data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.min.js +1 -0
- data/lib/wp/wp-includes/js/tinymce/tiny_mce_popup.js +539 -0
- data/lib/wp/wp-includes/js/tinymce/tinymce.min.js +11 -0
- data/lib/wp/wp-includes/js/tinymce/utils/editable_selects.js +70 -0
- data/lib/wp/wp-includes/js/tinymce/utils/form_utils.js +210 -0
- data/lib/wp/wp-includes/js/tinymce/utils/mctabs.js +164 -0
- data/lib/wp/wp-includes/js/tinymce/utils/validate.js +252 -0
- data/lib/wp/wp-includes/js/tinymce/wp-mce-help.php +145 -0
- data/lib/wp/wp-includes/js/tinymce/wp-tinymce.js.gz +0 -0
- data/lib/wp/wp-includes/js/tinymce/wp-tinymce.php +39 -0
- data/lib/wp/wp-includes/js/tw-sack.js +193 -0
- data/lib/wp/wp-includes/js/tw-sack.min.js +1 -0
- data/lib/wp/wp-includes/js/underscore.min.js +1 -0
- data/lib/wp/wp-includes/js/utils.js +197 -0
- data/lib/wp/wp-includes/js/utils.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-ajax-response.js +64 -0
- data/lib/wp/wp-includes/js/wp-ajax-response.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-auth-check.js +112 -0
- data/lib/wp/wp-includes/js/wp-auth-check.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-backbone.js +386 -0
- data/lib/wp/wp-includes/js/wp-backbone.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-list-revisions.js +24 -0
- data/lib/wp/wp-includes/js/wp-list-revisions.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-lists.js +469 -0
- data/lib/wp/wp-includes/js/wp-lists.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-pointer.js +282 -0
- data/lib/wp/wp-includes/js/wp-pointer.min.js +1 -0
- data/lib/wp/wp-includes/js/wp-util.js +106 -0
- data/lib/wp/wp-includes/js/wp-util.min.js +1 -0
- data/lib/wp/wp-includes/js/wpdialog.js +19 -0
- data/lib/wp/wp-includes/js/wpdialog.min.js +1 -0
- data/lib/wp/wp-includes/js/wplink.js +615 -0
- data/lib/wp/wp-includes/js/wplink.min.js +1 -0
- data/lib/wp/wp-includes/js/zxcvbn-async.js +18 -0
- data/lib/wp/wp-includes/js/zxcvbn-async.min.js +1 -0
- data/lib/wp/wp-includes/js/zxcvbn.min.js +47 -0
- data/lib/wp/wp-includes/kses.php +1526 -0
- data/lib/wp/wp-includes/l10n.php +908 -0
- data/lib/wp/wp-includes/link-template.php +3141 -0
- data/lib/wp/wp-includes/load.php +828 -0
- data/lib/wp/wp-includes/locale.php +368 -0
- data/lib/wp/wp-includes/media-template.php +1235 -0
- data/lib/wp/wp-includes/media.php +3329 -0
- data/lib/wp/wp-includes/meta.php +1221 -0
- data/lib/wp/wp-includes/ms-blogs.php +939 -0
- data/lib/wp/wp-includes/ms-default-constants.php +153 -0
- data/lib/wp/wp-includes/ms-default-filters.php +82 -0
- data/lib/wp/wp-includes/ms-deprecated.php +347 -0
- data/lib/wp/wp-includes/ms-files.php +82 -0
- data/lib/wp/wp-includes/ms-functions.php +2476 -0
- data/lib/wp/wp-includes/ms-load.php +458 -0
- data/lib/wp/wp-includes/ms-settings.php +213 -0
- data/lib/wp/wp-includes/nav-menu-template.php +678 -0
- data/lib/wp/wp-includes/nav-menu.php +895 -0
- data/lib/wp/wp-includes/option.php +1440 -0
- data/lib/wp/wp-includes/pluggable-deprecated.php +192 -0
- data/lib/wp/wp-includes/pluggable.php +2283 -0
- data/lib/wp/wp-includes/plugin.php +920 -0
- data/lib/wp/wp-includes/pomo/entry.php +78 -0
- data/lib/wp/wp-includes/pomo/mo.php +262 -0
- data/lib/wp/wp-includes/pomo/po.php +384 -0
- data/lib/wp/wp-includes/pomo/streams.php +209 -0
- data/lib/wp/wp-includes/pomo/translations.php +275 -0
- data/lib/wp/wp-includes/post-formats.php +243 -0
- data/lib/wp/wp-includes/post-template.php +1766 -0
- data/lib/wp/wp-includes/post-thumbnail-template.php +142 -0
- data/lib/wp/wp-includes/post.php +5842 -0
- data/lib/wp/wp-includes/query.php +4666 -0
- data/lib/wp/wp-includes/registration-functions.php +7 -0
- data/lib/wp/wp-includes/registration.php +7 -0
- data/lib/wp/wp-includes/revision.php +657 -0
- data/lib/wp/wp-includes/rewrite.php +2180 -0
- data/lib/wp/wp-includes/rss-functions.php +9 -0
- data/lib/wp/wp-includes/rss.php +936 -0
- data/lib/wp/wp-includes/script-loader.php +1045 -0
- data/lib/wp/wp-includes/session.php +430 -0
- data/lib/wp/wp-includes/shortcodes.php +410 -0
- data/lib/wp/wp-includes/taxonomy.php +4006 -0
- data/lib/wp/wp-includes/template-loader.php +76 -0
- data/lib/wp/wp-includes/template.php +505 -0
- data/lib/wp/wp-includes/theme-compat/comments-popup.php +128 -0
- data/lib/wp/wp-includes/theme-compat/comments.php +101 -0
- data/lib/wp/wp-includes/theme-compat/footer.php +30 -0
- data/lib/wp/wp-includes/theme-compat/header.php +49 -0
- data/lib/wp/wp-includes/theme-compat/sidebar.php +83 -0
- data/lib/wp/wp-includes/theme.php +2014 -0
- data/lib/wp/wp-includes/update.php +674 -0
- data/lib/wp/wp-includes/user.php +2292 -0
- data/lib/wp/wp-includes/vars.php +144 -0
- data/lib/wp/wp-includes/version.php +35 -0
- data/lib/wp/wp-includes/widgets.php +1514 -0
- data/lib/wp/wp-includes/wlwmanifest.xml +43 -0
- data/lib/wp/wp-includes/wp-db.php +2190 -0
- data/lib/wp/wp-includes/wp-diff.php +523 -0
- data/lib/wp/wp-links-opml.php +80 -0
- data/lib/wp/wp-load.php +73 -0
- data/lib/wp/wp-login.php +952 -0
- data/lib/wp/wp-mail.php +260 -0
- data/lib/wp/wp-settings.php +374 -0
- data/lib/wp/wp-signup.php +749 -0
- data/lib/wp/wp-trackback.php +127 -0
- data/lib/wp/xmlrpc.php +101 -0
- data/stump-cli.gemspec +26 -0
- metadata +1332 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(a,b){var c=wp.customize;c.Setting=c.Value.extend({initialize:function(a,b,d){c.Value.prototype.initialize.call(this,b,d),this.id=a,this.transport=this.transport||"refresh",this.bind(this.preview)},preview:function(){switch(this.transport){case"refresh":return this.previewer.refresh();case"postMessage":return this.previewer.send("setting",[this.id,this()])}}}),c.Control=c.Class.extend({initialize:function(a,d){var e,f,g,h=this;this.params={},b.extend(this,d||{}),this.id=a,this.selector="#customize-control-"+a.replace(/\]/g,"").replace(/\[/g,"-"),this.container=b(this.selector),this.active=new c.Value(this.params.active),g=b.map(this.params.settings,function(a){return a}),c.apply(c,g.concat(function(){var a;h.settings={};for(a in h.params.settings)h.settings[a]=c(h.params.settings[a]);h.setting=h.settings["default"]||null,h.ready()})),h.elements=[],e=this.container.find("[data-customize-setting-link]"),f={},e.each(function(){var a,d=b(this);if(d.is(":radio")){if(a=d.prop("name"),f[a])return;f[a]=!0,d=e.filter('[name="'+a+'"]')}c(d.data("customizeSettingLink"),function(a){var b=new c.Element(d);h.elements.push(b),b.sync(a),b.set(a())})}),h.active.bind(function(a){h.toggle(a)}),h.toggle(h.active())},ready:function(){},toggle:function(a){a?this.container.slideDown():this.container.slideUp()},dropdownInit:function(){var a=this,b=this.container.find(".dropdown-status"),c=this.params,d=!1,e=function(a){"string"==typeof a&&c.statuses&&c.statuses[a]?b.html(c.statuses[a]).show():b.hide()};this.container.on("click keydown",".dropdown",function(b){("keydown"!==b.type||13===b.which)&&(b.preventDefault(),d||a.container.toggleClass("open"),a.container.hasClass("open")&&a.container.parent().parent().find("li.library-selected").focus(),d=!0,setTimeout(function(){d=!1},400))}),this.setting.bind(e),e(this.setting())}}),c.ColorControl=c.Control.extend({ready:function(){var a=this,b=this.container.find(".color-picker-hex");b.val(a.setting()).wpColorPicker({change:function(){a.setting.set(b.wpColorPicker("color"))},clear:function(){a.setting.set(!1)}})}}),c.UploadControl=c.Control.extend({ready:function(){var a=this;this.params.removed=this.params.removed||"",this.success=b.proxy(this.success,this),this.uploader=b.extend({container:this.container,browser:this.container.find(".upload"),dropzone:this.container.find(".upload-dropzone"),success:this.success,plupload:{},params:{}},this.uploader||{}),a.params.extensions&&(a.uploader.plupload.filters=[{title:c.l10n.allowedFiles,extensions:a.params.extensions}]),a.params.context&&(a.uploader.params["post_data[context]"]=this.params.context),c.settings.theme.stylesheet&&(a.uploader.params["post_data[theme]"]=c.settings.theme.stylesheet),this.uploader=new wp.Uploader(this.uploader),this.remover=this.container.find(".remove"),this.remover.on("click keydown",function(b){("keydown"!==b.type||13===b.which)&&(a.setting.set(a.params.removed),b.preventDefault())}),this.removerVisibility=b.proxy(this.removerVisibility,this),this.setting.bind(this.removerVisibility),this.removerVisibility(this.setting.get())},success:function(a){this.setting.set(a.get("url"))},removerVisibility:function(a){this.remover.toggle(a!=this.params.removed)}}),c.ImageControl=c.UploadControl.extend({ready:function(){var a,d=this;this.uploader={init:function(){var a,b;this.supports.dragdrop||(a=d.container.find(".upload-fallback"),b=a.children().detach(),this.browser.detach().empty().append(b),a.append(this.browser).show())}},c.UploadControl.prototype.ready.call(this),this.thumbnail=this.container.find(".preview-thumbnail img"),this.thumbnailSrc=b.proxy(this.thumbnailSrc,this),this.setting.bind(this.thumbnailSrc),this.library=this.container.find(".library"),this.tabs={},a=this.library.find(".library-content"),this.library.children("ul").children("li").each(function(){var c=b(this),e=c.data("customizeTab"),f=a.filter('[data-customize-tab="'+e+'"]');d.tabs[e]={both:c.add(f),link:c,panel:f}}),this.library.children("ul").on("click keydown","li",function(a){if("keydown"!==a.type||13===a.which){var c=b(this).data("customizeTab"),e=d.tabs[c];a.preventDefault(),e.link.hasClass("library-selected")||(d.selected.both.removeClass("library-selected"),d.selected=e,d.selected.both.addClass("library-selected"))}}),this.library.on("click keydown","a",function(a){if("keydown"!==a.type||13===a.which){var c=b(this).data("customizeImageValue");c&&(d.setting.set(c),a.preventDefault())}}),this.tabs.uploaded&&(this.tabs.uploaded.target=this.library.find(".uploaded-target"),this.tabs.uploaded.panel.find(".thumbnail").length||this.tabs.uploaded.both.addClass("hidden")),a.each(function(){var a=d.tabs[b(this).data("customizeTab")];return a.link.hasClass("hidden")?void 0:(d.selected=a,a.both.addClass("library-selected"),!1)}),this.dropdownInit()},success:function(a){c.UploadControl.prototype.success.call(this,a),this.tabs.uploaded&&this.tabs.uploaded.target.length&&(this.tabs.uploaded.both.removeClass("hidden"),a.element=b('<a href="#" class="thumbnail"></a>').data("customizeImageValue",a.get("url")).append('<img src="'+a.get("url")+'" />').appendTo(this.tabs.uploaded.target))},thumbnailSrc:function(a){/^(https?:)?\/\//.test(a)?this.thumbnail.prop("src",a).show():this.thumbnail.hide()}}),c.HeaderControl=c.Control.extend({ready:function(){this.btnRemove=b("#customize-control-header_image .actions .remove"),this.btnNew=b("#customize-control-header_image .actions .new"),_.bindAll(this,"openMedia","removeImage"),this.btnNew.on("click",this.openMedia),this.btnRemove.on("click",this.removeImage),c.HeaderTool.currentHeader=new c.HeaderTool.ImageModel,new c.HeaderTool.CurrentView({model:c.HeaderTool.currentHeader,el:".current .container"}),new c.HeaderTool.ChoiceListView({collection:c.HeaderTool.UploadsList=new c.HeaderTool.ChoiceList,el:".choices .uploaded .list"}),new c.HeaderTool.ChoiceListView({collection:c.HeaderTool.DefaultsList=new c.HeaderTool.DefaultsList,el:".choices .default .list"}),c.HeaderTool.combinedList=c.HeaderTool.CombinedList=new c.HeaderTool.CombinedList([c.HeaderTool.UploadsList,c.HeaderTool.DefaultsList])},calculateImageSelectOptions:function(a,b){var d,e,f,g,h,i,j=parseInt(_wpCustomizeHeader.data.width,10),k=parseInt(_wpCustomizeHeader.data.height,10),l=!!parseInt(_wpCustomizeHeader.data["flex-width"],10),m=!!parseInt(_wpCustomizeHeader.data["flex-height"],10);return h=a.get("width"),g=a.get("height"),this.headerImage=new c.HeaderTool.ImageModel,this.headerImage.set({themeWidth:j,themeHeight:k,themeFlexWidth:l,themeFlexHeight:m,imageWidth:h,imageHeight:g}),b.set("canSkipCrop",!this.headerImage.shouldBeCropped()),d=j/k,e=h,f=g,e/f>d?(k=f,j=k*d):(j=e,k=j/d),i={handles:!0,keys:!0,instance:!0,persistent:!0,imageWidth:h,imageHeight:g,x1:0,y1:0,x2:j,y2:k},m===!1&&l===!1&&(i.aspectRatio=j+":"+k),m===!1&&(i.maxHeight=k),l===!1&&(i.maxWidth=j),i},openMedia:function(a){var b=_wpMediaViewsL10n;a.preventDefault(),this.frame=wp.media({button:{text:b.selectAndCrop,close:!1},states:[new wp.media.controller.Library({title:b.chooseImage,library:wp.media.query({type:"image"}),multiple:!1,priority:20,suggestedWidth:_wpCustomizeHeader.data.width,suggestedHeight:_wpCustomizeHeader.data.height}),new wp.media.controller.Cropper({imgSelectOptions:this.calculateImageSelectOptions})]}),this.frame.on("select",this.onSelect,this),this.frame.on("cropped",this.onCropped,this),this.frame.on("skippedcrop",this.onSkippedCrop,this),this.frame.open()},onSelect:function(){this.frame.setState("cropper")},onCropped:function(a){var b=a.post_content,c=a.attachment_id,d=a.width,e=a.height;this.setImageFromURL(b,c,d,e)},onSkippedCrop:function(a){var b=a.get("url"),c=a.get("width"),d=a.get("height");this.setImageFromURL(b,a.id,c,d)},setImageFromURL:function(a,b,d,e){var f,g={};g.url=a,g.thumbnail_url=a,g.timestamp=_.now(),b&&(g.attachment_id=b),d&&(g.width=d),e&&(g.height=e),f=new c.HeaderTool.ImageModel({header:g,choice:a.split("/").pop()}),c.HeaderTool.UploadsList.add(f),c.HeaderTool.currentHeader.set(f.toJSON()),f.save(),f.importImage()},removeImage:function(){c.HeaderTool.currentHeader.trigger("hide"),c.HeaderTool.CombinedList.trigger("control:removeImage")}}),c.defaultConstructor=c.Setting,c.control=new c.Values({defaultConstructor:c.Control}),c.PreviewFrame=c.Messenger.extend({sensitivity:2e3,initialize:function(a,d){var e=b.Deferred();e.promise(this),this.container=a.container,this.signature=a.signature,b.extend(a,{channel:c.PreviewFrame.uuid()}),c.Messenger.prototype.initialize.call(this,a,d),this.add("previewUrl",a.previewUrl),this.query=b.extend(a.query||{},{customize_messenger_channel:this.channel()}),this.run(e)},run:function(a){var d=this,e=!1,f=!1;this._ready&&this.unbind("ready",this._ready),this._ready=function(){f=!0,e&&a.resolveWith(d)},this.bind("ready",this._ready),this.bind("ready",function(a){a&&a.activeControls&&b.each(a.activeControls,function(a,b){var d=c.control(a);d&&d.active(b)})}),this.request=b.ajax(this.previewUrl(),{type:"POST",data:this.query,xhrFields:{withCredentials:!0}}),this.request.fail(function(){a.rejectWith(d,["request failure"])}),this.request.done(function(c){var g,h=d.request.getResponseHeader("Location"),i=d.signature;return h&&h!=d.previewUrl()?void a.rejectWith(d,["redirect",h]):"0"===c?void d.login(a):"-1"===c?void a.rejectWith(d,["cheatin"]):(g=c.lastIndexOf(i),-1===g||g<c.lastIndexOf("</html>")?void a.rejectWith(d,["unsigned"]):(c=c.slice(0,g)+c.slice(g+i.length),d.iframe=b("<iframe />").appendTo(d.container),d.iframe.one("load",function(){e=!0,f?a.resolveWith(d):setTimeout(function(){a.rejectWith(d,["ready timeout"])},d.sensitivity)}),d.targetWindow(d.iframe[0].contentWindow),d.targetWindow().document.open(),d.targetWindow().document.write(c),void d.targetWindow().document.close()))})},login:function(a){var d,e=this;return d=function(){a.rejectWith(e,["logged out"])},this.triedLogin?d():void b.get(c.settings.url.ajax,{action:"logged-in"}).fail(d).done(function(c){var f;"1"!==c&&d(),f=b('<iframe src="'+e.previewUrl()+'" />').hide(),f.appendTo(e.container),f.load(function(){e.triedLogin=!0,f.remove(),e.run(a)})})},destroy:function(){c.Messenger.prototype.destroy.call(this),this.request.abort(),this.iframe&&this.iframe.remove(),delete this.request,delete this.iframe,delete this.targetWindow}}),function(){var a=0;c.PreviewFrame.uuid=function(){return"preview-"+a++}}(),c.Previewer=c.Messenger.extend({refreshBuffer:250,initialize:function(a,d){var e=this,f=/^https?/;b.extend(this,d||{}),this.refresh=function(a){var b,c=a.refresh,d=function(){b=null,c.call(a)};return function(){if("number"!=typeof b){if(!a.loading)return d();a.abort()}clearTimeout(b),b=setTimeout(d,a.refreshBuffer)}}(this),this.container=c.ensure(a.container),this.allowedUrls=a.allowedUrls,this.signature=a.signature,a.url=window.location.href,c.Messenger.prototype.initialize.call(this,a),this.add("scheme",this.origin()).link(this.origin).setter(function(a){var b=a.match(f);return b?b[0]:""}),this.add("previewUrl",a.previewUrl).setter(function(a){var c;return/\/wp-admin(\/|$)/.test(a.replace(/[#?].*$/,""))?null:(b.each([a.replace(f,e.scheme()),a],function(a,d){return b.each(e.allowedUrls,function(a,b){var e;return b=b.replace(/\/+$/,""),e=d.replace(b,""),0===d.indexOf(b)&&/^([/#?]|$)/.test(e)?(c=d,!1):void 0}),c?!1:void 0}),c?c:null)}),this.previewUrl.bind(this.refresh),this.scroll=0,this.bind("scroll",function(a){this.scroll=a}),this.bind("url",this.previewUrl)},query:function(){},abort:function(){this.loading&&(this.loading.destroy(),delete this.loading)},refresh:function(){var a=this;this.abort(),this.loading=new c.PreviewFrame({url:this.url(),previewUrl:this.previewUrl(),query:this.query()||{},container:this.container,signature:this.signature}),this.loading.done(function(){this.bind("synced",function(){a.preview&&a.preview.destroy(),a.preview=this,delete a.loading,a.targetWindow(this.targetWindow()),a.channel(this.channel()),a.send("active")}),this.send("sync",{scroll:a.scroll,settings:c.get()})}),this.loading.fail(function(b,c){"redirect"===b&&c&&a.previewUrl(c),"logged out"===b&&(a.preview&&(a.preview.destroy(),delete a.preview),a.login().done(a.refresh)),"cheatin"===b&&a.cheatin()})},login:function(){var a,d,e,f=this;return this._login?this._login:(a=b.Deferred(),this._login=a.promise(),d=new c.Messenger({channel:"login",url:c.settings.url.login}),e=b('<iframe src="'+c.settings.url.login+'" />').appendTo(this.container),d.targetWindow(e[0].contentWindow),d.bind("login",function(){e.remove(),d.destroy(),delete f._login,a.resolve()}),this._login)},cheatin:function(){b(document.body).empty().addClass("cheatin").append("<p>"+c.l10n.cheatin+"</p>")}}),c.controlConstructor={color:c.ColorControl,upload:c.UploadControl,image:c.ImageControl,header:c.HeaderControl},b(function(){if(c.settings=window._wpCustomizeSettings,c.l10n=window._wpCustomizeControlsL10n,c.settings){if(!b.support.postMessage||!b.support.cors&&c.settings.isCrossDomain)return window.location=c.settings.url.fallback;var a,d,e=b(document.body),f=e.children(".wp-full-overlay"),g=b("#customize-info .theme-name.site-title"),h=b(".customize-controls-close"),i=b("#save");b("#customize-controls").on("keydown",function(a){var c=13===a.which,d=b(a.target);c&&(d.is("input:not([type=button])")||d.is("select"))&&a.preventDefault()}),c.previewer=new c.Previewer({container:"#customize-preview",form:"#customize-controls",previewUrl:c.settings.url.preview,allowedUrls:c.settings.url.allowed,signature:"WP_CUSTOMIZER_SIGNATURE"},{nonce:c.settings.nonce,query:function(){return{wp_customize:"on",theme:c.settings.theme.stylesheet,customized:JSON.stringify(c.get()),nonce:this.nonce.preview}},save:function(){var a,d,f=this,g=b.extend(this.query(),{action:"customize_save",nonce:this.nonce.save}),h=c.state("processing");e.addClass("saving"),d=function(){var a=b.post(c.settings.url.ajax,g);c.trigger("save",a),a.always(function(){e.removeClass("saving")}),a.done(function(a){return"0"===a?(f.preview.iframe.hide(),void f.login().done(function(){f.save(),f.preview.iframe.show()})):"-1"===a?void f.cheatin():void c.trigger("saved")})},0===h()?d():(a=function(){0===h()&&(c.state.unbind("change",a),d())},c.state.bind("change",a))}}),c.previewer.bind("nonce",function(a){b.extend(this.nonce,a)}),b.each(c.settings.settings,function(a,b){c.create(a,a,b.value,{transport:b.transport,previewer:c.previewer})}),b.each(c.settings.controls,function(a,b){var d,e=c.controlConstructor[b.type]||c.Control;d=c.control.add(a,new e(a,{params:b,previewer:c.previewer}))}),c.previewer.previewUrl()?c.previewer.refresh():c.previewer.previewUrl(c.settings.url.home),function(){var a=new c.Values,b=a.create("saved"),d=a.create("activated"),e=a.create("processing");a.bind("change",function(){d()?b()?(i.val(c.l10n.saved).prop("disabled",!0),h.find(".screen-reader-text").text(c.l10n.close)):(i.val(c.l10n.save).prop("disabled",!1),h.find(".screen-reader-text").text(c.l10n.cancel)):(i.val(c.l10n.activate).prop("disabled",!1),h.find(".screen-reader-text").text(c.l10n.cancel))}),b(!0),d(c.settings.theme.active),e(0),c.bind("change",function(){a("saved").set(!1)}),c.bind("saved",function(){a("saved").set(!0),a("activated").set(!0)}),d.bind(function(a){a&&c.trigger("activated")}),c.state=a}(),i.click(function(a){c.previewer.save(),a.preventDefault()}).keydown(function(a){9!==a.which&&(13===a.which&&c.previewer.save(),a.preventDefault())}),h.keydown(function(a){9!==a.which&&(13===a.which&&this.click(),a.preventDefault())}),b(".upload-dropzone a.upload").keydown(function(a){13===a.which&&this.click()}),b(".collapse-sidebar").on("click keydown",function(a){("keydown"!==a.type||13===a.which)&&(f.toggleClass("collapsed").toggleClass("expanded"),a.preventDefault())}),g.length&&b("#customize-control-blogname input").on("input",function(){g.text(this.value)}),a=new c.Messenger({url:c.settings.url.parent,channel:"loader"}),a.bind("back",function(){h.on("click.customize-controls-close",function(b){b.preventDefault(),a.send("close")})}),b(window).on("beforeunload",function(){return c.state("saved")()?void 0:c.l10n.saveAlert}),b.each(["saved","change"],function(b,d){c.bind(d,function(){a.send(d)})}),c.bind("activated",function(){a.targetWindow()?a.send("activated",c.settings.url.activated):c.settings.url.activated&&(window.location=c.settings.url.activated)}),a.send("ready"),b.each({background_image:{controls:["background_repeat","background_position_x","background_attachment"],callback:function(a){return!!a}},show_on_front:{controls:["page_on_front","page_for_posts"],callback:function(a){return"page"===a}},header_textcolor:{controls:["header_textcolor"],callback:function(a){return"blank"!==a}}},function(a,d){c(a,function(a){b.each(d.controls,function(b,e){c.control(e,function(b){var c=function(a){b.container.toggle(d.callback(a))};c(a.get()),a.bind(c)})})})}),c.control("display_header_text",function(a){var b="";a.elements[0].unsync(c("header_textcolor")),a.element=new c.Element(a.container.find("input")),a.element.set("blank"!==a.setting()),a.element.bind(function(d){d||(b=c("header_textcolor").get()),a.setting.set(d?b:"blank")}),a.setting.bind(function(b){a.element.set("blank"!==b)})}),c.trigger("ready"),d=h,d.focus(),setTimeout(function(){d.focus()},200)}})}(wp,jQuery);
|
|
@@ -0,0 +1,1882 @@
|
|
|
1
|
+
/* global _wpCustomizeWidgetsSettings */
|
|
2
|
+
(function( wp, $ ){
|
|
3
|
+
|
|
4
|
+
if ( ! wp || ! wp.customize ) { return; }
|
|
5
|
+
|
|
6
|
+
// Set up our namespace...
|
|
7
|
+
var api = wp.customize,
|
|
8
|
+
l10n;
|
|
9
|
+
|
|
10
|
+
api.Widgets = api.Widgets || {};
|
|
11
|
+
|
|
12
|
+
// Link settings
|
|
13
|
+
api.Widgets.data = _wpCustomizeWidgetsSettings || {};
|
|
14
|
+
l10n = api.Widgets.data.l10n;
|
|
15
|
+
delete api.Widgets.data.l10n;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* wp.customize.Widgets.WidgetModel
|
|
19
|
+
*
|
|
20
|
+
* A single widget model.
|
|
21
|
+
*
|
|
22
|
+
* @constructor
|
|
23
|
+
* @augments Backbone.Model
|
|
24
|
+
*/
|
|
25
|
+
api.Widgets.WidgetModel = Backbone.Model.extend({
|
|
26
|
+
id: null,
|
|
27
|
+
temp_id: null,
|
|
28
|
+
classname: null,
|
|
29
|
+
control_tpl: null,
|
|
30
|
+
description: null,
|
|
31
|
+
is_disabled: null,
|
|
32
|
+
is_multi: null,
|
|
33
|
+
multi_number: null,
|
|
34
|
+
name: null,
|
|
35
|
+
id_base: null,
|
|
36
|
+
transport: 'refresh',
|
|
37
|
+
params: [],
|
|
38
|
+
width: null,
|
|
39
|
+
height: null,
|
|
40
|
+
search_matched: true
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* wp.customize.Widgets.WidgetCollection
|
|
45
|
+
*
|
|
46
|
+
* Collection for widget models.
|
|
47
|
+
*
|
|
48
|
+
* @constructor
|
|
49
|
+
* @augments Backbone.Model
|
|
50
|
+
*/
|
|
51
|
+
api.Widgets.WidgetCollection = Backbone.Collection.extend({
|
|
52
|
+
model: api.Widgets.WidgetModel,
|
|
53
|
+
|
|
54
|
+
// Controls searching on the current widget collection
|
|
55
|
+
// and triggers an update event
|
|
56
|
+
doSearch: function( value ) {
|
|
57
|
+
|
|
58
|
+
// Don't do anything if we've already done this search
|
|
59
|
+
// Useful because the search handler fires multiple times per keystroke
|
|
60
|
+
if ( this.terms === value ) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Updates terms with the value passed
|
|
65
|
+
this.terms = value;
|
|
66
|
+
|
|
67
|
+
// If we have terms, run a search...
|
|
68
|
+
if ( this.terms.length > 0 ) {
|
|
69
|
+
this.search( this.terms );
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// If search is blank, show all themes
|
|
73
|
+
// Useful for resetting the views when you clean the input
|
|
74
|
+
if ( this.terms === '' ) {
|
|
75
|
+
this.each( function ( widget ) {
|
|
76
|
+
widget.set( 'search_matched', true );
|
|
77
|
+
} );
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
// Performs a search within the collection
|
|
82
|
+
// @uses RegExp
|
|
83
|
+
search: function( term ) {
|
|
84
|
+
var match, haystack;
|
|
85
|
+
|
|
86
|
+
// Escape the term string for RegExp meta characters
|
|
87
|
+
term = term.replace( /[-\/\\^$*+?.()|[\]{}]/g, '\\$&' );
|
|
88
|
+
|
|
89
|
+
// Consider spaces as word delimiters and match the whole string
|
|
90
|
+
// so matching terms can be combined
|
|
91
|
+
term = term.replace( / /g, ')(?=.*' );
|
|
92
|
+
match = new RegExp( '^(?=.*' + term + ').+', 'i' );
|
|
93
|
+
|
|
94
|
+
this.each( function ( data ) {
|
|
95
|
+
haystack = [ data.get( 'name' ), data.get( 'id' ), data.get( 'description' ) ].join( ' ' );
|
|
96
|
+
data.set( 'search_matched', match.test( haystack ) );
|
|
97
|
+
} );
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
api.Widgets.availableWidgets = new api.Widgets.WidgetCollection( api.Widgets.data.availableWidgets );
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* wp.customize.Widgets.SidebarModel
|
|
104
|
+
*
|
|
105
|
+
* A single sidebar model.
|
|
106
|
+
*
|
|
107
|
+
* @constructor
|
|
108
|
+
* @augments Backbone.Model
|
|
109
|
+
*/
|
|
110
|
+
api.Widgets.SidebarModel = Backbone.Model.extend({
|
|
111
|
+
after_title: null,
|
|
112
|
+
after_widget: null,
|
|
113
|
+
before_title: null,
|
|
114
|
+
before_widget: null,
|
|
115
|
+
'class': null,
|
|
116
|
+
description: null,
|
|
117
|
+
id: null,
|
|
118
|
+
name: null,
|
|
119
|
+
is_rendered: false
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* wp.customize.Widgets.SidebarCollection
|
|
124
|
+
*
|
|
125
|
+
* Collection for sidebar models.
|
|
126
|
+
*
|
|
127
|
+
* @constructor
|
|
128
|
+
* @augments Backbone.Collection
|
|
129
|
+
*/
|
|
130
|
+
api.Widgets.SidebarCollection = Backbone.Collection.extend({
|
|
131
|
+
model: api.Widgets.SidebarModel
|
|
132
|
+
});
|
|
133
|
+
api.Widgets.registeredSidebars = new api.Widgets.SidebarCollection( api.Widgets.data.registeredSidebars );
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* wp.customize.Widgets.AvailableWidgetsPanelView
|
|
137
|
+
*
|
|
138
|
+
* View class for the available widgets panel.
|
|
139
|
+
*
|
|
140
|
+
* @constructor
|
|
141
|
+
* @augments wp.Backbone.View
|
|
142
|
+
* @augments Backbone.View
|
|
143
|
+
*/
|
|
144
|
+
api.Widgets.AvailableWidgetsPanelView = wp.Backbone.View.extend({
|
|
145
|
+
|
|
146
|
+
el: '#available-widgets',
|
|
147
|
+
|
|
148
|
+
events: {
|
|
149
|
+
'input #widgets-search': 'search',
|
|
150
|
+
'keyup #widgets-search': 'search',
|
|
151
|
+
'change #widgets-search': 'search',
|
|
152
|
+
'search #widgets-search': 'search',
|
|
153
|
+
'focus .widget-tpl' : 'focus',
|
|
154
|
+
'click .widget-tpl' : '_submit',
|
|
155
|
+
'keypress .widget-tpl' : '_submit',
|
|
156
|
+
'keydown' : 'keyboardAccessible'
|
|
157
|
+
},
|
|
158
|
+
|
|
159
|
+
// Cache current selected widget
|
|
160
|
+
selected: null,
|
|
161
|
+
|
|
162
|
+
// Cache sidebar control which has opened panel
|
|
163
|
+
currentSidebarControl: null,
|
|
164
|
+
$search: null,
|
|
165
|
+
|
|
166
|
+
initialize: function() {
|
|
167
|
+
var self = this;
|
|
168
|
+
|
|
169
|
+
this.$search = $( '#widgets-search' );
|
|
170
|
+
|
|
171
|
+
_.bindAll( this, 'close' );
|
|
172
|
+
|
|
173
|
+
this.listenTo( this.collection, 'change', this.updateList );
|
|
174
|
+
|
|
175
|
+
this.updateList();
|
|
176
|
+
|
|
177
|
+
// If the available widgets panel is open and the customize controls are
|
|
178
|
+
// interacted with (i.e. available widgets panel is blurred) then close the
|
|
179
|
+
// available widgets panel.
|
|
180
|
+
$( '#customize-controls' ).on( 'click keydown', function( e ) {
|
|
181
|
+
var isAddNewBtn = $( e.target ).is( '.add-new-widget, .add-new-widget *' );
|
|
182
|
+
if ( $( 'body' ).hasClass( 'adding-widget' ) && ! isAddNewBtn ) {
|
|
183
|
+
self.close();
|
|
184
|
+
}
|
|
185
|
+
} );
|
|
186
|
+
|
|
187
|
+
// Close the panel if the URL in the preview changes
|
|
188
|
+
api.previewer.bind( 'url', this.close );
|
|
189
|
+
},
|
|
190
|
+
|
|
191
|
+
// Performs a search and handles selected widget
|
|
192
|
+
search: function( event ) {
|
|
193
|
+
var firstVisible;
|
|
194
|
+
|
|
195
|
+
this.collection.doSearch( event.target.value );
|
|
196
|
+
|
|
197
|
+
// Remove a widget from being selected if it is no longer visible
|
|
198
|
+
if ( this.selected && ! this.selected.is( ':visible' ) ) {
|
|
199
|
+
this.selected.removeClass( 'selected' );
|
|
200
|
+
this.selected = null;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// If a widget was selected but the filter value has been cleared out, clear selection
|
|
204
|
+
if ( this.selected && ! event.target.value ) {
|
|
205
|
+
this.selected.removeClass( 'selected' );
|
|
206
|
+
this.selected = null;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// If a filter has been entered and a widget hasn't been selected, select the first one shown
|
|
210
|
+
if ( ! this.selected && event.target.value ) {
|
|
211
|
+
firstVisible = this.$el.find( '> .widget-tpl:visible:first' );
|
|
212
|
+
if ( firstVisible.length ) {
|
|
213
|
+
this.select( firstVisible );
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
|
|
218
|
+
// Changes visibility of available widgets
|
|
219
|
+
updateList: function() {
|
|
220
|
+
this.collection.each( function( widget ) {
|
|
221
|
+
var widgetTpl = $( '#widget-tpl-' + widget.id );
|
|
222
|
+
widgetTpl.toggle( widget.get( 'search_matched' ) && ! widget.get( 'is_disabled' ) );
|
|
223
|
+
if ( widget.get( 'is_disabled' ) && widgetTpl.is( this.selected ) ) {
|
|
224
|
+
this.selected = null;
|
|
225
|
+
}
|
|
226
|
+
} );
|
|
227
|
+
},
|
|
228
|
+
|
|
229
|
+
// Highlights a widget
|
|
230
|
+
select: function( widgetTpl ) {
|
|
231
|
+
this.selected = $( widgetTpl );
|
|
232
|
+
this.selected.siblings( '.widget-tpl' ).removeClass( 'selected' );
|
|
233
|
+
this.selected.addClass( 'selected' );
|
|
234
|
+
},
|
|
235
|
+
|
|
236
|
+
// Highlights a widget on focus
|
|
237
|
+
focus: function( event ) {
|
|
238
|
+
this.select( $( event.currentTarget ) );
|
|
239
|
+
},
|
|
240
|
+
|
|
241
|
+
// Submit handler for keypress and click on widget
|
|
242
|
+
_submit: function( event ) {
|
|
243
|
+
// Only proceed with keypress if it is Enter or Spacebar
|
|
244
|
+
if ( event.type === 'keypress' && ( event.which !== 13 && event.which !== 32 ) ) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
this.submit( $( event.currentTarget ) );
|
|
249
|
+
},
|
|
250
|
+
|
|
251
|
+
// Adds a selected widget to the sidebar
|
|
252
|
+
submit: function( widgetTpl ) {
|
|
253
|
+
var widgetId, widget;
|
|
254
|
+
|
|
255
|
+
if ( ! widgetTpl ) {
|
|
256
|
+
widgetTpl = this.selected;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
if ( ! widgetTpl || ! this.currentSidebarControl ) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
this.select( widgetTpl );
|
|
264
|
+
|
|
265
|
+
widgetId = $( this.selected ).data( 'widget-id' );
|
|
266
|
+
widget = this.collection.findWhere( { id: widgetId } );
|
|
267
|
+
if ( ! widget ) {
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
this.currentSidebarControl.addWidget( widget.get( 'id_base' ) );
|
|
272
|
+
|
|
273
|
+
this.close();
|
|
274
|
+
},
|
|
275
|
+
|
|
276
|
+
// Opens the panel
|
|
277
|
+
open: function( sidebarControl ) {
|
|
278
|
+
this.currentSidebarControl = sidebarControl;
|
|
279
|
+
|
|
280
|
+
// Wide widget controls appear over the preview, and so they need to be collapsed when the panel opens
|
|
281
|
+
_( this.currentSidebarControl.getWidgetFormControls() ).each( function( control ) {
|
|
282
|
+
if ( control.params.is_wide ) {
|
|
283
|
+
control.collapseForm();
|
|
284
|
+
}
|
|
285
|
+
} );
|
|
286
|
+
|
|
287
|
+
$( 'body' ).addClass( 'adding-widget' );
|
|
288
|
+
|
|
289
|
+
this.$el.find( '.selected' ).removeClass( 'selected' );
|
|
290
|
+
|
|
291
|
+
// Reset search
|
|
292
|
+
this.collection.doSearch( '' );
|
|
293
|
+
|
|
294
|
+
this.$search.focus();
|
|
295
|
+
},
|
|
296
|
+
|
|
297
|
+
// Closes the panel
|
|
298
|
+
close: function( options ) {
|
|
299
|
+
options = options || {};
|
|
300
|
+
|
|
301
|
+
if ( options.returnFocus && this.currentSidebarControl ) {
|
|
302
|
+
this.currentSidebarControl.container.find( '.add-new-widget' ).focus();
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
this.currentSidebarControl = null;
|
|
306
|
+
this.selected = null;
|
|
307
|
+
|
|
308
|
+
$( 'body' ).removeClass( 'adding-widget' );
|
|
309
|
+
|
|
310
|
+
this.$search.val( '' );
|
|
311
|
+
},
|
|
312
|
+
|
|
313
|
+
// Add keyboard accessiblity to the panel
|
|
314
|
+
keyboardAccessible: function( event ) {
|
|
315
|
+
var isEnter = ( event.which === 13 ),
|
|
316
|
+
isEsc = ( event.which === 27 ),
|
|
317
|
+
isDown = ( event.which === 40 ),
|
|
318
|
+
isUp = ( event.which === 38 ),
|
|
319
|
+
isTab = ( event.which === 9 ),
|
|
320
|
+
isShift = ( event.shiftKey ),
|
|
321
|
+
selected = null,
|
|
322
|
+
firstVisible = this.$el.find( '> .widget-tpl:visible:first' ),
|
|
323
|
+
lastVisible = this.$el.find( '> .widget-tpl:visible:last' ),
|
|
324
|
+
isSearchFocused = $( event.target ).is( this.$search ),
|
|
325
|
+
isLastWidgetFocused = $( event.target ).is( '.widget-tpl:visible:last' );
|
|
326
|
+
|
|
327
|
+
if ( isDown || isUp ) {
|
|
328
|
+
if ( isDown ) {
|
|
329
|
+
if ( isSearchFocused ) {
|
|
330
|
+
selected = firstVisible;
|
|
331
|
+
} else if ( this.selected && this.selected.nextAll( '.widget-tpl:visible' ).length !== 0 ) {
|
|
332
|
+
selected = this.selected.nextAll( '.widget-tpl:visible:first' );
|
|
333
|
+
}
|
|
334
|
+
} else if ( isUp ) {
|
|
335
|
+
if ( isSearchFocused ) {
|
|
336
|
+
selected = lastVisible;
|
|
337
|
+
} else if ( this.selected && this.selected.prevAll( '.widget-tpl:visible' ).length !== 0 ) {
|
|
338
|
+
selected = this.selected.prevAll( '.widget-tpl:visible:first' );
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
this.select( selected );
|
|
343
|
+
|
|
344
|
+
if ( selected ) {
|
|
345
|
+
selected.focus();
|
|
346
|
+
} else {
|
|
347
|
+
this.$search.focus();
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// If enter pressed but nothing entered, don't do anything
|
|
354
|
+
if ( isEnter && ! this.$search.val() ) {
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
if ( isEnter ) {
|
|
359
|
+
this.submit();
|
|
360
|
+
} else if ( isEsc ) {
|
|
361
|
+
this.close( { returnFocus: true } );
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
if ( isTab && ( isShift && isSearchFocused || ! isShift && isLastWidgetFocused ) ) {
|
|
365
|
+
this.currentSidebarControl.container.find( '.add-new-widget' ).focus();
|
|
366
|
+
event.preventDefault();
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Handlers for the widget-synced event, organized by widget ID base.
|
|
373
|
+
* Other widgets may provide their own update handlers by adding
|
|
374
|
+
* listeners for the widget-synced event.
|
|
375
|
+
*/
|
|
376
|
+
api.Widgets.formSyncHandlers = {
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* @param {jQuery.Event} e
|
|
380
|
+
* @param {jQuery} widget
|
|
381
|
+
* @param {String} newForm
|
|
382
|
+
*/
|
|
383
|
+
rss: function( e, widget, newForm ) {
|
|
384
|
+
var oldWidgetError = widget.find( '.widget-error:first' ),
|
|
385
|
+
newWidgetError = $( '<div>' + newForm + '</div>' ).find( '.widget-error:first' );
|
|
386
|
+
|
|
387
|
+
if ( oldWidgetError.length && newWidgetError.length ) {
|
|
388
|
+
oldWidgetError.replaceWith( newWidgetError );
|
|
389
|
+
} else if ( oldWidgetError.length ) {
|
|
390
|
+
oldWidgetError.remove();
|
|
391
|
+
} else if ( newWidgetError.length ) {
|
|
392
|
+
widget.find( '.widget-content:first' ).prepend( newWidgetError );
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
};
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* wp.customize.Widgets.WidgetControl
|
|
399
|
+
*
|
|
400
|
+
* Customizer control for widgets.
|
|
401
|
+
* Note that 'widget_form' must match the WP_Widget_Form_Customize_Control::$type
|
|
402
|
+
*
|
|
403
|
+
* @constructor
|
|
404
|
+
* @augments wp.customize.Control
|
|
405
|
+
*/
|
|
406
|
+
api.Widgets.WidgetControl = api.Control.extend({
|
|
407
|
+
/**
|
|
408
|
+
* Set up the control
|
|
409
|
+
*/
|
|
410
|
+
ready: function() {
|
|
411
|
+
this._setupModel();
|
|
412
|
+
this._setupWideWidget();
|
|
413
|
+
this._setupControlToggle();
|
|
414
|
+
this._setupWidgetTitle();
|
|
415
|
+
this._setupReorderUI();
|
|
416
|
+
this._setupHighlightEffects();
|
|
417
|
+
this._setupUpdateUI();
|
|
418
|
+
this._setupRemoveUI();
|
|
419
|
+
},
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Handle changes to the setting
|
|
423
|
+
*/
|
|
424
|
+
_setupModel: function() {
|
|
425
|
+
var self = this, rememberSavedWidgetId;
|
|
426
|
+
|
|
427
|
+
api.Widgets.savedWidgetIds = api.Widgets.savedWidgetIds || [];
|
|
428
|
+
|
|
429
|
+
// Remember saved widgets so we know which to trash (move to inactive widgets sidebar)
|
|
430
|
+
rememberSavedWidgetId = function() {
|
|
431
|
+
api.Widgets.savedWidgetIds[self.params.widget_id] = true;
|
|
432
|
+
};
|
|
433
|
+
api.bind( 'ready', rememberSavedWidgetId );
|
|
434
|
+
api.bind( 'saved', rememberSavedWidgetId );
|
|
435
|
+
|
|
436
|
+
this._updateCount = 0;
|
|
437
|
+
this.isWidgetUpdating = false;
|
|
438
|
+
this.liveUpdateMode = true;
|
|
439
|
+
|
|
440
|
+
// Update widget whenever model changes
|
|
441
|
+
this.setting.bind( function( to, from ) {
|
|
442
|
+
if ( ! _( from ).isEqual( to ) && ! self.isWidgetUpdating ) {
|
|
443
|
+
self.updateWidget( { instance: to } );
|
|
444
|
+
}
|
|
445
|
+
} );
|
|
446
|
+
},
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Add special behaviors for wide widget controls
|
|
450
|
+
*/
|
|
451
|
+
_setupWideWidget: function() {
|
|
452
|
+
var self = this, $widgetInside, $widgetForm, $customizeSidebar,
|
|
453
|
+
$themeControlsContainer, positionWidget;
|
|
454
|
+
|
|
455
|
+
if ( ! this.params.is_wide ) {
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
$widgetInside = this.container.find( '.widget-inside' );
|
|
460
|
+
$widgetForm = $widgetInside.find( '> .form' );
|
|
461
|
+
$customizeSidebar = $( '.wp-full-overlay-sidebar-content:first' );
|
|
462
|
+
this.container.addClass( 'wide-widget-control' );
|
|
463
|
+
|
|
464
|
+
this.container.find( '.widget-content:first' ).css( {
|
|
465
|
+
'max-width': this.params.width,
|
|
466
|
+
'min-height': this.params.height
|
|
467
|
+
} );
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* Keep the widget-inside positioned so the top of fixed-positioned
|
|
471
|
+
* element is at the same top position as the widget-top. When the
|
|
472
|
+
* widget-top is scrolled out of view, keep the widget-top in view;
|
|
473
|
+
* likewise, don't allow the widget to drop off the bottom of the window.
|
|
474
|
+
* If a widget is too tall to fit in the window, don't let the height
|
|
475
|
+
* exceed the window height so that the contents of the widget control
|
|
476
|
+
* will become scrollable (overflow:auto).
|
|
477
|
+
*/
|
|
478
|
+
positionWidget = function() {
|
|
479
|
+
var offsetTop = self.container.offset().top,
|
|
480
|
+
windowHeight = $( window ).height(),
|
|
481
|
+
formHeight = $widgetForm.outerHeight(),
|
|
482
|
+
top;
|
|
483
|
+
$widgetInside.css( 'max-height', windowHeight );
|
|
484
|
+
top = Math.max(
|
|
485
|
+
0, // prevent top from going off screen
|
|
486
|
+
Math.min(
|
|
487
|
+
Math.max( offsetTop, 0 ), // distance widget in panel is from top of screen
|
|
488
|
+
windowHeight - formHeight // flush up against bottom of screen
|
|
489
|
+
)
|
|
490
|
+
);
|
|
491
|
+
$widgetInside.css( 'top', top );
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
$themeControlsContainer = $( '#customize-theme-controls' );
|
|
495
|
+
this.container.on( 'expand', function() {
|
|
496
|
+
positionWidget();
|
|
497
|
+
$customizeSidebar.on( 'scroll', positionWidget );
|
|
498
|
+
$( window ).on( 'resize', positionWidget );
|
|
499
|
+
$themeControlsContainer.on( 'expanded collapsed', positionWidget );
|
|
500
|
+
} );
|
|
501
|
+
this.container.on( 'collapsed', function() {
|
|
502
|
+
$customizeSidebar.off( 'scroll', positionWidget );
|
|
503
|
+
$( window ).off( 'resize', positionWidget );
|
|
504
|
+
$themeControlsContainer.off( 'expanded collapsed', positionWidget );
|
|
505
|
+
} );
|
|
506
|
+
|
|
507
|
+
// Reposition whenever a sidebar's widgets are changed
|
|
508
|
+
api.each( function( setting ) {
|
|
509
|
+
if ( 0 === setting.id.indexOf( 'sidebars_widgets[' ) ) {
|
|
510
|
+
setting.bind( function() {
|
|
511
|
+
if ( self.container.hasClass( 'expanded' ) ) {
|
|
512
|
+
positionWidget();
|
|
513
|
+
}
|
|
514
|
+
} );
|
|
515
|
+
}
|
|
516
|
+
} );
|
|
517
|
+
},
|
|
518
|
+
|
|
519
|
+
/**
|
|
520
|
+
* Show/hide the control when clicking on the form title, when clicking
|
|
521
|
+
* the close button
|
|
522
|
+
*/
|
|
523
|
+
_setupControlToggle: function() {
|
|
524
|
+
var self = this, $closeBtn;
|
|
525
|
+
|
|
526
|
+
this.container.find( '.widget-top' ).on( 'click', function( e ) {
|
|
527
|
+
e.preventDefault();
|
|
528
|
+
var sidebarWidgetsControl = self.getSidebarWidgetsControl();
|
|
529
|
+
if ( sidebarWidgetsControl.isReordering ) {
|
|
530
|
+
return;
|
|
531
|
+
}
|
|
532
|
+
self.toggleForm();
|
|
533
|
+
} );
|
|
534
|
+
|
|
535
|
+
$closeBtn = this.container.find( '.widget-control-close' );
|
|
536
|
+
$closeBtn.on( 'click', function( e ) {
|
|
537
|
+
e.preventDefault();
|
|
538
|
+
self.collapseForm();
|
|
539
|
+
self.container.find( '.widget-top .widget-action:first' ).focus(); // keyboard accessibility
|
|
540
|
+
} );
|
|
541
|
+
},
|
|
542
|
+
|
|
543
|
+
/**
|
|
544
|
+
* Update the title of the form if a title field is entered
|
|
545
|
+
*/
|
|
546
|
+
_setupWidgetTitle: function() {
|
|
547
|
+
var self = this, updateTitle;
|
|
548
|
+
|
|
549
|
+
updateTitle = function() {
|
|
550
|
+
var title = self.setting().title,
|
|
551
|
+
inWidgetTitle = self.container.find( '.in-widget-title' );
|
|
552
|
+
|
|
553
|
+
if ( title ) {
|
|
554
|
+
inWidgetTitle.text( ': ' + title );
|
|
555
|
+
} else {
|
|
556
|
+
inWidgetTitle.text( '' );
|
|
557
|
+
}
|
|
558
|
+
};
|
|
559
|
+
this.setting.bind( updateTitle );
|
|
560
|
+
updateTitle();
|
|
561
|
+
},
|
|
562
|
+
|
|
563
|
+
/**
|
|
564
|
+
* Set up the widget-reorder-nav
|
|
565
|
+
*/
|
|
566
|
+
_setupReorderUI: function() {
|
|
567
|
+
var self = this, selectSidebarItem, $moveWidgetArea,
|
|
568
|
+
$reorderNav, updateAvailableSidebars;
|
|
569
|
+
|
|
570
|
+
/**
|
|
571
|
+
* select the provided sidebar list item in the move widget area
|
|
572
|
+
*
|
|
573
|
+
* @param {jQuery} li
|
|
574
|
+
*/
|
|
575
|
+
selectSidebarItem = function( li ) {
|
|
576
|
+
li.siblings( '.selected' ).removeClass( 'selected' );
|
|
577
|
+
li.addClass( 'selected' );
|
|
578
|
+
var isSelfSidebar = ( li.data( 'id' ) === self.params.sidebar_id );
|
|
579
|
+
self.container.find( '.move-widget-btn' ).prop( 'disabled', isSelfSidebar );
|
|
580
|
+
};
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Add the widget reordering elements to the widget control
|
|
584
|
+
*/
|
|
585
|
+
this.container.find( '.widget-title-action' ).after( $( api.Widgets.data.tpl.widgetReorderNav ) );
|
|
586
|
+
$moveWidgetArea = $(
|
|
587
|
+
_.template( api.Widgets.data.tpl.moveWidgetArea, {
|
|
588
|
+
sidebars: _( api.Widgets.registeredSidebars.toArray() ).pluck( 'attributes' )
|
|
589
|
+
} )
|
|
590
|
+
);
|
|
591
|
+
this.container.find( '.widget-top' ).after( $moveWidgetArea );
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* Update available sidebars when their rendered state changes
|
|
595
|
+
*/
|
|
596
|
+
updateAvailableSidebars = function() {
|
|
597
|
+
var $sidebarItems = $moveWidgetArea.find( 'li' ), selfSidebarItem;
|
|
598
|
+
|
|
599
|
+
selfSidebarItem = $sidebarItems.filter( function(){
|
|
600
|
+
return $( this ).data( 'id' ) === self.params.sidebar_id;
|
|
601
|
+
} );
|
|
602
|
+
|
|
603
|
+
$sidebarItems.each( function() {
|
|
604
|
+
var li = $( this ),
|
|
605
|
+
sidebarId,
|
|
606
|
+
sidebar;
|
|
607
|
+
|
|
608
|
+
sidebarId = li.data( 'id' );
|
|
609
|
+
sidebar = api.Widgets.registeredSidebars.get( sidebarId );
|
|
610
|
+
|
|
611
|
+
li.toggle( sidebar.get( 'is_rendered' ) );
|
|
612
|
+
|
|
613
|
+
if ( li.hasClass( 'selected' ) && ! sidebar.get( 'is_rendered' ) ) {
|
|
614
|
+
selectSidebarItem( selfSidebarItem );
|
|
615
|
+
}
|
|
616
|
+
} );
|
|
617
|
+
};
|
|
618
|
+
|
|
619
|
+
updateAvailableSidebars();
|
|
620
|
+
api.Widgets.registeredSidebars.on( 'change:is_rendered', updateAvailableSidebars );
|
|
621
|
+
|
|
622
|
+
/**
|
|
623
|
+
* Handle clicks for up/down/move on the reorder nav
|
|
624
|
+
*/
|
|
625
|
+
$reorderNav = this.container.find( '.widget-reorder-nav' );
|
|
626
|
+
$reorderNav.find( '.move-widget, .move-widget-down, .move-widget-up' ).each( function() {
|
|
627
|
+
$( this ).prepend( self.container.find( '.widget-title' ).text() + ': ' );
|
|
628
|
+
} ).on( 'click keypress', function( event ) {
|
|
629
|
+
if ( event.type === 'keypress' && ( event.which !== 13 && event.which !== 32 ) ) {
|
|
630
|
+
return;
|
|
631
|
+
}
|
|
632
|
+
$( this ).focus();
|
|
633
|
+
|
|
634
|
+
if ( $( this ).is( '.move-widget' ) ) {
|
|
635
|
+
self.toggleWidgetMoveArea();
|
|
636
|
+
} else {
|
|
637
|
+
var isMoveDown = $( this ).is( '.move-widget-down' ),
|
|
638
|
+
isMoveUp = $( this ).is( '.move-widget-up' ),
|
|
639
|
+
i = self.getWidgetSidebarPosition();
|
|
640
|
+
|
|
641
|
+
if ( ( isMoveUp && i === 0 ) || ( isMoveDown && i === self.getSidebarWidgetsControl().setting().length - 1 ) ) {
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
if ( isMoveUp ) {
|
|
646
|
+
self.moveUp();
|
|
647
|
+
} else {
|
|
648
|
+
self.moveDown();
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
$( this ).focus(); // re-focus after the container was moved
|
|
652
|
+
}
|
|
653
|
+
} );
|
|
654
|
+
|
|
655
|
+
/**
|
|
656
|
+
* Handle selecting a sidebar to move to
|
|
657
|
+
*/
|
|
658
|
+
this.container.find( '.widget-area-select' ).on( 'click keypress', 'li', function( e ) {
|
|
659
|
+
if ( event.type === 'keypress' && ( event.which !== 13 && event.which !== 32 ) ) {
|
|
660
|
+
return;
|
|
661
|
+
}
|
|
662
|
+
e.preventDefault();
|
|
663
|
+
selectSidebarItem( $( this ) );
|
|
664
|
+
} );
|
|
665
|
+
|
|
666
|
+
/**
|
|
667
|
+
* Move widget to another sidebar
|
|
668
|
+
*/
|
|
669
|
+
this.container.find( '.move-widget-btn' ).click( function() {
|
|
670
|
+
self.getSidebarWidgetsControl().toggleReordering( false );
|
|
671
|
+
|
|
672
|
+
var oldSidebarId = self.params.sidebar_id,
|
|
673
|
+
newSidebarId = self.container.find( '.widget-area-select li.selected' ).data( 'id' ),
|
|
674
|
+
oldSidebarWidgetsSetting, newSidebarWidgetsSetting,
|
|
675
|
+
oldSidebarWidgetIds, newSidebarWidgetIds, i;
|
|
676
|
+
|
|
677
|
+
oldSidebarWidgetsSetting = api( 'sidebars_widgets[' + oldSidebarId + ']' );
|
|
678
|
+
newSidebarWidgetsSetting = api( 'sidebars_widgets[' + newSidebarId + ']' );
|
|
679
|
+
oldSidebarWidgetIds = Array.prototype.slice.call( oldSidebarWidgetsSetting() );
|
|
680
|
+
newSidebarWidgetIds = Array.prototype.slice.call( newSidebarWidgetsSetting() );
|
|
681
|
+
|
|
682
|
+
i = self.getWidgetSidebarPosition();
|
|
683
|
+
oldSidebarWidgetIds.splice( i, 1 );
|
|
684
|
+
newSidebarWidgetIds.push( self.params.widget_id );
|
|
685
|
+
|
|
686
|
+
oldSidebarWidgetsSetting( oldSidebarWidgetIds );
|
|
687
|
+
newSidebarWidgetsSetting( newSidebarWidgetIds );
|
|
688
|
+
|
|
689
|
+
self.focus();
|
|
690
|
+
} );
|
|
691
|
+
},
|
|
692
|
+
|
|
693
|
+
/**
|
|
694
|
+
* Highlight widgets in preview when interacted with in the customizer
|
|
695
|
+
*/
|
|
696
|
+
_setupHighlightEffects: function() {
|
|
697
|
+
var self = this;
|
|
698
|
+
|
|
699
|
+
// Highlight whenever hovering or clicking over the form
|
|
700
|
+
this.container.on( 'mouseenter click', function() {
|
|
701
|
+
self.setting.previewer.send( 'highlight-widget', self.params.widget_id );
|
|
702
|
+
} );
|
|
703
|
+
|
|
704
|
+
// Highlight when the setting is updated
|
|
705
|
+
this.setting.bind( function() {
|
|
706
|
+
self.setting.previewer.send( 'highlight-widget', self.params.widget_id );
|
|
707
|
+
} );
|
|
708
|
+
},
|
|
709
|
+
|
|
710
|
+
/**
|
|
711
|
+
* Set up event handlers for widget updating
|
|
712
|
+
*/
|
|
713
|
+
_setupUpdateUI: function() {
|
|
714
|
+
var self = this, $widgetRoot, $widgetContent,
|
|
715
|
+
$saveBtn, updateWidgetDebounced, formSyncHandler;
|
|
716
|
+
|
|
717
|
+
$widgetRoot = this.container.find( '.widget:first' );
|
|
718
|
+
$widgetContent = $widgetRoot.find( '.widget-content:first' );
|
|
719
|
+
|
|
720
|
+
// Configure update button
|
|
721
|
+
$saveBtn = this.container.find( '.widget-control-save' );
|
|
722
|
+
$saveBtn.val( l10n.saveBtnLabel );
|
|
723
|
+
$saveBtn.attr( 'title', l10n.saveBtnTooltip );
|
|
724
|
+
$saveBtn.removeClass( 'button-primary' ).addClass( 'button-secondary' );
|
|
725
|
+
$saveBtn.on( 'click', function( e ) {
|
|
726
|
+
e.preventDefault();
|
|
727
|
+
self.updateWidget( { disable_form: true } ); // @todo disable_form is unused?
|
|
728
|
+
} );
|
|
729
|
+
|
|
730
|
+
updateWidgetDebounced = _.debounce( function() {
|
|
731
|
+
self.updateWidget();
|
|
732
|
+
}, 250 );
|
|
733
|
+
|
|
734
|
+
// Trigger widget form update when hitting Enter within an input
|
|
735
|
+
$widgetContent.on( 'keydown', 'input', function( e ) {
|
|
736
|
+
if ( 13 === e.which ) { // Enter
|
|
737
|
+
e.preventDefault();
|
|
738
|
+
self.updateWidget( { ignoreActiveElement: true } );
|
|
739
|
+
}
|
|
740
|
+
} );
|
|
741
|
+
|
|
742
|
+
// Handle widgets that support live previews
|
|
743
|
+
$widgetContent.on( 'change input propertychange', ':input', function( e ) {
|
|
744
|
+
if ( self.liveUpdateMode ) {
|
|
745
|
+
if ( e.type === 'change' ) {
|
|
746
|
+
self.updateWidget();
|
|
747
|
+
} else if ( this.checkValidity && this.checkValidity() ) {
|
|
748
|
+
updateWidgetDebounced();
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
} );
|
|
752
|
+
|
|
753
|
+
// Remove loading indicators when the setting is saved and the preview updates
|
|
754
|
+
this.setting.previewer.channel.bind( 'synced', function() {
|
|
755
|
+
self.container.removeClass( 'previewer-loading' );
|
|
756
|
+
} );
|
|
757
|
+
|
|
758
|
+
api.previewer.bind( 'widget-updated', function( updatedWidgetId ) {
|
|
759
|
+
if ( updatedWidgetId === self.params.widget_id ) {
|
|
760
|
+
self.container.removeClass( 'previewer-loading' );
|
|
761
|
+
}
|
|
762
|
+
} );
|
|
763
|
+
|
|
764
|
+
formSyncHandler = api.Widgets.formSyncHandlers[ this.params.widget_id_base ];
|
|
765
|
+
if ( formSyncHandler ) {
|
|
766
|
+
$( document ).on( 'widget-synced', function( e, widget ) {
|
|
767
|
+
if ( $widgetRoot.is( widget ) ) {
|
|
768
|
+
formSyncHandler.apply( document, arguments );
|
|
769
|
+
}
|
|
770
|
+
} );
|
|
771
|
+
}
|
|
772
|
+
},
|
|
773
|
+
|
|
774
|
+
/**
|
|
775
|
+
* Update widget control to indicate whether it is currently rendered.
|
|
776
|
+
*
|
|
777
|
+
* Overrides api.Control.toggle()
|
|
778
|
+
*
|
|
779
|
+
* @param {Boolean} active
|
|
780
|
+
*/
|
|
781
|
+
toggle: function ( active ) {
|
|
782
|
+
this.container.toggleClass( 'widget-rendered', active );
|
|
783
|
+
},
|
|
784
|
+
|
|
785
|
+
/**
|
|
786
|
+
* Set up event handlers for widget removal
|
|
787
|
+
*/
|
|
788
|
+
_setupRemoveUI: function() {
|
|
789
|
+
var self = this, $removeBtn, replaceDeleteWithRemove;
|
|
790
|
+
|
|
791
|
+
// Configure remove button
|
|
792
|
+
$removeBtn = this.container.find( 'a.widget-control-remove' );
|
|
793
|
+
$removeBtn.on( 'click', function( e ) {
|
|
794
|
+
e.preventDefault();
|
|
795
|
+
|
|
796
|
+
// Find an adjacent element to add focus to when this widget goes away
|
|
797
|
+
var $adjacentFocusTarget;
|
|
798
|
+
if ( self.container.next().is( '.customize-control-widget_form' ) ) {
|
|
799
|
+
$adjacentFocusTarget = self.container.next().find( '.widget-action:first' );
|
|
800
|
+
} else if ( self.container.prev().is( '.customize-control-widget_form' ) ) {
|
|
801
|
+
$adjacentFocusTarget = self.container.prev().find( '.widget-action:first' );
|
|
802
|
+
} else {
|
|
803
|
+
$adjacentFocusTarget = self.container.next( '.customize-control-sidebar_widgets' ).find( '.add-new-widget:first' );
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
self.container.slideUp( function() {
|
|
807
|
+
var sidebarsWidgetsControl = api.Widgets.getSidebarWidgetControlContainingWidget( self.params.widget_id ),
|
|
808
|
+
sidebarWidgetIds, i;
|
|
809
|
+
|
|
810
|
+
if ( ! sidebarsWidgetsControl ) {
|
|
811
|
+
return;
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
sidebarWidgetIds = sidebarsWidgetsControl.setting().slice();
|
|
815
|
+
i = _.indexOf( sidebarWidgetIds, self.params.widget_id );
|
|
816
|
+
if ( -1 === i ) {
|
|
817
|
+
return;
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
sidebarWidgetIds.splice( i, 1 );
|
|
821
|
+
sidebarsWidgetsControl.setting( sidebarWidgetIds );
|
|
822
|
+
|
|
823
|
+
$adjacentFocusTarget.focus(); // keyboard accessibility
|
|
824
|
+
} );
|
|
825
|
+
} );
|
|
826
|
+
|
|
827
|
+
replaceDeleteWithRemove = function() {
|
|
828
|
+
$removeBtn.text( l10n.removeBtnLabel ); // wp_widget_control() outputs the link as "Delete"
|
|
829
|
+
$removeBtn.attr( 'title', l10n.removeBtnTooltip );
|
|
830
|
+
};
|
|
831
|
+
|
|
832
|
+
if ( this.params.is_new ) {
|
|
833
|
+
api.bind( 'saved', replaceDeleteWithRemove );
|
|
834
|
+
} else {
|
|
835
|
+
replaceDeleteWithRemove();
|
|
836
|
+
}
|
|
837
|
+
},
|
|
838
|
+
|
|
839
|
+
/**
|
|
840
|
+
* Find all inputs in a widget container that should be considered when
|
|
841
|
+
* comparing the loaded form with the sanitized form, whose fields will
|
|
842
|
+
* be aligned to copy the sanitized over. The elements returned by this
|
|
843
|
+
* are passed into this._getInputsSignature(), and they are iterated
|
|
844
|
+
* over when copying sanitized values over to the the form loaded.
|
|
845
|
+
*
|
|
846
|
+
* @param {jQuery} container element in which to look for inputs
|
|
847
|
+
* @returns {jQuery} inputs
|
|
848
|
+
* @private
|
|
849
|
+
*/
|
|
850
|
+
_getInputs: function( container ) {
|
|
851
|
+
return $( container ).find( ':input[name]' );
|
|
852
|
+
},
|
|
853
|
+
|
|
854
|
+
/**
|
|
855
|
+
* Iterate over supplied inputs and create a signature string for all of them together.
|
|
856
|
+
* This string can be used to compare whether or not the form has all of the same fields.
|
|
857
|
+
*
|
|
858
|
+
* @param {jQuery} inputs
|
|
859
|
+
* @returns {string}
|
|
860
|
+
* @private
|
|
861
|
+
*/
|
|
862
|
+
_getInputsSignature: function( inputs ) {
|
|
863
|
+
var inputsSignatures = _( inputs ).map( function( input ) {
|
|
864
|
+
var $input = $( input ), signatureParts;
|
|
865
|
+
|
|
866
|
+
if ( $input.is( ':checkbox, :radio' ) ) {
|
|
867
|
+
signatureParts = [ $input.attr( 'id' ), $input.attr( 'name' ), $input.prop( 'value' ) ];
|
|
868
|
+
} else {
|
|
869
|
+
signatureParts = [ $input.attr( 'id' ), $input.attr( 'name' ) ];
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
return signatureParts.join( ',' );
|
|
873
|
+
} );
|
|
874
|
+
|
|
875
|
+
return inputsSignatures.join( ';' );
|
|
876
|
+
},
|
|
877
|
+
|
|
878
|
+
/**
|
|
879
|
+
* Get the property that represents the state of an input.
|
|
880
|
+
*
|
|
881
|
+
* @param {jQuery|DOMElement} input
|
|
882
|
+
* @returns {string}
|
|
883
|
+
* @private
|
|
884
|
+
*/
|
|
885
|
+
_getInputStatePropertyName: function( input ) {
|
|
886
|
+
var $input = $( input );
|
|
887
|
+
|
|
888
|
+
if ( $input.is( ':radio, :checkbox' ) ) {
|
|
889
|
+
return 'checked';
|
|
890
|
+
} else {
|
|
891
|
+
return 'value';
|
|
892
|
+
}
|
|
893
|
+
},
|
|
894
|
+
|
|
895
|
+
/***********************************************************************
|
|
896
|
+
* Begin public API methods
|
|
897
|
+
**********************************************************************/
|
|
898
|
+
|
|
899
|
+
/**
|
|
900
|
+
* @return {wp.customize.controlConstructor.sidebar_widgets[]}
|
|
901
|
+
*/
|
|
902
|
+
getSidebarWidgetsControl: function() {
|
|
903
|
+
var settingId, sidebarWidgetsControl;
|
|
904
|
+
|
|
905
|
+
settingId = 'sidebars_widgets[' + this.params.sidebar_id + ']';
|
|
906
|
+
sidebarWidgetsControl = api.control( settingId );
|
|
907
|
+
|
|
908
|
+
if ( ! sidebarWidgetsControl ) {
|
|
909
|
+
return;
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
return sidebarWidgetsControl;
|
|
913
|
+
},
|
|
914
|
+
|
|
915
|
+
/**
|
|
916
|
+
* Submit the widget form via Ajax and get back the updated instance,
|
|
917
|
+
* along with the new widget control form to render.
|
|
918
|
+
*
|
|
919
|
+
* @param {object} [args]
|
|
920
|
+
* @param {Object|null} [args.instance=null] When the model changes, the instance is sent here; otherwise, the inputs from the form are used
|
|
921
|
+
* @param {Function|null} [args.complete=null] Function which is called when the request finishes. Context is bound to the control. First argument is any error. Following arguments are for success.
|
|
922
|
+
* @param {Boolean} [args.ignoreActiveElement=false] Whether or not updating a field will be deferred if focus is still on the element.
|
|
923
|
+
*/
|
|
924
|
+
updateWidget: function( args ) {
|
|
925
|
+
var self = this, instanceOverride, completeCallback, $widgetRoot, $widgetContent,
|
|
926
|
+
updateNumber, params, data, $inputs, processing, jqxhr, isChanged;
|
|
927
|
+
|
|
928
|
+
args = $.extend( {
|
|
929
|
+
instance: null,
|
|
930
|
+
complete: null,
|
|
931
|
+
ignoreActiveElement: false
|
|
932
|
+
}, args );
|
|
933
|
+
|
|
934
|
+
instanceOverride = args.instance;
|
|
935
|
+
completeCallback = args.complete;
|
|
936
|
+
|
|
937
|
+
this._updateCount += 1;
|
|
938
|
+
updateNumber = this._updateCount;
|
|
939
|
+
|
|
940
|
+
$widgetRoot = this.container.find( '.widget:first' );
|
|
941
|
+
$widgetContent = $widgetRoot.find( '.widget-content:first' );
|
|
942
|
+
|
|
943
|
+
// Remove a previous error message
|
|
944
|
+
$widgetContent.find( '.widget-error' ).remove();
|
|
945
|
+
|
|
946
|
+
this.container.addClass( 'widget-form-loading' );
|
|
947
|
+
this.container.addClass( 'previewer-loading' );
|
|
948
|
+
processing = api.state( 'processing' );
|
|
949
|
+
processing( processing() + 1 );
|
|
950
|
+
|
|
951
|
+
if ( ! this.liveUpdateMode ) {
|
|
952
|
+
this.container.addClass( 'widget-form-disabled' );
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
params = {};
|
|
956
|
+
params.action = 'update-widget';
|
|
957
|
+
params.wp_customize = 'on';
|
|
958
|
+
params.nonce = api.Widgets.data.nonce;
|
|
959
|
+
params.theme = api.settings.theme.stylesheet;
|
|
960
|
+
|
|
961
|
+
data = $.param( params );
|
|
962
|
+
$inputs = this._getInputs( $widgetContent );
|
|
963
|
+
|
|
964
|
+
// Store the value we're submitting in data so that when the response comes back,
|
|
965
|
+
// we know if it got sanitized; if there is no difference in the sanitized value,
|
|
966
|
+
// then we do not need to touch the UI and mess up the user's ongoing editing.
|
|
967
|
+
$inputs.each( function() {
|
|
968
|
+
var input = $( this ),
|
|
969
|
+
property = self._getInputStatePropertyName( this );
|
|
970
|
+
input.data( 'state' + updateNumber, input.prop( property ) );
|
|
971
|
+
} );
|
|
972
|
+
|
|
973
|
+
if ( instanceOverride ) {
|
|
974
|
+
data += '&' + $.param( { 'sanitized_widget_setting': JSON.stringify( instanceOverride ) } );
|
|
975
|
+
} else {
|
|
976
|
+
data += '&' + $inputs.serialize();
|
|
977
|
+
}
|
|
978
|
+
data += '&' + $widgetContent.find( '~ :input' ).serialize();
|
|
979
|
+
|
|
980
|
+
jqxhr = $.post( wp.ajax.settings.url, data );
|
|
981
|
+
|
|
982
|
+
jqxhr.done( function( r ) {
|
|
983
|
+
var message, sanitizedForm, $sanitizedInputs, hasSameInputsInResponse,
|
|
984
|
+
isLiveUpdateAborted = false;
|
|
985
|
+
|
|
986
|
+
// Check if the user is logged out.
|
|
987
|
+
if ( '0' === r ) {
|
|
988
|
+
api.previewer.preview.iframe.hide();
|
|
989
|
+
api.previewer.login().done( function() {
|
|
990
|
+
self.updateWidget( args );
|
|
991
|
+
api.previewer.preview.iframe.show();
|
|
992
|
+
} );
|
|
993
|
+
return;
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
// Check for cheaters.
|
|
997
|
+
if ( '-1' === r ) {
|
|
998
|
+
api.previewer.cheatin();
|
|
999
|
+
return;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
if ( r.success ) {
|
|
1003
|
+
sanitizedForm = $( '<div>' + r.data.form + '</div>' );
|
|
1004
|
+
$sanitizedInputs = self._getInputs( sanitizedForm );
|
|
1005
|
+
hasSameInputsInResponse = self._getInputsSignature( $inputs ) === self._getInputsSignature( $sanitizedInputs );
|
|
1006
|
+
|
|
1007
|
+
// Restore live update mode if sanitized fields are now aligned with the existing fields
|
|
1008
|
+
if ( hasSameInputsInResponse && ! self.liveUpdateMode ) {
|
|
1009
|
+
self.liveUpdateMode = true;
|
|
1010
|
+
self.container.removeClass( 'widget-form-disabled' );
|
|
1011
|
+
self.container.find( 'input[name="savewidget"]' ).hide();
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
// Sync sanitized field states to existing fields if they are aligned
|
|
1015
|
+
if ( hasSameInputsInResponse && self.liveUpdateMode ) {
|
|
1016
|
+
$inputs.each( function( i ) {
|
|
1017
|
+
var $input = $( this ),
|
|
1018
|
+
$sanitizedInput = $( $sanitizedInputs[i] ),
|
|
1019
|
+
property = self._getInputStatePropertyName( this ),
|
|
1020
|
+
submittedState, sanitizedState, canUpdateState;
|
|
1021
|
+
|
|
1022
|
+
submittedState = $input.data( 'state' + updateNumber );
|
|
1023
|
+
sanitizedState = $sanitizedInput.prop( property );
|
|
1024
|
+
$input.data( 'sanitized', sanitizedState );
|
|
1025
|
+
|
|
1026
|
+
canUpdateState = ( submittedState !== sanitizedState && ( args.ignoreActiveElement || ! $input.is( document.activeElement ) ) );
|
|
1027
|
+
if ( canUpdateState ) {
|
|
1028
|
+
$input.prop( property, sanitizedState );
|
|
1029
|
+
}
|
|
1030
|
+
} );
|
|
1031
|
+
|
|
1032
|
+
$( document ).trigger( 'widget-synced', [ $widgetRoot, r.data.form ] );
|
|
1033
|
+
|
|
1034
|
+
// Otherwise, if sanitized fields are not aligned with existing fields, disable live update mode if enabled
|
|
1035
|
+
} else if ( self.liveUpdateMode ) {
|
|
1036
|
+
self.liveUpdateMode = false;
|
|
1037
|
+
self.container.find( 'input[name="savewidget"]' ).show();
|
|
1038
|
+
isLiveUpdateAborted = true;
|
|
1039
|
+
|
|
1040
|
+
// Otherwise, replace existing form with the sanitized form
|
|
1041
|
+
} else {
|
|
1042
|
+
$widgetContent.html( r.data.form );
|
|
1043
|
+
|
|
1044
|
+
self.container.removeClass( 'widget-form-disabled' );
|
|
1045
|
+
|
|
1046
|
+
$( document ).trigger( 'widget-updated', [ $widgetRoot ] );
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
/**
|
|
1050
|
+
* If the old instance is identical to the new one, there is nothing new
|
|
1051
|
+
* needing to be rendered, and so we can preempt the event for the
|
|
1052
|
+
* preview finishing loading.
|
|
1053
|
+
*/
|
|
1054
|
+
isChanged = ! isLiveUpdateAborted && ! _( self.setting() ).isEqual( r.data.instance );
|
|
1055
|
+
if ( isChanged ) {
|
|
1056
|
+
self.isWidgetUpdating = true; // suppress triggering another updateWidget
|
|
1057
|
+
self.setting( r.data.instance );
|
|
1058
|
+
self.isWidgetUpdating = false;
|
|
1059
|
+
} else {
|
|
1060
|
+
// no change was made, so stop the spinner now instead of when the preview would updates
|
|
1061
|
+
self.container.removeClass( 'previewer-loading' );
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
if ( completeCallback ) {
|
|
1065
|
+
completeCallback.call( self, null, { noChange: ! isChanged, ajaxFinished: true } );
|
|
1066
|
+
}
|
|
1067
|
+
} else {
|
|
1068
|
+
// General error message
|
|
1069
|
+
message = l10n.error;
|
|
1070
|
+
|
|
1071
|
+
if ( r.data && r.data.message ) {
|
|
1072
|
+
message = r.data.message;
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
if ( completeCallback ) {
|
|
1076
|
+
completeCallback.call( self, message );
|
|
1077
|
+
} else {
|
|
1078
|
+
$widgetContent.prepend( '<p class="widget-error"><strong>' + message + '</strong></p>' );
|
|
1079
|
+
}
|
|
1080
|
+
}
|
|
1081
|
+
} );
|
|
1082
|
+
|
|
1083
|
+
jqxhr.fail( function( jqXHR, textStatus ) {
|
|
1084
|
+
if ( completeCallback ) {
|
|
1085
|
+
completeCallback.call( self, textStatus );
|
|
1086
|
+
}
|
|
1087
|
+
} );
|
|
1088
|
+
|
|
1089
|
+
jqxhr.always( function() {
|
|
1090
|
+
self.container.removeClass( 'widget-form-loading' );
|
|
1091
|
+
|
|
1092
|
+
$inputs.each( function() {
|
|
1093
|
+
$( this ).removeData( 'state' + updateNumber );
|
|
1094
|
+
} );
|
|
1095
|
+
|
|
1096
|
+
processing( processing() - 1 );
|
|
1097
|
+
} );
|
|
1098
|
+
},
|
|
1099
|
+
|
|
1100
|
+
/**
|
|
1101
|
+
* Expand the accordion section containing a control
|
|
1102
|
+
*/
|
|
1103
|
+
expandControlSection: function() {
|
|
1104
|
+
var $section = this.container.closest( '.accordion-section' );
|
|
1105
|
+
|
|
1106
|
+
if ( ! $section.hasClass( 'open' ) ) {
|
|
1107
|
+
$section.find( '.accordion-section-title:first' ).trigger( 'click' );
|
|
1108
|
+
}
|
|
1109
|
+
},
|
|
1110
|
+
|
|
1111
|
+
/**
|
|
1112
|
+
* Expand the widget form control
|
|
1113
|
+
*/
|
|
1114
|
+
expandForm: function() {
|
|
1115
|
+
this.toggleForm( true );
|
|
1116
|
+
},
|
|
1117
|
+
|
|
1118
|
+
/**
|
|
1119
|
+
* Collapse the widget form control
|
|
1120
|
+
*/
|
|
1121
|
+
collapseForm: function() {
|
|
1122
|
+
this.toggleForm( false );
|
|
1123
|
+
},
|
|
1124
|
+
|
|
1125
|
+
/**
|
|
1126
|
+
* Expand or collapse the widget control
|
|
1127
|
+
*
|
|
1128
|
+
* @param {boolean|undefined} [showOrHide] If not supplied, will be inverse of current visibility
|
|
1129
|
+
*/
|
|
1130
|
+
toggleForm: function( showOrHide ) {
|
|
1131
|
+
var self = this, $widget, $inside, complete;
|
|
1132
|
+
|
|
1133
|
+
$widget = this.container.find( 'div.widget:first' );
|
|
1134
|
+
$inside = $widget.find( '.widget-inside:first' );
|
|
1135
|
+
if ( typeof showOrHide === 'undefined' ) {
|
|
1136
|
+
showOrHide = ! $inside.is( ':visible' );
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
// Already expanded or collapsed, so noop
|
|
1140
|
+
if ( $inside.is( ':visible' ) === showOrHide ) {
|
|
1141
|
+
return;
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
if ( showOrHide ) {
|
|
1145
|
+
// Close all other widget controls before expanding this one
|
|
1146
|
+
api.control.each( function( otherControl ) {
|
|
1147
|
+
if ( self.params.type === otherControl.params.type && self !== otherControl ) {
|
|
1148
|
+
otherControl.collapseForm();
|
|
1149
|
+
}
|
|
1150
|
+
} );
|
|
1151
|
+
|
|
1152
|
+
complete = function() {
|
|
1153
|
+
self.container.removeClass( 'expanding' );
|
|
1154
|
+
self.container.addClass( 'expanded' );
|
|
1155
|
+
self.container.trigger( 'expanded' );
|
|
1156
|
+
};
|
|
1157
|
+
|
|
1158
|
+
if ( self.params.is_wide ) {
|
|
1159
|
+
$inside.fadeIn( 'fast', complete );
|
|
1160
|
+
} else {
|
|
1161
|
+
$inside.slideDown( 'fast', complete );
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
self.container.trigger( 'expand' );
|
|
1165
|
+
self.container.addClass( 'expanding' );
|
|
1166
|
+
} else {
|
|
1167
|
+
complete = function() {
|
|
1168
|
+
self.container.removeClass( 'collapsing' );
|
|
1169
|
+
self.container.removeClass( 'expanded' );
|
|
1170
|
+
self.container.trigger( 'collapsed' );
|
|
1171
|
+
};
|
|
1172
|
+
|
|
1173
|
+
self.container.trigger( 'collapse' );
|
|
1174
|
+
self.container.addClass( 'collapsing' );
|
|
1175
|
+
|
|
1176
|
+
if ( self.params.is_wide ) {
|
|
1177
|
+
$inside.fadeOut( 'fast', complete );
|
|
1178
|
+
} else {
|
|
1179
|
+
$inside.slideUp( 'fast', function() {
|
|
1180
|
+
$widget.css( { width:'', margin:'' } );
|
|
1181
|
+
complete();
|
|
1182
|
+
} );
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
},
|
|
1186
|
+
|
|
1187
|
+
/**
|
|
1188
|
+
* Expand the containing sidebar section, expand the form, and focus on
|
|
1189
|
+
* the first input in the control
|
|
1190
|
+
*/
|
|
1191
|
+
focus: function() {
|
|
1192
|
+
this.expandControlSection();
|
|
1193
|
+
this.expandForm();
|
|
1194
|
+
this.container.find( '.widget-content :focusable:first' ).focus();
|
|
1195
|
+
},
|
|
1196
|
+
|
|
1197
|
+
/**
|
|
1198
|
+
* Get the position (index) of the widget in the containing sidebar
|
|
1199
|
+
*
|
|
1200
|
+
* @returns {Number}
|
|
1201
|
+
*/
|
|
1202
|
+
getWidgetSidebarPosition: function() {
|
|
1203
|
+
var sidebarWidgetIds, position;
|
|
1204
|
+
|
|
1205
|
+
sidebarWidgetIds = this.getSidebarWidgetsControl().setting();
|
|
1206
|
+
position = _.indexOf( sidebarWidgetIds, this.params.widget_id );
|
|
1207
|
+
|
|
1208
|
+
if ( position === -1 ) {
|
|
1209
|
+
return;
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
return position;
|
|
1213
|
+
},
|
|
1214
|
+
|
|
1215
|
+
/**
|
|
1216
|
+
* Move widget up one in the sidebar
|
|
1217
|
+
*/
|
|
1218
|
+
moveUp: function() {
|
|
1219
|
+
this._moveWidgetByOne( -1 );
|
|
1220
|
+
},
|
|
1221
|
+
|
|
1222
|
+
/**
|
|
1223
|
+
* Move widget up one in the sidebar
|
|
1224
|
+
*/
|
|
1225
|
+
moveDown: function() {
|
|
1226
|
+
this._moveWidgetByOne( 1 );
|
|
1227
|
+
},
|
|
1228
|
+
|
|
1229
|
+
/**
|
|
1230
|
+
* @private
|
|
1231
|
+
*
|
|
1232
|
+
* @param {Number} offset 1|-1
|
|
1233
|
+
*/
|
|
1234
|
+
_moveWidgetByOne: function( offset ) {
|
|
1235
|
+
var i, sidebarWidgetsSetting, sidebarWidgetIds, adjacentWidgetId;
|
|
1236
|
+
|
|
1237
|
+
i = this.getWidgetSidebarPosition();
|
|
1238
|
+
|
|
1239
|
+
sidebarWidgetsSetting = this.getSidebarWidgetsControl().setting;
|
|
1240
|
+
sidebarWidgetIds = Array.prototype.slice.call( sidebarWidgetsSetting() ); // clone
|
|
1241
|
+
adjacentWidgetId = sidebarWidgetIds[i + offset];
|
|
1242
|
+
sidebarWidgetIds[i + offset] = this.params.widget_id;
|
|
1243
|
+
sidebarWidgetIds[i] = adjacentWidgetId;
|
|
1244
|
+
|
|
1245
|
+
sidebarWidgetsSetting( sidebarWidgetIds );
|
|
1246
|
+
},
|
|
1247
|
+
|
|
1248
|
+
/**
|
|
1249
|
+
* Toggle visibility of the widget move area
|
|
1250
|
+
*
|
|
1251
|
+
* @param {Boolean} [showOrHide]
|
|
1252
|
+
*/
|
|
1253
|
+
toggleWidgetMoveArea: function( showOrHide ) {
|
|
1254
|
+
var self = this, $moveWidgetArea;
|
|
1255
|
+
|
|
1256
|
+
$moveWidgetArea = this.container.find( '.move-widget-area' );
|
|
1257
|
+
|
|
1258
|
+
if ( typeof showOrHide === 'undefined' ) {
|
|
1259
|
+
showOrHide = ! $moveWidgetArea.hasClass( 'active' );
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
if ( showOrHide ) {
|
|
1263
|
+
// reset the selected sidebar
|
|
1264
|
+
$moveWidgetArea.find( '.selected' ).removeClass( 'selected' );
|
|
1265
|
+
|
|
1266
|
+
$moveWidgetArea.find( 'li' ).filter( function() {
|
|
1267
|
+
return $( this ).data( 'id' ) === self.params.sidebar_id;
|
|
1268
|
+
} ).addClass( 'selected' );
|
|
1269
|
+
|
|
1270
|
+
this.container.find( '.move-widget-btn' ).prop( 'disabled', true );
|
|
1271
|
+
}
|
|
1272
|
+
|
|
1273
|
+
$moveWidgetArea.toggleClass( 'active', showOrHide );
|
|
1274
|
+
},
|
|
1275
|
+
|
|
1276
|
+
/**
|
|
1277
|
+
* Highlight the widget control and section
|
|
1278
|
+
*/
|
|
1279
|
+
highlightSectionAndControl: function() {
|
|
1280
|
+
var $target;
|
|
1281
|
+
|
|
1282
|
+
if ( this.container.is( ':hidden' ) ) {
|
|
1283
|
+
$target = this.container.closest( '.control-section' );
|
|
1284
|
+
} else {
|
|
1285
|
+
$target = this.container;
|
|
1286
|
+
}
|
|
1287
|
+
|
|
1288
|
+
$( '.highlighted' ).removeClass( 'highlighted' );
|
|
1289
|
+
$target.addClass( 'highlighted' );
|
|
1290
|
+
|
|
1291
|
+
setTimeout( function() {
|
|
1292
|
+
$target.removeClass( 'highlighted' );
|
|
1293
|
+
}, 500 );
|
|
1294
|
+
}
|
|
1295
|
+
} );
|
|
1296
|
+
|
|
1297
|
+
/**
|
|
1298
|
+
* wp.customize.Widgets.SidebarControl
|
|
1299
|
+
*
|
|
1300
|
+
* Customizer control for widgets.
|
|
1301
|
+
* Note that 'sidebar_widgets' must match the WP_Widget_Area_Customize_Control::$type
|
|
1302
|
+
*
|
|
1303
|
+
* @constructor
|
|
1304
|
+
* @augments wp.customize.Control
|
|
1305
|
+
*/
|
|
1306
|
+
api.Widgets.SidebarControl = api.Control.extend({
|
|
1307
|
+
/**
|
|
1308
|
+
* Set up the control
|
|
1309
|
+
*/
|
|
1310
|
+
ready: function() {
|
|
1311
|
+
this.$controlSection = this.container.closest( '.control-section' );
|
|
1312
|
+
this.$sectionContent = this.container.closest( '.accordion-section-content' );
|
|
1313
|
+
|
|
1314
|
+
this._setupModel();
|
|
1315
|
+
this._setupSortable();
|
|
1316
|
+
this._setupAddition();
|
|
1317
|
+
this._applyCardinalOrderClassNames();
|
|
1318
|
+
},
|
|
1319
|
+
|
|
1320
|
+
/**
|
|
1321
|
+
* Update ordering of widget control forms when the setting is updated
|
|
1322
|
+
*/
|
|
1323
|
+
_setupModel: function() {
|
|
1324
|
+
var self = this,
|
|
1325
|
+
registeredSidebar = api.Widgets.registeredSidebars.get( this.params.sidebar_id );
|
|
1326
|
+
|
|
1327
|
+
this.setting.bind( function( newWidgetIds, oldWidgetIds ) {
|
|
1328
|
+
var widgetFormControls, $sidebarWidgetsAddControl, finalControlContainers, removedWidgetIds;
|
|
1329
|
+
|
|
1330
|
+
removedWidgetIds = _( oldWidgetIds ).difference( newWidgetIds );
|
|
1331
|
+
|
|
1332
|
+
// Filter out any persistent widget IDs for widgets which have been deactivated
|
|
1333
|
+
newWidgetIds = _( newWidgetIds ).filter( function( newWidgetId ) {
|
|
1334
|
+
var parsedWidgetId = parseWidgetId( newWidgetId );
|
|
1335
|
+
|
|
1336
|
+
return !! api.Widgets.availableWidgets.findWhere( { id_base: parsedWidgetId.id_base } );
|
|
1337
|
+
} );
|
|
1338
|
+
|
|
1339
|
+
widgetFormControls = _( newWidgetIds ).map( function( widgetId ) {
|
|
1340
|
+
var widgetFormControl = api.Widgets.getWidgetFormControlForWidget( widgetId );
|
|
1341
|
+
|
|
1342
|
+
if ( ! widgetFormControl ) {
|
|
1343
|
+
widgetFormControl = self.addWidget( widgetId );
|
|
1344
|
+
}
|
|
1345
|
+
|
|
1346
|
+
return widgetFormControl;
|
|
1347
|
+
} );
|
|
1348
|
+
|
|
1349
|
+
// Sort widget controls to their new positions
|
|
1350
|
+
widgetFormControls.sort( function( a, b ) {
|
|
1351
|
+
var aIndex = _.indexOf( newWidgetIds, a.params.widget_id ),
|
|
1352
|
+
bIndex = _.indexOf( newWidgetIds, b.params.widget_id );
|
|
1353
|
+
|
|
1354
|
+
if ( aIndex === bIndex ) {
|
|
1355
|
+
return 0;
|
|
1356
|
+
}
|
|
1357
|
+
|
|
1358
|
+
return aIndex < bIndex ? -1 : 1;
|
|
1359
|
+
} );
|
|
1360
|
+
|
|
1361
|
+
// Append the controls to put them in the right order
|
|
1362
|
+
finalControlContainers = _( widgetFormControls ).map( function( widgetFormControls ) {
|
|
1363
|
+
return widgetFormControls.container[0];
|
|
1364
|
+
} );
|
|
1365
|
+
|
|
1366
|
+
$sidebarWidgetsAddControl = self.$sectionContent.find( '.customize-control-sidebar_widgets' );
|
|
1367
|
+
$sidebarWidgetsAddControl.before( finalControlContainers );
|
|
1368
|
+
|
|
1369
|
+
// Re-sort widget form controls (including widgets form other sidebars newly moved here)
|
|
1370
|
+
self._applyCardinalOrderClassNames();
|
|
1371
|
+
|
|
1372
|
+
// If the widget was dragged into the sidebar, make sure the sidebar_id param is updated
|
|
1373
|
+
_( widgetFormControls ).each( function( widgetFormControl ) {
|
|
1374
|
+
widgetFormControl.params.sidebar_id = self.params.sidebar_id;
|
|
1375
|
+
} );
|
|
1376
|
+
|
|
1377
|
+
// Cleanup after widget removal
|
|
1378
|
+
_( removedWidgetIds ).each( function( removedWidgetId ) {
|
|
1379
|
+
|
|
1380
|
+
// Using setTimeout so that when moving a widget to another sidebar, the other sidebars_widgets settings get a chance to update
|
|
1381
|
+
setTimeout( function() {
|
|
1382
|
+
var removedControl, wasDraggedToAnotherSidebar, inactiveWidgets, removedIdBase,
|
|
1383
|
+
widget, isPresentInAnotherSidebar = false;
|
|
1384
|
+
|
|
1385
|
+
// Check if the widget is in another sidebar
|
|
1386
|
+
api.each( function( otherSetting ) {
|
|
1387
|
+
if ( otherSetting.id === self.setting.id || 0 !== otherSetting.id.indexOf( 'sidebars_widgets[' ) || otherSetting.id === 'sidebars_widgets[wp_inactive_widgets]' ) {
|
|
1388
|
+
return;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
var otherSidebarWidgets = otherSetting(), i;
|
|
1392
|
+
|
|
1393
|
+
i = _.indexOf( otherSidebarWidgets, removedWidgetId );
|
|
1394
|
+
if ( -1 !== i ) {
|
|
1395
|
+
isPresentInAnotherSidebar = true;
|
|
1396
|
+
}
|
|
1397
|
+
} );
|
|
1398
|
+
|
|
1399
|
+
// If the widget is present in another sidebar, abort!
|
|
1400
|
+
if ( isPresentInAnotherSidebar ) {
|
|
1401
|
+
return;
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
removedControl = api.Widgets.getWidgetFormControlForWidget( removedWidgetId );
|
|
1405
|
+
|
|
1406
|
+
// Detect if widget control was dragged to another sidebar
|
|
1407
|
+
wasDraggedToAnotherSidebar = removedControl && $.contains( document, removedControl.container[0] ) && ! $.contains( self.$sectionContent[0], removedControl.container[0] );
|
|
1408
|
+
|
|
1409
|
+
// Delete any widget form controls for removed widgets
|
|
1410
|
+
if ( removedControl && ! wasDraggedToAnotherSidebar ) {
|
|
1411
|
+
api.control.remove( removedControl.id );
|
|
1412
|
+
removedControl.container.remove();
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
// Move widget to inactive widgets sidebar (move it to trash) if has been previously saved
|
|
1416
|
+
// This prevents the inactive widgets sidebar from overflowing with throwaway widgets
|
|
1417
|
+
if ( api.Widgets.savedWidgetIds[removedWidgetId] ) {
|
|
1418
|
+
inactiveWidgets = api.value( 'sidebars_widgets[wp_inactive_widgets]' )().slice();
|
|
1419
|
+
inactiveWidgets.push( removedWidgetId );
|
|
1420
|
+
api.value( 'sidebars_widgets[wp_inactive_widgets]' )( _( inactiveWidgets ).unique() );
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1423
|
+
// Make old single widget available for adding again
|
|
1424
|
+
removedIdBase = parseWidgetId( removedWidgetId ).id_base;
|
|
1425
|
+
widget = api.Widgets.availableWidgets.findWhere( { id_base: removedIdBase } );
|
|
1426
|
+
if ( widget && ! widget.get( 'is_multi' ) ) {
|
|
1427
|
+
widget.set( 'is_disabled', false );
|
|
1428
|
+
}
|
|
1429
|
+
} );
|
|
1430
|
+
|
|
1431
|
+
} );
|
|
1432
|
+
} );
|
|
1433
|
+
|
|
1434
|
+
// Update the model with whether or not the sidebar is rendered
|
|
1435
|
+
self.active.bind( function ( active ) {
|
|
1436
|
+
registeredSidebar.set( 'is_rendered', active );
|
|
1437
|
+
} );
|
|
1438
|
+
},
|
|
1439
|
+
|
|
1440
|
+
/**
|
|
1441
|
+
* Show the sidebar section when it becomes visible.
|
|
1442
|
+
*
|
|
1443
|
+
* Overrides api.Control.toggle()
|
|
1444
|
+
*
|
|
1445
|
+
* @param {Boolean} active
|
|
1446
|
+
*/
|
|
1447
|
+
toggle: function ( active ) {
|
|
1448
|
+
var $section, sectionSelector;
|
|
1449
|
+
|
|
1450
|
+
sectionSelector = '#accordion-section-sidebar-widgets-' + this.params.sidebar_id;
|
|
1451
|
+
$section = $( sectionSelector );
|
|
1452
|
+
|
|
1453
|
+
if ( active ) {
|
|
1454
|
+
$section.stop().slideDown( function() {
|
|
1455
|
+
$( this ).css( 'height', 'auto' ); // so that the .accordion-section-content won't overflow
|
|
1456
|
+
} );
|
|
1457
|
+
|
|
1458
|
+
} else {
|
|
1459
|
+
// Make sure that hidden sections get closed first
|
|
1460
|
+
if ( $section.hasClass( 'open' ) ) {
|
|
1461
|
+
// it would be nice if accordionSwitch() in accordion.js was public
|
|
1462
|
+
$section.find( '.accordion-section-title' ).trigger( 'click' );
|
|
1463
|
+
}
|
|
1464
|
+
|
|
1465
|
+
$section.stop().slideUp();
|
|
1466
|
+
}
|
|
1467
|
+
},
|
|
1468
|
+
|
|
1469
|
+
/**
|
|
1470
|
+
* Allow widgets in sidebar to be re-ordered, and for the order to be previewed
|
|
1471
|
+
*/
|
|
1472
|
+
_setupSortable: function() {
|
|
1473
|
+
var self = this;
|
|
1474
|
+
|
|
1475
|
+
this.isReordering = false;
|
|
1476
|
+
|
|
1477
|
+
/**
|
|
1478
|
+
* Update widget order setting when controls are re-ordered
|
|
1479
|
+
*/
|
|
1480
|
+
this.$sectionContent.sortable( {
|
|
1481
|
+
items: '> .customize-control-widget_form',
|
|
1482
|
+
handle: '.widget-top',
|
|
1483
|
+
axis: 'y',
|
|
1484
|
+
connectWith: '.accordion-section-content:has(.customize-control-sidebar_widgets)',
|
|
1485
|
+
update: function() {
|
|
1486
|
+
var widgetContainerIds = self.$sectionContent.sortable( 'toArray' ), widgetIds;
|
|
1487
|
+
|
|
1488
|
+
widgetIds = $.map( widgetContainerIds, function( widgetContainerId ) {
|
|
1489
|
+
return $( '#' + widgetContainerId ).find( ':input[name=widget-id]' ).val();
|
|
1490
|
+
} );
|
|
1491
|
+
|
|
1492
|
+
self.setting( widgetIds );
|
|
1493
|
+
}
|
|
1494
|
+
} );
|
|
1495
|
+
|
|
1496
|
+
/**
|
|
1497
|
+
* Expand other customizer sidebar section when dragging a control widget over it,
|
|
1498
|
+
* allowing the control to be dropped into another section
|
|
1499
|
+
*/
|
|
1500
|
+
this.$controlSection.find( '.accordion-section-title' ).droppable({
|
|
1501
|
+
accept: '.customize-control-widget_form',
|
|
1502
|
+
over: function() {
|
|
1503
|
+
if ( ! self.$controlSection.hasClass( 'open' ) ) {
|
|
1504
|
+
self.$controlSection.addClass( 'open' );
|
|
1505
|
+
self.$sectionContent.toggle( false ).slideToggle( 150, function() {
|
|
1506
|
+
self.$sectionContent.sortable( 'refreshPositions' );
|
|
1507
|
+
} );
|
|
1508
|
+
}
|
|
1509
|
+
}
|
|
1510
|
+
});
|
|
1511
|
+
|
|
1512
|
+
/**
|
|
1513
|
+
* Keyboard-accessible reordering
|
|
1514
|
+
*/
|
|
1515
|
+
this.container.find( '.reorder-toggle' ).on( 'click keydown', function( event ) {
|
|
1516
|
+
if ( event.type === 'keydown' && ! ( event.which === 13 || event.which === 32 ) ) { // Enter or Spacebar
|
|
1517
|
+
return;
|
|
1518
|
+
}
|
|
1519
|
+
|
|
1520
|
+
self.toggleReordering( ! self.isReordering );
|
|
1521
|
+
} );
|
|
1522
|
+
},
|
|
1523
|
+
|
|
1524
|
+
/**
|
|
1525
|
+
* Set up UI for adding a new widget
|
|
1526
|
+
*/
|
|
1527
|
+
_setupAddition: function() {
|
|
1528
|
+
var self = this;
|
|
1529
|
+
|
|
1530
|
+
this.container.find( '.add-new-widget' ).on( 'click keydown', function( event ) {
|
|
1531
|
+
if ( event.type === 'keydown' && ! ( event.which === 13 || event.which === 32 ) ) { // Enter or Spacebar
|
|
1532
|
+
return;
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1535
|
+
if ( self.$sectionContent.hasClass( 'reordering' ) ) {
|
|
1536
|
+
return;
|
|
1537
|
+
}
|
|
1538
|
+
|
|
1539
|
+
if ( ! $( 'body' ).hasClass( 'adding-widget' ) ) {
|
|
1540
|
+
api.Widgets.availableWidgetsPanel.open( self );
|
|
1541
|
+
} else {
|
|
1542
|
+
api.Widgets.availableWidgetsPanel.close();
|
|
1543
|
+
}
|
|
1544
|
+
} );
|
|
1545
|
+
},
|
|
1546
|
+
|
|
1547
|
+
/**
|
|
1548
|
+
* Add classes to the widget_form controls to assist with styling
|
|
1549
|
+
*/
|
|
1550
|
+
_applyCardinalOrderClassNames: function() {
|
|
1551
|
+
this.$sectionContent.find( '.customize-control-widget_form' )
|
|
1552
|
+
.removeClass( 'first-widget' )
|
|
1553
|
+
.removeClass( 'last-widget' )
|
|
1554
|
+
.find( '.move-widget-down, .move-widget-up' ).prop( 'tabIndex', 0 );
|
|
1555
|
+
|
|
1556
|
+
this.$sectionContent.find( '.customize-control-widget_form:first' )
|
|
1557
|
+
.addClass( 'first-widget' )
|
|
1558
|
+
.find( '.move-widget-up' ).prop( 'tabIndex', -1 );
|
|
1559
|
+
|
|
1560
|
+
this.$sectionContent.find( '.customize-control-widget_form:last' )
|
|
1561
|
+
.addClass( 'last-widget' )
|
|
1562
|
+
.find( '.move-widget-down' ).prop( 'tabIndex', -1 );
|
|
1563
|
+
},
|
|
1564
|
+
|
|
1565
|
+
|
|
1566
|
+
/***********************************************************************
|
|
1567
|
+
* Begin public API methods
|
|
1568
|
+
**********************************************************************/
|
|
1569
|
+
|
|
1570
|
+
/**
|
|
1571
|
+
* Enable/disable the reordering UI
|
|
1572
|
+
*
|
|
1573
|
+
* @param {Boolean} showOrHide to enable/disable reordering
|
|
1574
|
+
*/
|
|
1575
|
+
toggleReordering: function( showOrHide ) {
|
|
1576
|
+
showOrHide = Boolean( showOrHide );
|
|
1577
|
+
|
|
1578
|
+
if ( showOrHide === this.$sectionContent.hasClass( 'reordering' ) ) {
|
|
1579
|
+
return;
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1582
|
+
this.isReordering = showOrHide;
|
|
1583
|
+
this.$sectionContent.toggleClass( 'reordering', showOrHide );
|
|
1584
|
+
|
|
1585
|
+
if ( showOrHide ) {
|
|
1586
|
+
_( this.getWidgetFormControls() ).each( function( formControl ) {
|
|
1587
|
+
formControl.collapseForm();
|
|
1588
|
+
} );
|
|
1589
|
+
|
|
1590
|
+
this.$sectionContent.find( '.first-widget .move-widget' ).focus();
|
|
1591
|
+
this.$sectionContent.find( '.add-new-widget' ).prop( 'tabIndex', -1 );
|
|
1592
|
+
} else {
|
|
1593
|
+
this.$sectionContent.find( '.add-new-widget' ).prop( 'tabIndex', 0 );
|
|
1594
|
+
}
|
|
1595
|
+
},
|
|
1596
|
+
|
|
1597
|
+
/**
|
|
1598
|
+
* @return {wp.customize.controlConstructor.widget_form[]}
|
|
1599
|
+
*/
|
|
1600
|
+
getWidgetFormControls: function() {
|
|
1601
|
+
var formControls;
|
|
1602
|
+
|
|
1603
|
+
formControls = _( this.setting() ).map( function( widgetId ) {
|
|
1604
|
+
var settingId = widgetIdToSettingId( widgetId ),
|
|
1605
|
+
formControl = api.control( settingId );
|
|
1606
|
+
|
|
1607
|
+
if ( ! formControl ) {
|
|
1608
|
+
return;
|
|
1609
|
+
}
|
|
1610
|
+
|
|
1611
|
+
return formControl;
|
|
1612
|
+
} );
|
|
1613
|
+
|
|
1614
|
+
return formControls;
|
|
1615
|
+
},
|
|
1616
|
+
|
|
1617
|
+
/**
|
|
1618
|
+
* @param {string} widgetId or an id_base for adding a previously non-existing widget
|
|
1619
|
+
* @returns {object|false} widget_form control instance, or false on error
|
|
1620
|
+
*/
|
|
1621
|
+
addWidget: function( widgetId ) {
|
|
1622
|
+
var self = this, controlHtml, $widget, controlType = 'widget_form', $control, controlConstructor,
|
|
1623
|
+
parsedWidgetId = parseWidgetId( widgetId ),
|
|
1624
|
+
widgetNumber = parsedWidgetId.number,
|
|
1625
|
+
widgetIdBase = parsedWidgetId.id_base,
|
|
1626
|
+
widget = api.Widgets.availableWidgets.findWhere( {id_base: widgetIdBase} ),
|
|
1627
|
+
settingId, isExistingWidget, widgetFormControl, sidebarWidgets, settingArgs;
|
|
1628
|
+
|
|
1629
|
+
if ( ! widget ) {
|
|
1630
|
+
return false;
|
|
1631
|
+
}
|
|
1632
|
+
|
|
1633
|
+
if ( widgetNumber && ! widget.get( 'is_multi' ) ) {
|
|
1634
|
+
return false;
|
|
1635
|
+
}
|
|
1636
|
+
|
|
1637
|
+
// Set up new multi widget
|
|
1638
|
+
if ( widget.get( 'is_multi' ) && ! widgetNumber ) {
|
|
1639
|
+
widget.set( 'multi_number', widget.get( 'multi_number' ) + 1 );
|
|
1640
|
+
widgetNumber = widget.get( 'multi_number' );
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1643
|
+
controlHtml = $.trim( $( '#widget-tpl-' + widget.get( 'id' ) ).html() );
|
|
1644
|
+
if ( widget.get( 'is_multi' ) ) {
|
|
1645
|
+
controlHtml = controlHtml.replace( /<[^<>]+>/g, function( m ) {
|
|
1646
|
+
return m.replace( /__i__|%i%/g, widgetNumber );
|
|
1647
|
+
} );
|
|
1648
|
+
} else {
|
|
1649
|
+
widget.set( 'is_disabled', true ); // Prevent single widget from being added again now
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1652
|
+
$widget = $( controlHtml );
|
|
1653
|
+
|
|
1654
|
+
$control = $( '<li/>' )
|
|
1655
|
+
.addClass( 'customize-control' )
|
|
1656
|
+
.addClass( 'customize-control-' + controlType )
|
|
1657
|
+
.append( $widget );
|
|
1658
|
+
|
|
1659
|
+
// Remove icon which is visible inside the panel
|
|
1660
|
+
$control.find( '> .widget-icon' ).remove();
|
|
1661
|
+
|
|
1662
|
+
if ( widget.get( 'is_multi' ) ) {
|
|
1663
|
+
$control.find( 'input[name="widget_number"]' ).val( widgetNumber );
|
|
1664
|
+
$control.find( 'input[name="multi_number"]' ).val( widgetNumber );
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1667
|
+
widgetId = $control.find( '[name="widget-id"]' ).val();
|
|
1668
|
+
|
|
1669
|
+
$control.hide(); // to be slid-down below
|
|
1670
|
+
|
|
1671
|
+
settingId = 'widget_' + widget.get( 'id_base' );
|
|
1672
|
+
if ( widget.get( 'is_multi' ) ) {
|
|
1673
|
+
settingId += '[' + widgetNumber + ']';
|
|
1674
|
+
}
|
|
1675
|
+
$control.attr( 'id', 'customize-control-' + settingId.replace( /\]/g, '' ).replace( /\[/g, '-' ) );
|
|
1676
|
+
|
|
1677
|
+
this.container.after( $control );
|
|
1678
|
+
|
|
1679
|
+
// Only create setting if it doesn't already exist (if we're adding a pre-existing inactive widget)
|
|
1680
|
+
isExistingWidget = api.has( settingId );
|
|
1681
|
+
if ( ! isExistingWidget ) {
|
|
1682
|
+
settingArgs = {
|
|
1683
|
+
transport: 'refresh',
|
|
1684
|
+
previewer: this.setting.previewer
|
|
1685
|
+
};
|
|
1686
|
+
api.create( settingId, settingId, {}, settingArgs );
|
|
1687
|
+
}
|
|
1688
|
+
|
|
1689
|
+
controlConstructor = api.controlConstructor[controlType];
|
|
1690
|
+
widgetFormControl = new controlConstructor( settingId, {
|
|
1691
|
+
params: {
|
|
1692
|
+
settings: {
|
|
1693
|
+
'default': settingId
|
|
1694
|
+
},
|
|
1695
|
+
sidebar_id: self.params.sidebar_id,
|
|
1696
|
+
widget_id: widgetId,
|
|
1697
|
+
widget_id_base: widget.get( 'id_base' ),
|
|
1698
|
+
type: controlType,
|
|
1699
|
+
is_new: ! isExistingWidget,
|
|
1700
|
+
width: widget.get( 'width' ),
|
|
1701
|
+
height: widget.get( 'height' ),
|
|
1702
|
+
is_wide: widget.get( 'is_wide' )
|
|
1703
|
+
},
|
|
1704
|
+
previewer: self.setting.previewer
|
|
1705
|
+
} );
|
|
1706
|
+
api.control.add( settingId, widgetFormControl );
|
|
1707
|
+
|
|
1708
|
+
// Make sure widget is removed from the other sidebars
|
|
1709
|
+
api.each( function( otherSetting ) {
|
|
1710
|
+
if ( otherSetting.id === self.setting.id ) {
|
|
1711
|
+
return;
|
|
1712
|
+
}
|
|
1713
|
+
|
|
1714
|
+
if ( 0 !== otherSetting.id.indexOf( 'sidebars_widgets[' ) ) {
|
|
1715
|
+
return;
|
|
1716
|
+
}
|
|
1717
|
+
|
|
1718
|
+
var otherSidebarWidgets = otherSetting().slice(),
|
|
1719
|
+
i = _.indexOf( otherSidebarWidgets, widgetId );
|
|
1720
|
+
|
|
1721
|
+
if ( -1 !== i ) {
|
|
1722
|
+
otherSidebarWidgets.splice( i );
|
|
1723
|
+
otherSetting( otherSidebarWidgets );
|
|
1724
|
+
}
|
|
1725
|
+
} );
|
|
1726
|
+
|
|
1727
|
+
// Add widget to this sidebar
|
|
1728
|
+
sidebarWidgets = this.setting().slice();
|
|
1729
|
+
if ( -1 === _.indexOf( sidebarWidgets, widgetId ) ) {
|
|
1730
|
+
sidebarWidgets.push( widgetId );
|
|
1731
|
+
this.setting( sidebarWidgets );
|
|
1732
|
+
}
|
|
1733
|
+
|
|
1734
|
+
$control.slideDown( function() {
|
|
1735
|
+
if ( isExistingWidget ) {
|
|
1736
|
+
widgetFormControl.expandForm();
|
|
1737
|
+
widgetFormControl.updateWidget( {
|
|
1738
|
+
instance: widgetFormControl.setting(),
|
|
1739
|
+
complete: function( error ) {
|
|
1740
|
+
if ( error ) {
|
|
1741
|
+
throw error;
|
|
1742
|
+
}
|
|
1743
|
+
widgetFormControl.focus();
|
|
1744
|
+
}
|
|
1745
|
+
} );
|
|
1746
|
+
} else {
|
|
1747
|
+
widgetFormControl.focus();
|
|
1748
|
+
}
|
|
1749
|
+
} );
|
|
1750
|
+
|
|
1751
|
+
$( document ).trigger( 'widget-added', [ $widget ] );
|
|
1752
|
+
|
|
1753
|
+
return widgetFormControl;
|
|
1754
|
+
}
|
|
1755
|
+
} );
|
|
1756
|
+
|
|
1757
|
+
/**
|
|
1758
|
+
* Extends wp.customizer.controlConstructor with control constructor for
|
|
1759
|
+
* widget_form and sidebar_widgets.
|
|
1760
|
+
*/
|
|
1761
|
+
$.extend( api.controlConstructor, {
|
|
1762
|
+
widget_form: api.Widgets.WidgetControl,
|
|
1763
|
+
sidebar_widgets: api.Widgets.SidebarControl
|
|
1764
|
+
});
|
|
1765
|
+
|
|
1766
|
+
/**
|
|
1767
|
+
* Init Customizer for widgets.
|
|
1768
|
+
*/
|
|
1769
|
+
api.bind( 'ready', function() {
|
|
1770
|
+
// Set up the widgets panel
|
|
1771
|
+
api.Widgets.availableWidgetsPanel = new api.Widgets.AvailableWidgetsPanelView({
|
|
1772
|
+
collection: api.Widgets.availableWidgets
|
|
1773
|
+
});
|
|
1774
|
+
|
|
1775
|
+
// Highlight widget control
|
|
1776
|
+
api.previewer.bind( 'highlight-widget-control', api.Widgets.highlightWidgetFormControl );
|
|
1777
|
+
|
|
1778
|
+
// Open and focus widget control
|
|
1779
|
+
api.previewer.bind( 'focus-widget-control', api.Widgets.focusWidgetFormControl );
|
|
1780
|
+
} );
|
|
1781
|
+
|
|
1782
|
+
/**
|
|
1783
|
+
* Highlight a widget control.
|
|
1784
|
+
*
|
|
1785
|
+
* @param {string} widgetId
|
|
1786
|
+
*/
|
|
1787
|
+
api.Widgets.highlightWidgetFormControl = function( widgetId ) {
|
|
1788
|
+
var control = api.Widgets.getWidgetFormControlForWidget( widgetId );
|
|
1789
|
+
|
|
1790
|
+
if ( control ) {
|
|
1791
|
+
control.highlightSectionAndControl();
|
|
1792
|
+
}
|
|
1793
|
+
},
|
|
1794
|
+
|
|
1795
|
+
/**
|
|
1796
|
+
* Focus a widget control.
|
|
1797
|
+
*
|
|
1798
|
+
* @param {string} widgetId
|
|
1799
|
+
*/
|
|
1800
|
+
api.Widgets.focusWidgetFormControl = function( widgetId ) {
|
|
1801
|
+
var control = api.Widgets.getWidgetFormControlForWidget( widgetId );
|
|
1802
|
+
|
|
1803
|
+
if ( control ) {
|
|
1804
|
+
control.focus();
|
|
1805
|
+
}
|
|
1806
|
+
},
|
|
1807
|
+
|
|
1808
|
+
/**
|
|
1809
|
+
* Given a widget control, find the sidebar widgets control that contains it.
|
|
1810
|
+
* @param {string} widgetId
|
|
1811
|
+
* @return {object|null}
|
|
1812
|
+
*/
|
|
1813
|
+
api.Widgets.getSidebarWidgetControlContainingWidget = function( widgetId ) {
|
|
1814
|
+
var foundControl = null;
|
|
1815
|
+
|
|
1816
|
+
// @todo this can use widgetIdToSettingId(), then pass into wp.customize.control( x ).getSidebarWidgetsControl()
|
|
1817
|
+
api.control.each( function( control ) {
|
|
1818
|
+
if ( control.params.type === 'sidebar_widgets' && -1 !== _.indexOf( control.setting(), widgetId ) ) {
|
|
1819
|
+
foundControl = control;
|
|
1820
|
+
}
|
|
1821
|
+
} );
|
|
1822
|
+
|
|
1823
|
+
return foundControl;
|
|
1824
|
+
};
|
|
1825
|
+
|
|
1826
|
+
/**
|
|
1827
|
+
* Given a widget ID for a widget appearing in the preview, get the widget form control associated with it.
|
|
1828
|
+
*
|
|
1829
|
+
* @param {string} widgetId
|
|
1830
|
+
* @return {object|null}
|
|
1831
|
+
*/
|
|
1832
|
+
api.Widgets.getWidgetFormControlForWidget = function( widgetId ) {
|
|
1833
|
+
var foundControl = null;
|
|
1834
|
+
|
|
1835
|
+
// @todo We can just use widgetIdToSettingId() here
|
|
1836
|
+
api.control.each( function( control ) {
|
|
1837
|
+
if ( control.params.type === 'widget_form' && control.params.widget_id === widgetId ) {
|
|
1838
|
+
foundControl = control;
|
|
1839
|
+
}
|
|
1840
|
+
} );
|
|
1841
|
+
|
|
1842
|
+
return foundControl;
|
|
1843
|
+
};
|
|
1844
|
+
|
|
1845
|
+
/**
|
|
1846
|
+
* @param {String} widgetId
|
|
1847
|
+
* @returns {Object}
|
|
1848
|
+
*/
|
|
1849
|
+
function parseWidgetId( widgetId ) {
|
|
1850
|
+
var matches, parsed = {
|
|
1851
|
+
number: null,
|
|
1852
|
+
id_base: null
|
|
1853
|
+
};
|
|
1854
|
+
|
|
1855
|
+
matches = widgetId.match( /^(.+)-(\d+)$/ );
|
|
1856
|
+
if ( matches ) {
|
|
1857
|
+
parsed.id_base = matches[1];
|
|
1858
|
+
parsed.number = parseInt( matches[2], 10 );
|
|
1859
|
+
} else {
|
|
1860
|
+
// likely an old single widget
|
|
1861
|
+
parsed.id_base = widgetId;
|
|
1862
|
+
}
|
|
1863
|
+
|
|
1864
|
+
return parsed;
|
|
1865
|
+
}
|
|
1866
|
+
|
|
1867
|
+
/**
|
|
1868
|
+
* @param {String} widgetId
|
|
1869
|
+
* @returns {String} settingId
|
|
1870
|
+
*/
|
|
1871
|
+
function widgetIdToSettingId( widgetId ) {
|
|
1872
|
+
var parsed = parseWidgetId( widgetId ), settingId;
|
|
1873
|
+
|
|
1874
|
+
settingId = 'widget_' + parsed.id_base;
|
|
1875
|
+
if ( parsed.number ) {
|
|
1876
|
+
settingId += '[' + parsed.number + ']';
|
|
1877
|
+
}
|
|
1878
|
+
|
|
1879
|
+
return settingId;
|
|
1880
|
+
}
|
|
1881
|
+
|
|
1882
|
+
})( window.wp, jQuery );
|