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.
Files changed (1310) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +18 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +3 -16
  6. data/Rakefile +2 -0
  7. data/bin/stump-cli +58 -0
  8. data/lib/stump-cli/version.rb +3 -0
  9. data/lib/stump.rb +5 -0
  10. data/lib/wp/Movefile-example +62 -0
  11. data/lib/wp/README.md +25 -0
  12. data/lib/wp/index.php +17 -0
  13. data/lib/wp/license.txt +385 -0
  14. data/lib/wp/readme.html +96 -0
  15. data/lib/wp/wp-activate.php +131 -0
  16. data/lib/wp/wp-admin/about.php +193 -0
  17. data/lib/wp/wp-admin/admin-ajax.php +98 -0
  18. data/lib/wp/wp-admin/admin-footer.php +99 -0
  19. data/lib/wp/wp-admin/admin-functions.php +15 -0
  20. data/lib/wp/wp-admin/admin-header.php +243 -0
  21. data/lib/wp/wp-admin/admin-post.php +71 -0
  22. data/lib/wp/wp-admin/admin.php +347 -0
  23. data/lib/wp/wp-admin/async-upload.php +114 -0
  24. data/lib/wp/wp-admin/comment.php +299 -0
  25. data/lib/wp/wp-admin/credits.php +192 -0
  26. data/lib/wp/wp-admin/css/about-rtl.css +446 -0
  27. data/lib/wp/wp-admin/css/about.css +446 -0
  28. data/lib/wp/wp-admin/css/admin-menu-rtl.css +917 -0
  29. data/lib/wp/wp-admin/css/admin-menu.css +917 -0
  30. data/lib/wp/wp-admin/css/color-picker-rtl.css +127 -0
  31. data/lib/wp/wp-admin/css/color-picker-rtl.min.css +1 -0
  32. data/lib/wp/wp-admin/css/color-picker.css +127 -0
  33. data/lib/wp/wp-admin/css/color-picker.min.css +1 -0
  34. data/lib/wp/wp-admin/css/colors/_admin.scss +525 -0
  35. data/lib/wp/wp-admin/css/colors/_mixins.scss +43 -0
  36. data/lib/wp/wp-admin/css/colors/_variables.scss +58 -0
  37. data/lib/wp/wp-admin/css/colors/blue/colors-rtl.css +341 -0
  38. data/lib/wp/wp-admin/css/colors/blue/colors-rtl.min.css +1 -0
  39. data/lib/wp/wp-admin/css/colors/blue/colors.css +341 -0
  40. data/lib/wp/wp-admin/css/colors/blue/colors.min.css +1 -0
  41. data/lib/wp/wp-admin/css/colors/blue/colors.scss +11 -0
  42. data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.css +341 -0
  43. data/lib/wp/wp-admin/css/colors/coffee/colors-rtl.min.css +1 -0
  44. data/lib/wp/wp-admin/css/colors/coffee/colors.css +341 -0
  45. data/lib/wp/wp-admin/css/colors/coffee/colors.min.css +1 -0
  46. data/lib/wp/wp-admin/css/colors/coffee/colors.scss +7 -0
  47. data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.css +341 -0
  48. data/lib/wp/wp-admin/css/colors/ectoplasm/colors-rtl.min.css +1 -0
  49. data/lib/wp/wp-admin/css/colors/ectoplasm/colors.css +341 -0
  50. data/lib/wp/wp-admin/css/colors/ectoplasm/colors.min.css +1 -0
  51. data/lib/wp/wp-admin/css/colors/ectoplasm/colors.scss +8 -0
  52. data/lib/wp/wp-admin/css/colors/light/colors-rtl.css +349 -0
  53. data/lib/wp/wp-admin/css/colors/light/colors-rtl.min.css +1 -0
  54. data/lib/wp/wp-admin/css/colors/light/colors.css +349 -0
  55. data/lib/wp/wp-admin/css/colors/light/colors.min.css +1 -0
  56. data/lib/wp/wp-admin/css/colors/light/colors.scss +38 -0
  57. data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.css +341 -0
  58. data/lib/wp/wp-admin/css/colors/midnight/colors-rtl.min.css +1 -0
  59. data/lib/wp/wp-admin/css/colors/midnight/colors.css +341 -0
  60. data/lib/wp/wp-admin/css/colors/midnight/colors.min.css +1 -0
  61. data/lib/wp/wp-admin/css/colors/midnight/colors.scss +5 -0
  62. data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.css +341 -0
  63. data/lib/wp/wp-admin/css/colors/ocean/colors-rtl.min.css +1 -0
  64. data/lib/wp/wp-admin/css/colors/ocean/colors.css +341 -0
  65. data/lib/wp/wp-admin/css/colors/ocean/colors.min.css +1 -0
  66. data/lib/wp/wp-admin/css/colors/ocean/colors.scss +8 -0
  67. data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.css +341 -0
  68. data/lib/wp/wp-admin/css/colors/sunrise/colors-rtl.min.css +1 -0
  69. data/lib/wp/wp-admin/css/colors/sunrise/colors.css +341 -0
  70. data/lib/wp/wp-admin/css/colors/sunrise/colors.min.css +1 -0
  71. data/lib/wp/wp-admin/css/colors/sunrise/colors.scss +6 -0
  72. data/lib/wp/wp-admin/css/common-rtl.css +3212 -0
  73. data/lib/wp/wp-admin/css/common.css +3212 -0
  74. data/lib/wp/wp-admin/css/customize-controls-rtl.css +889 -0
  75. data/lib/wp/wp-admin/css/customize-controls-rtl.min.css +1 -0
  76. data/lib/wp/wp-admin/css/customize-controls.css +889 -0
  77. data/lib/wp/wp-admin/css/customize-controls.min.css +1 -0
  78. data/lib/wp/wp-admin/css/customize-widgets-rtl.css +603 -0
  79. data/lib/wp/wp-admin/css/customize-widgets-rtl.min.css +1 -0
  80. data/lib/wp/wp-admin/css/customize-widgets.css +603 -0
  81. data/lib/wp/wp-admin/css/customize-widgets.min.css +1 -0
  82. data/lib/wp/wp-admin/css/dashboard-rtl.css +1116 -0
  83. data/lib/wp/wp-admin/css/dashboard.css +1116 -0
  84. data/lib/wp/wp-admin/css/deprecated-media-rtl.css +371 -0
  85. data/lib/wp/wp-admin/css/deprecated-media-rtl.min.css +1 -0
  86. data/lib/wp/wp-admin/css/deprecated-media.css +371 -0
  87. data/lib/wp/wp-admin/css/deprecated-media.min.css +1 -0
  88. data/lib/wp/wp-admin/css/edit-rtl.css +1501 -0
  89. data/lib/wp/wp-admin/css/edit.css +1501 -0
  90. data/lib/wp/wp-admin/css/farbtastic-rtl.css +41 -0
  91. data/lib/wp/wp-admin/css/farbtastic.css +41 -0
  92. data/lib/wp/wp-admin/css/forms-rtl.css +992 -0
  93. data/lib/wp/wp-admin/css/forms.css +992 -0
  94. data/lib/wp/wp-admin/css/ie-rtl.css +785 -0
  95. data/lib/wp/wp-admin/css/ie-rtl.min.css +1 -0
  96. data/lib/wp/wp-admin/css/ie.css +785 -0
  97. data/lib/wp/wp-admin/css/ie.min.css +1 -0
  98. data/lib/wp/wp-admin/css/install-rtl.css +389 -0
  99. data/lib/wp/wp-admin/css/install-rtl.min.css +1 -0
  100. data/lib/wp/wp-admin/css/install.css +389 -0
  101. data/lib/wp/wp-admin/css/install.min.css +1 -0
  102. data/lib/wp/wp-admin/css/l10n-rtl.css +101 -0
  103. data/lib/wp/wp-admin/css/l10n.css +101 -0
  104. data/lib/wp/wp-admin/css/list-tables-rtl.css +1875 -0
  105. data/lib/wp/wp-admin/css/list-tables.css +1875 -0
  106. data/lib/wp/wp-admin/css/login-rtl.css +269 -0
  107. data/lib/wp/wp-admin/css/login-rtl.min.css +1 -0
  108. data/lib/wp/wp-admin/css/login.css +269 -0
  109. data/lib/wp/wp-admin/css/login.min.css +1 -0
  110. data/lib/wp/wp-admin/css/media-rtl.css +1196 -0
  111. data/lib/wp/wp-admin/css/media.css +1196 -0
  112. data/lib/wp/wp-admin/css/nav-menus-rtl.css +857 -0
  113. data/lib/wp/wp-admin/css/nav-menus.css +857 -0
  114. data/lib/wp/wp-admin/css/press-this-rtl.css +458 -0
  115. data/lib/wp/wp-admin/css/press-this.css +458 -0
  116. data/lib/wp/wp-admin/css/revisions-rtl.css +574 -0
  117. data/lib/wp/wp-admin/css/revisions.css +574 -0
  118. data/lib/wp/wp-admin/css/themes-rtl.css +1732 -0
  119. data/lib/wp/wp-admin/css/themes.css +1732 -0
  120. data/lib/wp/wp-admin/css/widgets-rtl.css +577 -0
  121. data/lib/wp/wp-admin/css/widgets.css +577 -0
  122. data/lib/wp/wp-admin/css/wp-admin-rtl.css +14 -0
  123. data/lib/wp/wp-admin/css/wp-admin-rtl.min.css +1 -0
  124. data/lib/wp/wp-admin/css/wp-admin.css +14 -0
  125. data/lib/wp/wp-admin/css/wp-admin.min.css +1 -0
  126. data/lib/wp/wp-admin/custom-background.php +482 -0
  127. data/lib/wp/wp-admin/custom-header.php +1366 -0
  128. data/lib/wp/wp-admin/customize.php +278 -0
  129. data/lib/wp/wp-admin/edit-comments.php +254 -0
  130. data/lib/wp/wp-admin/edit-form-advanced.php +636 -0
  131. data/lib/wp/wp-admin/edit-form-comment.php +160 -0
  132. data/lib/wp/wp-admin/edit-link-form.php +150 -0
  133. data/lib/wp/wp-admin/edit-tag-form.php +204 -0
  134. data/lib/wp/wp-admin/edit-tags.php +591 -0
  135. data/lib/wp/wp-admin/edit.php +330 -0
  136. data/lib/wp/wp-admin/export.php +243 -0
  137. data/lib/wp/wp-admin/freedoms.php +57 -0
  138. data/lib/wp/wp-admin/images/align-center-2x.png +0 -0
  139. data/lib/wp/wp-admin/images/align-center.png +0 -0
  140. data/lib/wp/wp-admin/images/align-left-2x.png +0 -0
  141. data/lib/wp/wp-admin/images/align-left.png +0 -0
  142. data/lib/wp/wp-admin/images/align-none-2x.png +0 -0
  143. data/lib/wp/wp-admin/images/align-none.png +0 -0
  144. data/lib/wp/wp-admin/images/align-right-2x.png +0 -0
  145. data/lib/wp/wp-admin/images/align-right.png +0 -0
  146. data/lib/wp/wp-admin/images/arrows-2x.png +0 -0
  147. data/lib/wp/wp-admin/images/arrows.png +0 -0
  148. data/lib/wp/wp-admin/images/bubble_bg-2x.gif +0 -0
  149. data/lib/wp/wp-admin/images/bubble_bg.gif +0 -0
  150. data/lib/wp/wp-admin/images/comment-grey-bubble-2x.png +0 -0
  151. data/lib/wp/wp-admin/images/comment-grey-bubble.png +0 -0
  152. data/lib/wp/wp-admin/images/date-button-2x.gif +0 -0
  153. data/lib/wp/wp-admin/images/date-button.gif +0 -0
  154. data/lib/wp/wp-admin/images/generic.png +0 -0
  155. data/lib/wp/wp-admin/images/icons32-2x.png +0 -0
  156. data/lib/wp/wp-admin/images/icons32-vs-2x.png +0 -0
  157. data/lib/wp/wp-admin/images/icons32-vs.png +0 -0
  158. data/lib/wp/wp-admin/images/icons32.png +0 -0
  159. data/lib/wp/wp-admin/images/imgedit-icons-2x.png +0 -0
  160. data/lib/wp/wp-admin/images/imgedit-icons.png +0 -0
  161. data/lib/wp/wp-admin/images/list-2x.png +0 -0
  162. data/lib/wp/wp-admin/images/list.png +0 -0
  163. data/lib/wp/wp-admin/images/loading.gif +0 -0
  164. data/lib/wp/wp-admin/images/marker.png +0 -0
  165. data/lib/wp/wp-admin/images/mask.png +0 -0
  166. data/lib/wp/wp-admin/images/media-button-2x.png +0 -0
  167. data/lib/wp/wp-admin/images/media-button-image.gif +0 -0
  168. data/lib/wp/wp-admin/images/media-button-music.gif +0 -0
  169. data/lib/wp/wp-admin/images/media-button-other.gif +0 -0
  170. data/lib/wp/wp-admin/images/media-button-video.gif +0 -0
  171. data/lib/wp/wp-admin/images/media-button.png +0 -0
  172. data/lib/wp/wp-admin/images/menu-2x.png +0 -0
  173. data/lib/wp/wp-admin/images/menu-vs-2x.png +0 -0
  174. data/lib/wp/wp-admin/images/menu-vs.png +0 -0
  175. data/lib/wp/wp-admin/images/menu.png +0 -0
  176. data/lib/wp/wp-admin/images/no.png +0 -0
  177. data/lib/wp/wp-admin/images/post-formats-vs.png +0 -0
  178. data/lib/wp/wp-admin/images/post-formats.png +0 -0
  179. data/lib/wp/wp-admin/images/post-formats32-vs.png +0 -0
  180. data/lib/wp/wp-admin/images/post-formats32.png +0 -0
  181. data/lib/wp/wp-admin/images/resize-2x.gif +0 -0
  182. data/lib/wp/wp-admin/images/resize-rtl-2x.gif +0 -0
  183. data/lib/wp/wp-admin/images/resize-rtl.gif +0 -0
  184. data/lib/wp/wp-admin/images/resize.gif +0 -0
  185. data/lib/wp/wp-admin/images/se.png +0 -0
  186. data/lib/wp/wp-admin/images/sort-2x.gif +0 -0
  187. data/lib/wp/wp-admin/images/sort.gif +0 -0
  188. data/lib/wp/wp-admin/images/spinner-2x.gif +0 -0
  189. data/lib/wp/wp-admin/images/spinner.gif +0 -0
  190. data/lib/wp/wp-admin/images/stars-2x.png +0 -0
  191. data/lib/wp/wp-admin/images/stars.png +0 -0
  192. data/lib/wp/wp-admin/images/w-logo-blue.png +0 -0
  193. data/lib/wp/wp-admin/images/w-logo-white.png +0 -0
  194. data/lib/wp/wp-admin/images/wheel.png +0 -0
  195. data/lib/wp/wp-admin/images/wordpress-logo-white.svg +1 -0
  196. data/lib/wp/wp-admin/images/wordpress-logo.png +0 -0
  197. data/lib/wp/wp-admin/images/wordpress-logo.svg +1 -0
  198. data/lib/wp/wp-admin/images/wpspin_light-2x.gif +0 -0
  199. data/lib/wp/wp-admin/images/wpspin_light.gif +0 -0
  200. data/lib/wp/wp-admin/images/xit-2x.gif +0 -0
  201. data/lib/wp/wp-admin/images/xit.gif +0 -0
  202. data/lib/wp/wp-admin/images/yes.png +0 -0
  203. data/lib/wp/wp-admin/import.php +132 -0
  204. data/lib/wp/wp-admin/includes/admin.php +74 -0
  205. data/lib/wp/wp-admin/includes/ajax-actions.php +2762 -0
  206. data/lib/wp/wp-admin/includes/bookmark.php +305 -0
  207. data/lib/wp/wp-admin/includes/class-ftp-pure.php +190 -0
  208. data/lib/wp/wp-admin/includes/class-ftp-sockets.php +250 -0
  209. data/lib/wp/wp-admin/includes/class-ftp.php +907 -0
  210. data/lib/wp/wp-admin/includes/class-pclzip.php +5687 -0
  211. data/lib/wp/wp-admin/includes/class-wp-comments-list-table.php +637 -0
  212. data/lib/wp/wp-admin/includes/class-wp-filesystem-base.php +815 -0
  213. data/lib/wp/wp-admin/includes/class-wp-filesystem-direct.php +384 -0
  214. data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpext.php +415 -0
  215. data/lib/wp/wp-admin/includes/class-wp-filesystem-ftpsockets.php +352 -0
  216. data/lib/wp/wp-admin/includes/class-wp-filesystem-ssh2.php +392 -0
  217. data/lib/wp/wp-admin/includes/class-wp-importer.php +302 -0
  218. data/lib/wp/wp-admin/includes/class-wp-links-list-table.php +207 -0
  219. data/lib/wp/wp-admin/includes/class-wp-list-table.php +1080 -0
  220. data/lib/wp/wp-admin/includes/class-wp-media-list-table.php +574 -0
  221. data/lib/wp/wp-admin/includes/class-wp-ms-sites-list-table.php +402 -0
  222. data/lib/wp/wp-admin/includes/class-wp-ms-themes-list-table.php +459 -0
  223. data/lib/wp/wp-admin/includes/class-wp-ms-users-list-table.php +303 -0
  224. data/lib/wp/wp-admin/includes/class-wp-plugin-install-list-table.php +490 -0
  225. data/lib/wp/wp-admin/includes/class-wp-plugins-list-table.php +605 -0
  226. data/lib/wp/wp-admin/includes/class-wp-posts-list-table.php +1306 -0
  227. data/lib/wp/wp-admin/includes/class-wp-terms-list-table.php +466 -0
  228. data/lib/wp/wp-admin/includes/class-wp-theme-install-list-table.php +431 -0
  229. data/lib/wp/wp-admin/includes/class-wp-themes-list-table.php +279 -0
  230. data/lib/wp/wp-admin/includes/class-wp-upgrader-skins.php +767 -0
  231. data/lib/wp/wp-admin/includes/class-wp-upgrader.php +2676 -0
  232. data/lib/wp/wp-admin/includes/class-wp-users-list-table.php +459 -0
  233. data/lib/wp/wp-admin/includes/comment.php +171 -0
  234. data/lib/wp/wp-admin/includes/continents-cities.php +493 -0
  235. data/lib/wp/wp-admin/includes/dashboard.php +1333 -0
  236. data/lib/wp/wp-admin/includes/deprecated.php +1190 -0
  237. data/lib/wp/wp-admin/includes/export.php +508 -0
  238. data/lib/wp/wp-admin/includes/file.php +1152 -0
  239. data/lib/wp/wp-admin/includes/image-edit.php +828 -0
  240. data/lib/wp/wp-admin/includes/image.php +598 -0
  241. data/lib/wp/wp-admin/includes/import.php +206 -0
  242. data/lib/wp/wp-admin/includes/list-table.php +113 -0
  243. data/lib/wp/wp-admin/includes/media.php +3012 -0
  244. data/lib/wp/wp-admin/includes/menu.php +322 -0
  245. data/lib/wp/wp-admin/includes/meta-boxes.php +1119 -0
  246. data/lib/wp/wp-admin/includes/misc.php +845 -0
  247. data/lib/wp/wp-admin/includes/ms-deprecated.php +78 -0
  248. data/lib/wp/wp-admin/includes/ms.php +814 -0
  249. data/lib/wp/wp-admin/includes/nav-menu.php +1328 -0
  250. data/lib/wp/wp-admin/includes/plugin-install.php +550 -0
  251. data/lib/wp/wp-admin/includes/plugin.php +1899 -0
  252. data/lib/wp/wp-admin/includes/post.php +1661 -0
  253. data/lib/wp/wp-admin/includes/revision.php +228 -0
  254. data/lib/wp/wp-admin/includes/schema.php +1038 -0
  255. data/lib/wp/wp-admin/includes/screen.php +1179 -0
  256. data/lib/wp/wp-admin/includes/taxonomy.php +284 -0
  257. data/lib/wp/wp-admin/includes/template.php +2157 -0
  258. data/lib/wp/wp-admin/includes/theme-install.php +205 -0
  259. data/lib/wp/wp-admin/includes/theme.php +474 -0
  260. data/lib/wp/wp-admin/includes/translation-install.php +240 -0
  261. data/lib/wp/wp-admin/includes/update-core.php +1186 -0
  262. data/lib/wp/wp-admin/includes/update.php +432 -0
  263. data/lib/wp/wp-admin/includes/upgrade.php +2218 -0
  264. data/lib/wp/wp-admin/includes/user.php +442 -0
  265. data/lib/wp/wp-admin/includes/widgets.php +245 -0
  266. data/lib/wp/wp-admin/index.php +131 -0
  267. data/lib/wp/wp-admin/install-helper.php +199 -0
  268. data/lib/wp/wp-admin/install.php +305 -0
  269. data/lib/wp/wp-admin/js/accordion.js +143 -0
  270. data/lib/wp/wp-admin/js/accordion.min.js +1 -0
  271. data/lib/wp/wp-admin/js/color-picker.js +155 -0
  272. data/lib/wp/wp-admin/js/color-picker.min.js +1 -0
  273. data/lib/wp/wp-admin/js/comment.js +50 -0
  274. data/lib/wp/wp-admin/js/comment.min.js +1 -0
  275. data/lib/wp/wp-admin/js/common.js +804 -0
  276. data/lib/wp/wp-admin/js/common.min.js +1 -0
  277. data/lib/wp/wp-admin/js/custom-background.js +75 -0
  278. data/lib/wp/wp-admin/js/custom-background.min.js +1 -0
  279. data/lib/wp/wp-admin/js/custom-header.js +61 -0
  280. data/lib/wp/wp-admin/js/customize-controls.js +1305 -0
  281. data/lib/wp/wp-admin/js/customize-controls.min.js +1 -0
  282. data/lib/wp/wp-admin/js/customize-widgets.js +1882 -0
  283. data/lib/wp/wp-admin/js/customize-widgets.min.js +1 -0
  284. data/lib/wp/wp-admin/js/dashboard.js +190 -0
  285. data/lib/wp/wp-admin/js/dashboard.min.js +1 -0
  286. data/lib/wp/wp-admin/js/edit-comments.js +625 -0
  287. data/lib/wp/wp-admin/js/edit-comments.min.js +1 -0
  288. data/lib/wp/wp-admin/js/editor-expand.js +705 -0
  289. data/lib/wp/wp-admin/js/editor-expand.min.js +1 -0
  290. data/lib/wp/wp-admin/js/editor.js +324 -0
  291. data/lib/wp/wp-admin/js/editor.min.js +1 -0
  292. data/lib/wp/wp-admin/js/farbtastic.js +276 -0
  293. data/lib/wp/wp-admin/js/gallery.js +237 -0
  294. data/lib/wp/wp-admin/js/gallery.min.js +1 -0
  295. data/lib/wp/wp-admin/js/image-edit.js +633 -0
  296. data/lib/wp/wp-admin/js/image-edit.min.js +1 -0
  297. data/lib/wp/wp-admin/js/inline-edit-post.js +359 -0
  298. data/lib/wp/wp-admin/js/inline-edit-post.min.js +1 -0
  299. data/lib/wp/wp-admin/js/inline-edit-tax.js +142 -0
  300. data/lib/wp/wp-admin/js/inline-edit-tax.min.js +1 -0
  301. data/lib/wp/wp-admin/js/iris.min.js +4 -0
  302. data/lib/wp/wp-admin/js/language-chooser.js +26 -0
  303. data/lib/wp/wp-admin/js/language-chooser.min.js +1 -0
  304. data/lib/wp/wp-admin/js/link.js +69 -0
  305. data/lib/wp/wp-admin/js/link.min.js +1 -0
  306. data/lib/wp/wp-admin/js/media-gallery.js +26 -0
  307. data/lib/wp/wp-admin/js/media-gallery.min.js +1 -0
  308. data/lib/wp/wp-admin/js/media-upload.js +69 -0
  309. data/lib/wp/wp-admin/js/media-upload.min.js +1 -0
  310. data/lib/wp/wp-admin/js/media.js +111 -0
  311. data/lib/wp/wp-admin/js/media.min.js +1 -0
  312. data/lib/wp/wp-admin/js/nav-menu.js +1205 -0
  313. data/lib/wp/wp-admin/js/nav-menu.min.js +1 -0
  314. data/lib/wp/wp-admin/js/password-strength-meter.js +75 -0
  315. data/lib/wp/wp-admin/js/password-strength-meter.min.js +1 -0
  316. data/lib/wp/wp-admin/js/plugin-install.js +76 -0
  317. data/lib/wp/wp-admin/js/plugin-install.min.js +1 -0
  318. data/lib/wp/wp-admin/js/post.js +1094 -0
  319. data/lib/wp/wp-admin/js/post.min.js +1 -0
  320. data/lib/wp/wp-admin/js/postbox.js +199 -0
  321. data/lib/wp/wp-admin/js/postbox.min.js +1 -0
  322. data/lib/wp/wp-admin/js/revisions.js +1110 -0
  323. data/lib/wp/wp-admin/js/revisions.min.js +1 -0
  324. data/lib/wp/wp-admin/js/set-post-thumbnail.js +24 -0
  325. data/lib/wp/wp-admin/js/set-post-thumbnail.min.js +1 -0
  326. data/lib/wp/wp-admin/js/svg-painter.js +240 -0
  327. data/lib/wp/wp-admin/js/svg-painter.min.js +1 -0
  328. data/lib/wp/wp-admin/js/tags.js +72 -0
  329. data/lib/wp/wp-admin/js/tags.min.js +1 -0
  330. data/lib/wp/wp-admin/js/theme.js +1691 -0
  331. data/lib/wp/wp-admin/js/theme.min.js +1 -0
  332. data/lib/wp/wp-admin/js/updates.js +65 -0
  333. data/lib/wp/wp-admin/js/updates.min.js +1 -0
  334. data/lib/wp/wp-admin/js/user-profile.js +127 -0
  335. data/lib/wp/wp-admin/js/user-profile.min.js +1 -0
  336. data/lib/wp/wp-admin/js/user-suggest.js +30 -0
  337. data/lib/wp/wp-admin/js/user-suggest.min.js +1 -0
  338. data/lib/wp/wp-admin/js/widgets.js +494 -0
  339. data/lib/wp/wp-admin/js/widgets.min.js +1 -0
  340. data/lib/wp/wp-admin/js/word-count.js +44 -0
  341. data/lib/wp/wp-admin/js/word-count.min.js +1 -0
  342. data/lib/wp/wp-admin/js/wp-fullscreen.js +704 -0
  343. data/lib/wp/wp-admin/js/wp-fullscreen.min.js +1 -0
  344. data/lib/wp/wp-admin/js/xfn.js +17 -0
  345. data/lib/wp/wp-admin/js/xfn.min.js +1 -0
  346. data/lib/wp/wp-admin/link-add.php +29 -0
  347. data/lib/wp/wp-admin/link-manager.php +99 -0
  348. data/lib/wp/wp-admin/link-parse-opml.php +84 -0
  349. data/lib/wp/wp-admin/link.php +117 -0
  350. data/lib/wp/wp-admin/load-scripts.php +162 -0
  351. data/lib/wp/wp-admin/load-styles.php +153 -0
  352. data/lib/wp/wp-admin/maint/repair.php +124 -0
  353. data/lib/wp/wp-admin/media-new.php +84 -0
  354. data/lib/wp/wp-admin/media-upload.php +100 -0
  355. data/lib/wp/wp-admin/media.php +146 -0
  356. data/lib/wp/wp-admin/menu-header.php +227 -0
  357. data/lib/wp/wp-admin/menu.php +255 -0
  358. data/lib/wp/wp-admin/moderation.php +12 -0
  359. data/lib/wp/wp-admin/ms-admin.php +13 -0
  360. data/lib/wp/wp-admin/ms-delete-site.php +91 -0
  361. data/lib/wp/wp-admin/ms-edit.php +13 -0
  362. data/lib/wp/wp-admin/ms-options.php +12 -0
  363. data/lib/wp/wp-admin/ms-sites.php +13 -0
  364. data/lib/wp/wp-admin/ms-themes.php +13 -0
  365. data/lib/wp/wp-admin/ms-upgrade-network.php +13 -0
  366. data/lib/wp/wp-admin/ms-users.php +13 -0
  367. data/lib/wp/wp-admin/my-sites.php +145 -0
  368. data/lib/wp/wp-admin/nav-menus.php +798 -0
  369. data/lib/wp/wp-admin/network.php +561 -0
  370. data/lib/wp/wp-admin/network/about.php +16 -0
  371. data/lib/wp/wp-admin/network/admin.php +32 -0
  372. data/lib/wp/wp-admin/network/credits.php +16 -0
  373. data/lib/wp/wp-admin/network/edit.php +42 -0
  374. data/lib/wp/wp-admin/network/freedoms.php +16 -0
  375. data/lib/wp/wp-admin/network/index.php +79 -0
  376. data/lib/wp/wp-admin/network/menu.php +63 -0
  377. data/lib/wp/wp-admin/network/plugin-editor.php +16 -0
  378. data/lib/wp/wp-admin/network/plugin-install.php +19 -0
  379. data/lib/wp/wp-admin/network/plugins.php +16 -0
  380. data/lib/wp/wp-admin/network/profile.php +16 -0
  381. data/lib/wp/wp-admin/network/settings.php +347 -0
  382. data/lib/wp/wp-admin/network/setup.php +16 -0
  383. data/lib/wp/wp-admin/network/site-info.php +178 -0
  384. data/lib/wp/wp-admin/network/site-new.php +153 -0
  385. data/lib/wp/wp-admin/network/site-settings.php +173 -0
  386. data/lib/wp/wp-admin/network/site-themes.php +185 -0
  387. data/lib/wp/wp-admin/network/site-users.php +319 -0
  388. data/lib/wp/wp-admin/network/sites.php +275 -0
  389. data/lib/wp/wp-admin/network/theme-editor.php +16 -0
  390. data/lib/wp/wp-admin/network/theme-install.php +19 -0
  391. data/lib/wp/wp-admin/network/themes.php +291 -0
  392. data/lib/wp/wp-admin/network/update-core.php +16 -0
  393. data/lib/wp/wp-admin/network/update.php +19 -0
  394. data/lib/wp/wp-admin/network/upgrade.php +120 -0
  395. data/lib/wp/wp-admin/network/user-edit.php +16 -0
  396. data/lib/wp/wp-admin/network/user-new.php +106 -0
  397. data/lib/wp/wp-admin/network/users.php +296 -0
  398. data/lib/wp/wp-admin/options-discussion.php +273 -0
  399. data/lib/wp/wp-admin/options-general.php +355 -0
  400. data/lib/wp/wp-admin/options-head.php +18 -0
  401. data/lib/wp/wp-admin/options-media.php +136 -0
  402. data/lib/wp/wp-admin/options-permalink.php +289 -0
  403. data/lib/wp/wp-admin/options-reading.php +184 -0
  404. data/lib/wp/wp-admin/options-writing.php +194 -0
  405. data/lib/wp/wp-admin/options.php +265 -0
  406. data/lib/wp/wp-admin/plugin-editor.php +279 -0
  407. data/lib/wp/wp-admin/plugin-install.php +134 -0
  408. data/lib/wp/wp-admin/plugins.php +474 -0
  409. data/lib/wp/wp-admin/post-new.php +74 -0
  410. data/lib/wp/wp-admin/post.php +318 -0
  411. data/lib/wp/wp-admin/press-this.php +691 -0
  412. data/lib/wp/wp-admin/profile.php +18 -0
  413. data/lib/wp/wp-admin/revision.php +221 -0
  414. data/lib/wp/wp-admin/setup-config.php +345 -0
  415. data/lib/wp/wp-admin/theme-editor.php +243 -0
  416. data/lib/wp/wp-admin/theme-install.php +278 -0
  417. data/lib/wp/wp-admin/themes.php +374 -0
  418. data/lib/wp/wp-admin/tools.php +75 -0
  419. data/lib/wp/wp-admin/update-core.php +653 -0
  420. data/lib/wp/wp-admin/update.php +272 -0
  421. data/lib/wp/wp-admin/upgrade-functions.php +12 -0
  422. data/lib/wp/wp-admin/upgrade.php +116 -0
  423. data/lib/wp/wp-admin/upload.php +292 -0
  424. data/lib/wp/wp-admin/user-edit.php +557 -0
  425. data/lib/wp/wp-admin/user-new.php +439 -0
  426. data/lib/wp/wp-admin/user/about.php +13 -0
  427. data/lib/wp/wp-admin/user/admin.php +32 -0
  428. data/lib/wp/wp-admin/user/credits.php +13 -0
  429. data/lib/wp/wp-admin/user/freedoms.php +13 -0
  430. data/lib/wp/wp-admin/user/index.php +12 -0
  431. data/lib/wp/wp-admin/user/menu.php +22 -0
  432. data/lib/wp/wp-admin/user/profile.php +12 -0
  433. data/lib/wp/wp-admin/user/user-edit.php +12 -0
  434. data/lib/wp/wp-admin/users.php +460 -0
  435. data/lib/wp/wp-admin/widgets.php +442 -0
  436. data/lib/wp/wp-blog-header.php +18 -0
  437. data/lib/wp/wp-comments-post.php +164 -0
  438. data/lib/wp/wp-config-sample.php +80 -0
  439. data/lib/wp/wp-content/index.php +2 -0
  440. data/lib/wp/wp-content/plugins/hello.php +82 -0
  441. data/lib/wp/wp-content/plugins/index.php +2 -0
  442. data/lib/wp/wp-content/themes/index.php +2 -0
  443. data/lib/wp/wp-content/themes/stump/.editorconfig +11 -0
  444. data/lib/wp/wp-content/themes/stump/.jshintrc +16 -0
  445. data/lib/wp/wp-content/themes/stump/404.php +13 -0
  446. data/lib/wp/wp-content/themes/stump/CHANGELOG.md +333 -0
  447. data/lib/wp/wp-content/themes/stump/CONTRIBUTING.md +121 -0
  448. data/lib/wp/wp-content/themes/stump/Gruntfile.js +151 -0
  449. data/lib/wp/wp-content/themes/stump/LICENSE.md +19 -0
  450. data/lib/wp/wp-content/themes/stump/assets/coffee/build/.gitkeep +0 -0
  451. data/lib/wp/wp-content/themes/stump/assets/coffee/build/site.js +6 -0
  452. data/lib/wp/wp-content/themes/stump/assets/css/editor-style.css +548 -0
  453. data/lib/wp/wp-content/themes/stump/assets/css/main.min.css +4 -0
  454. data/lib/wp/wp-content/themes/stump/assets/css/main.min.css.map +7 -0
  455. data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  456. data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  457. data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  458. data/lib/wp/wp-content/themes/stump/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  459. data/lib/wp/wp-content/themes/stump/assets/img/.gitignore +0 -0
  460. data/lib/wp/wp-content/themes/stump/assets/js/_main.js +63 -0
  461. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/affix.js +137 -0
  462. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/alert.js +88 -0
  463. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/button.js +107 -0
  464. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/carousel.js +205 -0
  465. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/collapse.js +170 -0
  466. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/dropdown.js +147 -0
  467. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/modal.js +243 -0
  468. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/popover.js +110 -0
  469. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/scrollspy.js +153 -0
  470. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tab.js +125 -0
  471. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/tooltip.js +399 -0
  472. data/lib/wp/wp-content/themes/stump/assets/js/plugins/bootstrap/transition.js +48 -0
  473. data/lib/wp/wp-content/themes/stump/assets/js/scripts.min.js +1 -0
  474. data/lib/wp/wp-content/themes/stump/assets/js/vendor/jquery-1.11.0.min.js +4 -0
  475. data/lib/wp/wp-content/themes/stump/assets/js/vendor/modernizr-2.7.0.min.js +4 -0
  476. data/lib/wp/wp-content/themes/stump/assets/sass/app.scss +9 -0
  477. data/lib/wp/wp-content/themes/stump/assets/sass/core/_variables.scss +1 -0
  478. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_alerts.scss +67 -0
  479. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_badges.scss +55 -0
  480. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_bootstrap.scss +49 -0
  481. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_breadcrumbs.scss +26 -0
  482. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_button-groups.scss +226 -0
  483. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_buttons.scss +159 -0
  484. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_carousel.scss +232 -0
  485. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_close.scss +35 -0
  486. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_code.scss +63 -0
  487. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_component-animations.scss +29 -0
  488. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_dropdowns.scss +213 -0
  489. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_forms.scss +436 -0
  490. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_glyphicons.scss +233 -0
  491. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_grid.scss +84 -0
  492. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_input-groups.scss +162 -0
  493. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_jumbotron.scss +44 -0
  494. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_labels.scss +64 -0
  495. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_list-group.scss +110 -0
  496. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_media.scss +56 -0
  497. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_mixins.scss +947 -0
  498. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_modals.scss +139 -0
  499. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navbar.scss +620 -0
  500. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_navs.scss +242 -0
  501. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_normalize.scss +423 -0
  502. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pager.scss +55 -0
  503. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_pagination.scss +88 -0
  504. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_panels.scss +241 -0
  505. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_popovers.scss +133 -0
  506. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_print.scss +101 -0
  507. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_progress-bars.scss +80 -0
  508. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_responsive-utilities.scss +74 -0
  509. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_scaffolding.scss +134 -0
  510. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tables.scss +233 -0
  511. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_theme.scss +247 -0
  512. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_thumbnails.scss +38 -0
  513. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_tooltip.scss +95 -0
  514. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_type.scss +284 -0
  515. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_utilities.scss +56 -0
  516. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_variables.scss +833 -0
  517. data/lib/wp/wp-content/themes/stump/assets/vendor/bootstrap/_wells.scss +29 -0
  518. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon-deprecated-upcoming.scss +13 -0
  519. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/_bourbon.scss +59 -0
  520. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_button.scss +273 -0
  521. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_clearfix.scss +29 -0
  522. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_font-family.scss +5 -0
  523. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_hide-text.scss +5 -0
  524. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_html5-input-types.scss +56 -0
  525. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_position.scss +42 -0
  526. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_prefixer.scss +49 -0
  527. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_retina-image.scss +32 -0
  528. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_size.scss +44 -0
  529. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_timing-functions.scss +32 -0
  530. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/addons/_triangle.scss +45 -0
  531. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_animation.scss +52 -0
  532. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_appearance.scss +3 -0
  533. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_backface-visibility.scss +6 -0
  534. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background-image.scss +48 -0
  535. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_background.scss +103 -0
  536. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-image.scss +55 -0
  537. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_border-radius.scss +22 -0
  538. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_box-sizing.scss +4 -0
  539. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_columns.scss +47 -0
  540. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_flex-box.scss +52 -0
  541. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_font-face.scss +23 -0
  542. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_hidpi-media-query.scss +10 -0
  543. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_image-rendering.scss +13 -0
  544. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_inline-block.scss +8 -0
  545. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_keyframes.scss +43 -0
  546. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_linear-gradient.scss +41 -0
  547. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_perspective.scss +8 -0
  548. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_placeholder.scss +29 -0
  549. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_radial-gradient.scss +44 -0
  550. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transform.scss +15 -0
  551. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_transition.scss +34 -0
  552. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/css3/_user-select.scss +3 -0
  553. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_compact.scss +11 -0
  554. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_flex-grid.scss +39 -0
  555. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_grid-width.scss +13 -0
  556. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_linear-gradient.scss +13 -0
  557. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_modular-scale.scss +40 -0
  558. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_px-to-em.scss +8 -0
  559. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_radial-gradient.scss +23 -0
  560. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_tint-shade.scss +9 -0
  561. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/functions/_transition-property-name.scss +22 -0
  562. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_deprecated-webkit-gradient.scss +39 -0
  563. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_gradient-positions-parser.scss +13 -0
  564. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_linear-positions-parser.scss +61 -0
  565. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-arg-parser.scss +69 -0
  566. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_radial-positions-parser.scss +18 -0
  567. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_render-gradients.scss +26 -0
  568. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/bourbon/helpers/_shape-size-stripper.scss +10 -0
  569. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan.sass +11 -0
  570. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_grid.sass +161 -0
  571. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_mixins.sass +63 -0
  572. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_utilities.sass +24 -0
  573. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/manhattan/_variables.sass +42 -0
  574. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat-helpers.scss +8 -0
  575. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/_neat.scss +21 -0
  576. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_new-breakpoint.scss +16 -0
  577. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_private.scss +107 -0
  578. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/functions/_px-to-em.scss +3 -0
  579. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_fill-parent.scss +7 -0
  580. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_grid.scss +5 -0
  581. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_media.scss +51 -0
  582. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_omega.scss +79 -0
  583. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_outer-container.scss +8 -0
  584. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_pad.scss +8 -0
  585. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_private.scss +50 -0
  586. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_reset.scss +12 -0
  587. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_row.scss +17 -0
  588. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_shift.scss +9 -0
  589. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_span-columns.scss +38 -0
  590. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_to-deprecate.scss +57 -0
  591. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/grid/_visual-grid.scss +41 -0
  592. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_grid.scss +7 -0
  593. data/lib/wp/wp-content/themes/stump/assets/vendor/manhattan/neat/settings/_visual-grid.scss +5 -0
  594. data/lib/wp/wp-content/themes/stump/base.php +36 -0
  595. data/lib/wp/wp-content/themes/stump/functions.php +19 -0
  596. data/lib/wp/wp-content/themes/stump/index.php +21 -0
  597. data/lib/wp/wp-content/themes/stump/lang/ar.mo +0 -0
  598. data/lib/wp/wp-content/themes/stump/lang/ar.po +270 -0
  599. data/lib/wp/wp-content/themes/stump/lang/bg_BG.mo +0 -0
  600. data/lib/wp/wp-content/themes/stump/lang/bg_BG.po +338 -0
  601. data/lib/wp/wp-content/themes/stump/lang/ca.mo +0 -0
  602. data/lib/wp/wp-content/themes/stump/lang/ca.po +517 -0
  603. data/lib/wp/wp-content/themes/stump/lang/da_DK.mo +0 -0
  604. data/lib/wp/wp-content/themes/stump/lang/da_DK.po +305 -0
  605. data/lib/wp/wp-content/themes/stump/lang/de_DE.mo +0 -0
  606. data/lib/wp/wp-content/themes/stump/lang/de_DE.po +271 -0
  607. data/lib/wp/wp-content/themes/stump/lang/el.mo +0 -0
  608. data/lib/wp/wp-content/themes/stump/lang/el.po +319 -0
  609. data/lib/wp/wp-content/themes/stump/lang/es_ES.mo +0 -0
  610. data/lib/wp/wp-content/themes/stump/lang/es_ES.po +270 -0
  611. data/lib/wp/wp-content/themes/stump/lang/et.mo +0 -0
  612. data/lib/wp/wp-content/themes/stump/lang/et.po +262 -0
  613. data/lib/wp/wp-content/themes/stump/lang/fa_IR.mo +0 -0
  614. data/lib/wp/wp-content/themes/stump/lang/fa_IR.po +273 -0
  615. data/lib/wp/wp-content/themes/stump/lang/fi_FI.mo +0 -0
  616. data/lib/wp/wp-content/themes/stump/lang/fi_FI.po +367 -0
  617. data/lib/wp/wp-content/themes/stump/lang/fr_FR.mo +0 -0
  618. data/lib/wp/wp-content/themes/stump/lang/fr_FR.po +336 -0
  619. data/lib/wp/wp-content/themes/stump/lang/he_IL.mo +0 -0
  620. data/lib/wp/wp-content/themes/stump/lang/he_IL.po +336 -0
  621. data/lib/wp/wp-content/themes/stump/lang/hu_HU.mo +0 -0
  622. data/lib/wp/wp-content/themes/stump/lang/hu_HU.po +271 -0
  623. data/lib/wp/wp-content/themes/stump/lang/id_ID.mo +0 -0
  624. data/lib/wp/wp-content/themes/stump/lang/id_ID.po +278 -0
  625. data/lib/wp/wp-content/themes/stump/lang/it_IT.mo +0 -0
  626. data/lib/wp/wp-content/themes/stump/lang/it_IT.po +269 -0
  627. data/lib/wp/wp-content/themes/stump/lang/ja.mo +0 -0
  628. data/lib/wp/wp-content/themes/stump/lang/ja.po +267 -0
  629. data/lib/wp/wp-content/themes/stump/lang/ko_KR.mo +0 -0
  630. data/lib/wp/wp-content/themes/stump/lang/ko_KR.po +282 -0
  631. data/lib/wp/wp-content/themes/stump/lang/mk_MK.mo +0 -0
  632. data/lib/wp/wp-content/themes/stump/lang/mk_MK.po +297 -0
  633. data/lib/wp/wp-content/themes/stump/lang/ms_MY.mo +0 -0
  634. data/lib/wp/wp-content/themes/stump/lang/ms_MY.po +342 -0
  635. data/lib/wp/wp-content/themes/stump/lang/nb_NO.mo +0 -0
  636. data/lib/wp/wp-content/themes/stump/lang/nb_NO.po +517 -0
  637. data/lib/wp/wp-content/themes/stump/lang/nl_NL.mo +0 -0
  638. data/lib/wp/wp-content/themes/stump/lang/nl_NL.po +261 -0
  639. data/lib/wp/wp-content/themes/stump/lang/nn_NO.mo +0 -0
  640. data/lib/wp/wp-content/themes/stump/lang/nn_NO.po +517 -0
  641. data/lib/wp/wp-content/themes/stump/lang/pl_PL.mo +0 -0
  642. data/lib/wp/wp-content/themes/stump/lang/pl_PL.po +283 -0
  643. data/lib/wp/wp-content/themes/stump/lang/pt_BR.mo +0 -0
  644. data/lib/wp/wp-content/themes/stump/lang/pt_BR.po +394 -0
  645. data/lib/wp/wp-content/themes/stump/lang/ro_RO.mo +0 -0
  646. data/lib/wp/wp-content/themes/stump/lang/ro_RO.po +271 -0
  647. data/lib/wp/wp-content/themes/stump/lang/roots.pot +244 -0
  648. data/lib/wp/wp-content/themes/stump/lang/ru_RU.mo +0 -0
  649. data/lib/wp/wp-content/themes/stump/lang/ru_RU.po +255 -0
  650. data/lib/wp/wp-content/themes/stump/lang/sk_SK.mo +0 -0
  651. data/lib/wp/wp-content/themes/stump/lang/sk_SK.po +267 -0
  652. data/lib/wp/wp-content/themes/stump/lang/sr_RS.mo +0 -0
  653. data/lib/wp/wp-content/themes/stump/lang/sr_RS.pot +261 -0
  654. data/lib/wp/wp-content/themes/stump/lang/sv_SE.mo +0 -0
  655. data/lib/wp/wp-content/themes/stump/lang/sv_SE.po +323 -0
  656. data/lib/wp/wp-content/themes/stump/lang/tr_TR.mo +0 -0
  657. data/lib/wp/wp-content/themes/stump/lang/tr_TR.po +405 -0
  658. data/lib/wp/wp-content/themes/stump/lang/vi_VN.mo +0 -0
  659. data/lib/wp/wp-content/themes/stump/lang/vi_VN.po +516 -0
  660. data/lib/wp/wp-content/themes/stump/lang/zh_CN.mo +0 -0
  661. data/lib/wp/wp-content/themes/stump/lang/zh_CN.po +329 -0
  662. data/lib/wp/wp-content/themes/stump/lang/zh_TW.mo +0 -0
  663. data/lib/wp/wp-content/themes/stump/lang/zh_TW.po +261 -0
  664. data/lib/wp/wp-content/themes/stump/lib/activation.php +215 -0
  665. data/lib/wp/wp-content/themes/stump/lib/cleanup.php +261 -0
  666. data/lib/wp/wp-content/themes/stump/lib/comments.php +52 -0
  667. data/lib/wp/wp-content/themes/stump/lib/config.php +79 -0
  668. data/lib/wp/wp-content/themes/stump/lib/custom.php +4 -0
  669. data/lib/wp/wp-content/themes/stump/lib/gallery.php +130 -0
  670. data/lib/wp/wp-content/themes/stump/lib/init.php +25 -0
  671. data/lib/wp/wp-content/themes/stump/lib/nav.php +93 -0
  672. data/lib/wp/wp-content/themes/stump/lib/relative-urls.php +50 -0
  673. data/lib/wp/wp-content/themes/stump/lib/scripts.php +67 -0
  674. data/lib/wp/wp-content/themes/stump/lib/sidebar.php +43 -0
  675. data/lib/wp/wp-content/themes/stump/lib/titles.php +37 -0
  676. data/lib/wp/wp-content/themes/stump/lib/utils.php +14 -0
  677. data/lib/wp/wp-content/themes/stump/lib/widgets.php +133 -0
  678. data/lib/wp/wp-content/themes/stump/lib/wrapper.php +49 -0
  679. data/lib/wp/wp-content/themes/stump/package.json +32 -0
  680. data/lib/wp/wp-content/themes/stump/page.php +2 -0
  681. data/lib/wp/wp-content/themes/stump/screenshot.png +0 -0
  682. data/lib/wp/wp-content/themes/stump/single.php +1 -0
  683. data/lib/wp/wp-content/themes/stump/style.css +11 -0
  684. data/lib/wp/wp-content/themes/stump/template-custom.php +8 -0
  685. data/lib/wp/wp-content/themes/stump/templates/comment.php +14 -0
  686. data/lib/wp/wp-content/themes/stump/templates/comments.php +80 -0
  687. data/lib/wp/wp-content/themes/stump/templates/content-page.php +4 -0
  688. data/lib/wp/wp-content/themes/stump/templates/content-single.php +15 -0
  689. data/lib/wp/wp-content/themes/stump/templates/content.php +9 -0
  690. data/lib/wp/wp-content/themes/stump/templates/entry-meta.php +2 -0
  691. data/lib/wp/wp-content/themes/stump/templates/footer.php +8 -0
  692. data/lib/wp/wp-content/themes/stump/templates/head.php +12 -0
  693. data/lib/wp/wp-content/themes/stump/templates/header-top-navbar.php +21 -0
  694. data/lib/wp/wp-content/themes/stump/templates/header.php +14 -0
  695. data/lib/wp/wp-content/themes/stump/templates/page-header.php +5 -0
  696. data/lib/wp/wp-content/themes/stump/templates/searchform.php +9 -0
  697. data/lib/wp/wp-content/themes/stump/templates/sidebar.php +1 -0
  698. data/lib/wp/wp-content/themes/twentyfourteen/404.php +32 -0
  699. data/lib/wp/wp-content/themes/twentyfourteen/archive.php +74 -0
  700. data/lib/wp/wp-content/themes/twentyfourteen/author.php +74 -0
  701. data/lib/wp/wp-content/themes/twentyfourteen/category.php +58 -0
  702. data/lib/wp/wp-content/themes/twentyfourteen/comments.php +66 -0
  703. data/lib/wp/wp-content/themes/twentyfourteen/content-aside.php +57 -0
  704. data/lib/wp/wp-content/themes/twentyfourteen/content-audio.php +57 -0
  705. data/lib/wp/wp-content/themes/twentyfourteen/content-featured-post.php +34 -0
  706. data/lib/wp/wp-content/themes/twentyfourteen/content-gallery.php +57 -0
  707. data/lib/wp/wp-content/themes/twentyfourteen/content-image.php +57 -0
  708. data/lib/wp/wp-content/themes/twentyfourteen/content-link.php +57 -0
  709. data/lib/wp/wp-content/themes/twentyfourteen/content-none.php +31 -0
  710. data/lib/wp/wp-content/themes/twentyfourteen/content-page.php +31 -0
  711. data/lib/wp/wp-content/themes/twentyfourteen/content-quote.php +57 -0
  712. data/lib/wp/wp-content/themes/twentyfourteen/content-video.php +57 -0
  713. data/lib/wp/wp-content/themes/twentyfourteen/content.php +66 -0
  714. data/lib/wp/wp-content/themes/twentyfourteen/css/editor-style.css +717 -0
  715. data/lib/wp/wp-content/themes/twentyfourteen/css/ie.css +1335 -0
  716. data/lib/wp/wp-content/themes/twentyfourteen/featured-content.php +39 -0
  717. data/lib/wp/wp-content/themes/twentyfourteen/footer.php +28 -0
  718. data/lib/wp/wp-content/themes/twentyfourteen/functions.php +519 -0
  719. data/lib/wp/wp-content/themes/twentyfourteen/genericons/COPYING.txt +9 -0
  720. data/lib/wp/wp-content/themes/twentyfourteen/genericons/Genericons-Regular.otf +0 -0
  721. data/lib/wp/wp-content/themes/twentyfourteen/genericons/LICENSE.txt +339 -0
  722. data/lib/wp/wp-content/themes/twentyfourteen/genericons/README.txt +123 -0
  723. data/lib/wp/wp-content/themes/twentyfourteen/genericons/example.html +464 -0
  724. data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.eot +0 -0
  725. data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.svg +135 -0
  726. data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.ttf +0 -0
  727. data/lib/wp/wp-content/themes/twentyfourteen/genericons/font/genericons-regular-webfont.woff +0 -0
  728. data/lib/wp/wp-content/themes/twentyfourteen/genericons/genericons.css +197 -0
  729. data/lib/wp/wp-content/themes/twentyfourteen/header.php +65 -0
  730. data/lib/wp/wp-content/themes/twentyfourteen/image.php +79 -0
  731. data/lib/wp/wp-content/themes/twentyfourteen/images/pattern-dark.svg +16 -0
  732. data/lib/wp/wp-content/themes/twentyfourteen/images/pattern-light.svg +6 -0
  733. data/lib/wp/wp-content/themes/twentyfourteen/inc/back-compat.php +63 -0
  734. data/lib/wp/wp-content/themes/twentyfourteen/inc/custom-header.php +147 -0
  735. data/lib/wp/wp-content/themes/twentyfourteen/inc/customizer.php +114 -0
  736. data/lib/wp/wp-content/themes/twentyfourteen/inc/featured-content.php +531 -0
  737. data/lib/wp/wp-content/themes/twentyfourteen/inc/template-tags.php +203 -0
  738. data/lib/wp/wp-content/themes/twentyfourteen/inc/widgets.php +269 -0
  739. data/lib/wp/wp-content/themes/twentyfourteen/index.php +61 -0
  740. data/lib/wp/wp-content/themes/twentyfourteen/js/customizer.js +38 -0
  741. data/lib/wp/wp-content/themes/twentyfourteen/js/featured-content-admin.js +9 -0
  742. data/lib/wp/wp-content/themes/twentyfourteen/js/functions.js +134 -0
  743. data/lib/wp/wp-content/themes/twentyfourteen/js/html5.js +8 -0
  744. data/lib/wp/wp-content/themes/twentyfourteen/js/keyboard-image-navigation.js +21 -0
  745. data/lib/wp/wp-content/themes/twentyfourteen/js/slider.js +598 -0
  746. data/lib/wp/wp-content/themes/twentyfourteen/languages/twentyfourteen.pot +467 -0
  747. data/lib/wp/wp-content/themes/twentyfourteen/page-templates/contributors.php +52 -0
  748. data/lib/wp/wp-content/themes/twentyfourteen/page-templates/full-width.php +42 -0
  749. data/lib/wp/wp-content/themes/twentyfourteen/page.php +48 -0
  750. data/lib/wp/wp-content/themes/twentyfourteen/rtl.css +854 -0
  751. data/lib/wp/wp-content/themes/twentyfourteen/screenshot.png +0 -0
  752. data/lib/wp/wp-content/themes/twentyfourteen/search.php +49 -0
  753. data/lib/wp/wp-content/themes/twentyfourteen/sidebar-content.php +16 -0
  754. data/lib/wp/wp-content/themes/twentyfourteen/sidebar-footer.php +19 -0
  755. data/lib/wp/wp-content/themes/twentyfourteen/sidebar.php +29 -0
  756. data/lib/wp/wp-content/themes/twentyfourteen/single.php +40 -0
  757. data/lib/wp/wp-content/themes/twentyfourteen/style.css +4321 -0
  758. data/lib/wp/wp-content/themes/twentyfourteen/tag.php +60 -0
  759. data/lib/wp/wp-content/themes/twentyfourteen/taxonomy-post_format.php +85 -0
  760. data/lib/wp/wp-cron.php +115 -0
  761. data/lib/wp/wp-includes/ID3/getid3.lib.php +1376 -0
  762. data/lib/wp/wp-includes/ID3/getid3.php +1796 -0
  763. data/lib/wp/wp-includes/ID3/license.commercial.txt +27 -0
  764. data/lib/wp/wp-includes/ID3/license.txt +29 -0
  765. data/lib/wp/wp-includes/ID3/module.audio-video.asf.php +2013 -0
  766. data/lib/wp/wp-includes/ID3/module.audio-video.flv.php +745 -0
  767. data/lib/wp/wp-includes/ID3/module.audio-video.matroska.php +1751 -0
  768. data/lib/wp/wp-includes/ID3/module.audio-video.quicktime.php +2246 -0
  769. data/lib/wp/wp-includes/ID3/module.audio-video.riff.php +2586 -0
  770. data/lib/wp/wp-includes/ID3/module.audio.ac3.php +474 -0
  771. data/lib/wp/wp-includes/ID3/module.audio.dts.php +291 -0
  772. data/lib/wp/wp-includes/ID3/module.audio.flac.php +443 -0
  773. data/lib/wp/wp-includes/ID3/module.audio.mp3.php +2012 -0
  774. data/lib/wp/wp-includes/ID3/module.audio.ogg.php +756 -0
  775. data/lib/wp/wp-includes/ID3/module.tag.apetag.php +371 -0
  776. data/lib/wp/wp-includes/ID3/module.tag.id3v1.php +360 -0
  777. data/lib/wp/wp-includes/ID3/module.tag.id3v2.php +3424 -0
  778. data/lib/wp/wp-includes/ID3/module.tag.lyrics3.php +294 -0
  779. data/lib/wp/wp-includes/ID3/readme.txt +604 -0
  780. data/lib/wp/wp-includes/SimplePie/Author.php +157 -0
  781. data/lib/wp/wp-includes/SimplePie/Cache.php +133 -0
  782. data/lib/wp/wp-includes/SimplePie/Cache/Base.php +114 -0
  783. data/lib/wp/wp-includes/SimplePie/Cache/DB.php +137 -0
  784. data/lib/wp/wp-includes/SimplePie/Cache/File.php +173 -0
  785. data/lib/wp/wp-includes/SimplePie/Cache/Memcache.php +183 -0
  786. data/lib/wp/wp-includes/SimplePie/Cache/MySQL.php +438 -0
  787. data/lib/wp/wp-includes/SimplePie/Caption.php +210 -0
  788. data/lib/wp/wp-includes/SimplePie/Category.php +157 -0
  789. data/lib/wp/wp-includes/SimplePie/Content/Type/Sniffer.php +332 -0
  790. data/lib/wp/wp-includes/SimplePie/Copyright.php +130 -0
  791. data/lib/wp/wp-includes/SimplePie/Core.php +57 -0
  792. data/lib/wp/wp-includes/SimplePie/Credit.php +156 -0
  793. data/lib/wp/wp-includes/SimplePie/Decode/HTML/Entities.php +617 -0
  794. data/lib/wp/wp-includes/SimplePie/Enclosure.php +1380 -0
  795. data/lib/wp/wp-includes/SimplePie/Exception.php +52 -0
  796. data/lib/wp/wp-includes/SimplePie/File.php +292 -0
  797. data/lib/wp/wp-includes/SimplePie/HTTP/Parser.php +500 -0
  798. data/lib/wp/wp-includes/SimplePie/IRI.php +1238 -0
  799. data/lib/wp/wp-includes/SimplePie/Item.php +2964 -0
  800. data/lib/wp/wp-includes/SimplePie/Locator.php +372 -0
  801. data/lib/wp/wp-includes/SimplePie/Misc.php +2247 -0
  802. data/lib/wp/wp-includes/SimplePie/Net/IPv6.php +276 -0
  803. data/lib/wp/wp-includes/SimplePie/Parse/Date.php +983 -0
  804. data/lib/wp/wp-includes/SimplePie/Parser.php +407 -0
  805. data/lib/wp/wp-includes/SimplePie/Rating.php +129 -0
  806. data/lib/wp/wp-includes/SimplePie/Registry.php +225 -0
  807. data/lib/wp/wp-includes/SimplePie/Restriction.php +155 -0
  808. data/lib/wp/wp-includes/SimplePie/Sanitize.php +554 -0
  809. data/lib/wp/wp-includes/SimplePie/Source.php +611 -0
  810. data/lib/wp/wp-includes/SimplePie/XML/Declaration/Parser.php +362 -0
  811. data/lib/wp/wp-includes/SimplePie/gzdecode.php +371 -0
  812. data/lib/wp/wp-includes/Text/Diff.php +450 -0
  813. data/lib/wp/wp-includes/Text/Diff/Engine/native.php +436 -0
  814. data/lib/wp/wp-includes/Text/Diff/Engine/shell.php +162 -0
  815. data/lib/wp/wp-includes/Text/Diff/Engine/string.php +248 -0
  816. data/lib/wp/wp-includes/Text/Diff/Engine/xdiff.php +64 -0
  817. data/lib/wp/wp-includes/Text/Diff/Renderer.php +235 -0
  818. data/lib/wp/wp-includes/Text/Diff/Renderer/inline.php +206 -0
  819. data/lib/wp/wp-includes/admin-bar.php +870 -0
  820. data/lib/wp/wp-includes/atomlib.php +352 -0
  821. data/lib/wp/wp-includes/author-template.php +471 -0
  822. data/lib/wp/wp-includes/bookmark-template.php +298 -0
  823. data/lib/wp/wp-includes/bookmark.php +416 -0
  824. data/lib/wp/wp-includes/cache.php +704 -0
  825. data/lib/wp/wp-includes/canonical.php +586 -0
  826. data/lib/wp/wp-includes/capabilities.php +1539 -0
  827. data/lib/wp/wp-includes/category-template.php +1407 -0
  828. data/lib/wp/wp-includes/category.php +343 -0
  829. data/lib/wp/wp-includes/certificates/ca-bundle.crt +3785 -0
  830. data/lib/wp/wp-includes/class-IXR.php +1100 -0
  831. data/lib/wp/wp-includes/class-feed.php +140 -0
  832. data/lib/wp/wp-includes/class-http.php +2245 -0
  833. data/lib/wp/wp-includes/class-json.php +936 -0
  834. data/lib/wp/wp-includes/class-oembed.php +579 -0
  835. data/lib/wp/wp-includes/class-phpass.php +260 -0
  836. data/lib/wp/wp-includes/class-phpmailer.php +3265 -0
  837. data/lib/wp/wp-includes/class-pop3.php +652 -0
  838. data/lib/wp/wp-includes/class-simplepie.php +3119 -0
  839. data/lib/wp/wp-includes/class-smtp.php +943 -0
  840. data/lib/wp/wp-includes/class-snoopy.php +1256 -0
  841. data/lib/wp/wp-includes/class-wp-admin-bar.php +517 -0
  842. data/lib/wp/wp-includes/class-wp-ajax-response.php +199 -0
  843. data/lib/wp/wp-includes/class-wp-customize-control.php +1124 -0
  844. data/lib/wp/wp-includes/class-wp-customize-manager.php +1272 -0
  845. data/lib/wp/wp-includes/class-wp-customize-panel.php +200 -0
  846. data/lib/wp/wp-includes/class-wp-customize-section.php +196 -0
  847. data/lib/wp/wp-includes/class-wp-customize-setting.php +554 -0
  848. data/lib/wp/wp-includes/class-wp-customize-widgets.php +1556 -0
  849. data/lib/wp/wp-includes/class-wp-editor.php +1435 -0
  850. data/lib/wp/wp-includes/class-wp-embed.php +373 -0
  851. data/lib/wp/wp-includes/class-wp-error.php +276 -0
  852. data/lib/wp/wp-includes/class-wp-http-ixr-client.php +97 -0
  853. data/lib/wp/wp-includes/class-wp-image-editor-gd.php +459 -0
  854. data/lib/wp/wp-includes/class-wp-image-editor-imagick.php +512 -0
  855. data/lib/wp/wp-includes/class-wp-image-editor.php +475 -0
  856. data/lib/wp/wp-includes/class-wp-theme.php +1235 -0
  857. data/lib/wp/wp-includes/class-wp-walker.php +471 -0
  858. data/lib/wp/wp-includes/class-wp-xmlrpc-server.php +5984 -0
  859. data/lib/wp/wp-includes/class-wp.php +782 -0
  860. data/lib/wp/wp-includes/class.wp-dependencies.php +509 -0
  861. data/lib/wp/wp-includes/class.wp-scripts.php +247 -0
  862. data/lib/wp/wp-includes/class.wp-styles.php +210 -0
  863. data/lib/wp/wp-includes/comment-template.php +2286 -0
  864. data/lib/wp/wp-includes/comment.php +2606 -0
  865. data/lib/wp/wp-includes/compat.php +125 -0
  866. data/lib/wp/wp-includes/cron.php +469 -0
  867. data/lib/wp/wp-includes/css/admin-bar-rtl.css +1099 -0
  868. data/lib/wp/wp-includes/css/admin-bar-rtl.min.css +1 -0
  869. data/lib/wp/wp-includes/css/admin-bar.css +1099 -0
  870. data/lib/wp/wp-includes/css/admin-bar.min.css +1 -0
  871. data/lib/wp/wp-includes/css/buttons-rtl.css +364 -0
  872. data/lib/wp/wp-includes/css/buttons-rtl.min.css +1 -0
  873. data/lib/wp/wp-includes/css/buttons.css +364 -0
  874. data/lib/wp/wp-includes/css/buttons.min.css +1 -0
  875. data/lib/wp/wp-includes/css/dashicons.css +893 -0
  876. data/lib/wp/wp-includes/css/dashicons.min.css +1 -0
  877. data/lib/wp/wp-includes/css/editor-rtl.css +1993 -0
  878. data/lib/wp/wp-includes/css/editor-rtl.min.css +1 -0
  879. data/lib/wp/wp-includes/css/editor.css +1993 -0
  880. data/lib/wp/wp-includes/css/editor.min.css +1 -0
  881. data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.css +343 -0
  882. data/lib/wp/wp-includes/css/jquery-ui-dialog-rtl.min.css +19 -0
  883. data/lib/wp/wp-includes/css/jquery-ui-dialog.css +343 -0
  884. data/lib/wp/wp-includes/css/jquery-ui-dialog.min.css +19 -0
  885. data/lib/wp/wp-includes/css/media-views-rtl.css +2568 -0
  886. data/lib/wp/wp-includes/css/media-views-rtl.min.css +1 -0
  887. data/lib/wp/wp-includes/css/media-views.css +2568 -0
  888. data/lib/wp/wp-includes/css/media-views.min.css +1 -0
  889. data/lib/wp/wp-includes/css/wp-auth-check-rtl.css +100 -0
  890. data/lib/wp/wp-includes/css/wp-auth-check-rtl.min.css +1 -0
  891. data/lib/wp/wp-includes/css/wp-auth-check.css +100 -0
  892. data/lib/wp/wp-includes/css/wp-auth-check.min.css +1 -0
  893. data/lib/wp/wp-includes/css/wp-pointer-rtl.css +212 -0
  894. data/lib/wp/wp-includes/css/wp-pointer-rtl.min.css +1 -0
  895. data/lib/wp/wp-includes/css/wp-pointer.css +212 -0
  896. data/lib/wp/wp-includes/css/wp-pointer.min.css +1 -0
  897. data/lib/wp/wp-includes/date.php +475 -0
  898. data/lib/wp/wp-includes/default-constants.php +323 -0
  899. data/lib/wp/wp-includes/default-filters.php +307 -0
  900. data/lib/wp/wp-includes/default-widgets.php +1423 -0
  901. data/lib/wp/wp-includes/deprecated.php +3501 -0
  902. data/lib/wp/wp-includes/feed-atom-comments.php +115 -0
  903. data/lib/wp/wp-includes/feed-atom.php +87 -0
  904. data/lib/wp/wp-includes/feed-rdf.php +81 -0
  905. data/lib/wp/wp-includes/feed-rss.php +46 -0
  906. data/lib/wp/wp-includes/feed-rss2-comments.php +97 -0
  907. data/lib/wp/wp-includes/feed-rss2.php +115 -0
  908. data/lib/wp/wp-includes/feed.php +659 -0
  909. data/lib/wp/wp-includes/fonts/dashicons.eot +0 -0
  910. data/lib/wp/wp-includes/fonts/dashicons.svg +250 -0
  911. data/lib/wp/wp-includes/fonts/dashicons.ttf +0 -0
  912. data/lib/wp/wp-includes/fonts/dashicons.woff +0 -0
  913. data/lib/wp/wp-includes/formatting.php +4006 -0
  914. data/lib/wp/wp-includes/functions.php +4631 -0
  915. data/lib/wp/wp-includes/functions.wp-scripts.php +258 -0
  916. data/lib/wp/wp-includes/functions.wp-styles.php +245 -0
  917. data/lib/wp/wp-includes/general-template.php +2982 -0
  918. data/lib/wp/wp-includes/http.php +551 -0
  919. data/lib/wp/wp-includes/images/admin-bar-sprite-2x.png +0 -0
  920. data/lib/wp/wp-includes/images/admin-bar-sprite.png +0 -0
  921. data/lib/wp/wp-includes/images/arrow-pointer-blue-2x.png +0 -0
  922. data/lib/wp/wp-includes/images/arrow-pointer-blue.png +0 -0
  923. data/lib/wp/wp-includes/images/blank.gif +0 -0
  924. data/lib/wp/wp-includes/images/crystal/archive.png +0 -0
  925. data/lib/wp/wp-includes/images/crystal/audio.png +0 -0
  926. data/lib/wp/wp-includes/images/crystal/code.png +0 -0
  927. data/lib/wp/wp-includes/images/crystal/default.png +0 -0
  928. data/lib/wp/wp-includes/images/crystal/document.png +0 -0
  929. data/lib/wp/wp-includes/images/crystal/interactive.png +0 -0
  930. data/lib/wp/wp-includes/images/crystal/license.txt +9 -0
  931. data/lib/wp/wp-includes/images/crystal/spreadsheet.png +0 -0
  932. data/lib/wp/wp-includes/images/crystal/text.png +0 -0
  933. data/lib/wp/wp-includes/images/crystal/video.png +0 -0
  934. data/lib/wp/wp-includes/images/down_arrow-2x.gif +0 -0
  935. data/lib/wp/wp-includes/images/down_arrow.gif +0 -0
  936. data/lib/wp/wp-includes/images/icon-pointer-flag-2x.png +0 -0
  937. data/lib/wp/wp-includes/images/icon-pointer-flag.png +0 -0
  938. data/lib/wp/wp-includes/images/media/archive.png +0 -0
  939. data/lib/wp/wp-includes/images/media/audio.png +0 -0
  940. data/lib/wp/wp-includes/images/media/code.png +0 -0
  941. data/lib/wp/wp-includes/images/media/default.png +0 -0
  942. data/lib/wp/wp-includes/images/media/document.png +0 -0
  943. data/lib/wp/wp-includes/images/media/interactive.png +0 -0
  944. data/lib/wp/wp-includes/images/media/spreadsheet.png +0 -0
  945. data/lib/wp/wp-includes/images/media/text.png +0 -0
  946. data/lib/wp/wp-includes/images/media/video.png +0 -0
  947. data/lib/wp/wp-includes/images/rss-2x.png +0 -0
  948. data/lib/wp/wp-includes/images/rss.png +0 -0
  949. data/lib/wp/wp-includes/images/smilies/icon_arrow.gif +0 -0
  950. data/lib/wp/wp-includes/images/smilies/icon_biggrin.gif +0 -0
  951. data/lib/wp/wp-includes/images/smilies/icon_confused.gif +0 -0
  952. data/lib/wp/wp-includes/images/smilies/icon_cool.gif +0 -0
  953. data/lib/wp/wp-includes/images/smilies/icon_cry.gif +0 -0
  954. data/lib/wp/wp-includes/images/smilies/icon_eek.gif +0 -0
  955. data/lib/wp/wp-includes/images/smilies/icon_evil.gif +0 -0
  956. data/lib/wp/wp-includes/images/smilies/icon_exclaim.gif +0 -0
  957. data/lib/wp/wp-includes/images/smilies/icon_idea.gif +0 -0
  958. data/lib/wp/wp-includes/images/smilies/icon_lol.gif +0 -0
  959. data/lib/wp/wp-includes/images/smilies/icon_mad.gif +0 -0
  960. data/lib/wp/wp-includes/images/smilies/icon_mrgreen.gif +0 -0
  961. data/lib/wp/wp-includes/images/smilies/icon_neutral.gif +0 -0
  962. data/lib/wp/wp-includes/images/smilies/icon_question.gif +0 -0
  963. data/lib/wp/wp-includes/images/smilies/icon_razz.gif +0 -0
  964. data/lib/wp/wp-includes/images/smilies/icon_redface.gif +0 -0
  965. data/lib/wp/wp-includes/images/smilies/icon_rolleyes.gif +0 -0
  966. data/lib/wp/wp-includes/images/smilies/icon_sad.gif +0 -0
  967. data/lib/wp/wp-includes/images/smilies/icon_smile.gif +0 -0
  968. data/lib/wp/wp-includes/images/smilies/icon_surprised.gif +0 -0
  969. data/lib/wp/wp-includes/images/smilies/icon_twisted.gif +0 -0
  970. data/lib/wp/wp-includes/images/smilies/icon_wink.gif +0 -0
  971. data/lib/wp/wp-includes/images/spinner-2x.gif +0 -0
  972. data/lib/wp/wp-includes/images/spinner.gif +0 -0
  973. data/lib/wp/wp-includes/images/toggle-arrow-2x.png +0 -0
  974. data/lib/wp/wp-includes/images/toggle-arrow.png +0 -0
  975. data/lib/wp/wp-includes/images/uploader-icons-2x.png +0 -0
  976. data/lib/wp/wp-includes/images/uploader-icons.png +0 -0
  977. data/lib/wp/wp-includes/images/wlw/wp-comments.png +0 -0
  978. data/lib/wp/wp-includes/images/wlw/wp-icon.png +0 -0
  979. data/lib/wp/wp-includes/images/wlw/wp-watermark.png +0 -0
  980. data/lib/wp/wp-includes/images/wpicons-2x.png +0 -0
  981. data/lib/wp/wp-includes/images/wpicons.png +0 -0
  982. data/lib/wp/wp-includes/images/wpspin-2x.gif +0 -0
  983. data/lib/wp/wp-includes/images/wpspin.gif +0 -0
  984. data/lib/wp/wp-includes/images/xit-2x.gif +0 -0
  985. data/lib/wp/wp-includes/images/xit.gif +0 -0
  986. data/lib/wp/wp-includes/js/admin-bar.js +365 -0
  987. data/lib/wp/wp-includes/js/admin-bar.min.js +1 -0
  988. data/lib/wp/wp-includes/js/autosave.js +589 -0
  989. data/lib/wp/wp-includes/js/autosave.min.js +1 -0
  990. data/lib/wp/wp-includes/js/backbone.min.js +1 -0
  991. data/lib/wp/wp-includes/js/colorpicker.js +707 -0
  992. data/lib/wp/wp-includes/js/colorpicker.min.js +1 -0
  993. data/lib/wp/wp-includes/js/comment-reply.js +47 -0
  994. data/lib/wp/wp-includes/js/comment-reply.min.js +1 -0
  995. data/lib/wp/wp-includes/js/crop/cropper.css +165 -0
  996. data/lib/wp/wp-includes/js/crop/cropper.js +516 -0
  997. data/lib/wp/wp-includes/js/crop/marqueeHoriz.gif +0 -0
  998. data/lib/wp/wp-includes/js/crop/marqueeVert.gif +0 -0
  999. data/lib/wp/wp-includes/js/customize-base.js +617 -0
  1000. data/lib/wp/wp-includes/js/customize-base.min.js +1 -0
  1001. data/lib/wp/wp-includes/js/customize-loader.js +246 -0
  1002. data/lib/wp/wp-includes/js/customize-loader.min.js +1 -0
  1003. data/lib/wp/wp-includes/js/customize-models.js +247 -0
  1004. data/lib/wp/wp-includes/js/customize-models.min.js +1 -0
  1005. data/lib/wp/wp-includes/js/customize-preview-widgets.js +129 -0
  1006. data/lib/wp/wp-includes/js/customize-preview-widgets.min.js +1 -0
  1007. data/lib/wp/wp-includes/js/customize-preview.js +154 -0
  1008. data/lib/wp/wp-includes/js/customize-preview.min.js +1 -0
  1009. data/lib/wp/wp-includes/js/customize-views.js +231 -0
  1010. data/lib/wp/wp-includes/js/customize-views.min.js +1 -0
  1011. data/lib/wp/wp-includes/js/heartbeat.js +738 -0
  1012. data/lib/wp/wp-includes/js/heartbeat.min.js +1 -0
  1013. data/lib/wp/wp-includes/js/hoverIntent.js +115 -0
  1014. data/lib/wp/wp-includes/js/hoverIntent.min.js +1 -0
  1015. data/lib/wp/wp-includes/js/imgareaselect/border-anim-h.gif +0 -0
  1016. data/lib/wp/wp-includes/js/imgareaselect/border-anim-v.gif +0 -0
  1017. data/lib/wp/wp-includes/js/imgareaselect/imgareaselect.css +41 -0
  1018. data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.js +1205 -0
  1019. data/lib/wp/wp-includes/js/imgareaselect/jquery.imgareaselect.min.js +1 -0
  1020. data/lib/wp/wp-includes/js/jcrop/Jcrop.gif +0 -0
  1021. data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.css +29 -0
  1022. data/lib/wp/wp-includes/js/jcrop/jquery.Jcrop.min.js +22 -0
  1023. data/lib/wp/wp-includes/js/jquery/jquery-migrate.js +521 -0
  1024. data/lib/wp/wp-includes/js/jquery/jquery-migrate.min.js +2 -0
  1025. data/lib/wp/wp-includes/js/jquery/jquery.color.min.js +2 -0
  1026. data/lib/wp/wp-includes/js/jquery/jquery.form.js +1193 -0
  1027. data/lib/wp/wp-includes/js/jquery/jquery.form.min.js +11 -0
  1028. data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.js +134 -0
  1029. data/lib/wp/wp-includes/js/jquery/jquery.hotkeys.min.js +1 -0
  1030. data/lib/wp/wp-includes/js/jquery/jquery.js +5 -0
  1031. data/lib/wp/wp-includes/js/jquery/jquery.masonry.min.js +11 -0
  1032. data/lib/wp/wp-includes/js/jquery/jquery.query.js +11 -0
  1033. data/lib/wp/wp-includes/js/jquery/jquery.schedule.js +36 -0
  1034. data/lib/wp/wp-includes/js/jquery/jquery.serialize-object.js +31 -0
  1035. data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.js +99 -0
  1036. data/lib/wp/wp-includes/js/jquery/jquery.table-hotkeys.min.js +1 -0
  1037. data/lib/wp/wp-includes/js/jquery/jquery.ui.touch-punch.js +11 -0
  1038. data/lib/wp/wp-includes/js/jquery/suggest.js +316 -0
  1039. data/lib/wp/wp-includes/js/jquery/suggest.min.js +1 -0
  1040. data/lib/wp/wp-includes/js/jquery/ui/accordion.min.js +11 -0
  1041. data/lib/wp/wp-includes/js/jquery/ui/autocomplete.min.js +11 -0
  1042. data/lib/wp/wp-includes/js/jquery/ui/button.min.js +11 -0
  1043. data/lib/wp/wp-includes/js/jquery/ui/core.min.js +11 -0
  1044. data/lib/wp/wp-includes/js/jquery/ui/datepicker.min.js +12 -0
  1045. data/lib/wp/wp-includes/js/jquery/ui/dialog.min.js +11 -0
  1046. data/lib/wp/wp-includes/js/jquery/ui/draggable.min.js +11 -0
  1047. data/lib/wp/wp-includes/js/jquery/ui/droppable.min.js +11 -0
  1048. data/lib/wp/wp-includes/js/jquery/ui/effect-blind.min.js +11 -0
  1049. data/lib/wp/wp-includes/js/jquery/ui/effect-bounce.min.js +11 -0
  1050. data/lib/wp/wp-includes/js/jquery/ui/effect-clip.min.js +11 -0
  1051. data/lib/wp/wp-includes/js/jquery/ui/effect-drop.min.js +11 -0
  1052. data/lib/wp/wp-includes/js/jquery/ui/effect-explode.min.js +11 -0
  1053. data/lib/wp/wp-includes/js/jquery/ui/effect-fade.min.js +11 -0
  1054. data/lib/wp/wp-includes/js/jquery/ui/effect-fold.min.js +11 -0
  1055. data/lib/wp/wp-includes/js/jquery/ui/effect-highlight.min.js +11 -0
  1056. data/lib/wp/wp-includes/js/jquery/ui/effect-puff.min.js +11 -0
  1057. data/lib/wp/wp-includes/js/jquery/ui/effect-pulsate.min.js +11 -0
  1058. data/lib/wp/wp-includes/js/jquery/ui/effect-scale.min.js +11 -0
  1059. data/lib/wp/wp-includes/js/jquery/ui/effect-shake.min.js +11 -0
  1060. data/lib/wp/wp-includes/js/jquery/ui/effect-size.min.js +11 -0
  1061. data/lib/wp/wp-includes/js/jquery/ui/effect-slide.min.js +11 -0
  1062. data/lib/wp/wp-includes/js/jquery/ui/effect-transfer.min.js +11 -0
  1063. data/lib/wp/wp-includes/js/jquery/ui/effect.min.js +21 -0
  1064. data/lib/wp/wp-includes/js/jquery/ui/menu.min.js +11 -0
  1065. data/lib/wp/wp-includes/js/jquery/ui/mouse.min.js +11 -0
  1066. data/lib/wp/wp-includes/js/jquery/ui/position.min.js +11 -0
  1067. data/lib/wp/wp-includes/js/jquery/ui/progressbar.min.js +11 -0
  1068. data/lib/wp/wp-includes/js/jquery/ui/resizable.min.js +11 -0
  1069. data/lib/wp/wp-includes/js/jquery/ui/selectable.min.js +11 -0
  1070. data/lib/wp/wp-includes/js/jquery/ui/selectmenu.min.js +11 -0
  1071. data/lib/wp/wp-includes/js/jquery/ui/slider.min.js +11 -0
  1072. data/lib/wp/wp-includes/js/jquery/ui/sortable.min.js +11 -0
  1073. data/lib/wp/wp-includes/js/jquery/ui/spinner.min.js +11 -0
  1074. data/lib/wp/wp-includes/js/jquery/ui/tabs.min.js +11 -0
  1075. data/lib/wp/wp-includes/js/jquery/ui/tooltip.min.js +11 -0
  1076. data/lib/wp/wp-includes/js/jquery/ui/widget.min.js +11 -0
  1077. data/lib/wp/wp-includes/js/json2.js +480 -0
  1078. data/lib/wp/wp-includes/js/json2.min.js +1 -0
  1079. data/lib/wp/wp-includes/js/masonry.min.js +1 -0
  1080. data/lib/wp/wp-includes/js/mce-view.js +829 -0
  1081. data/lib/wp/wp-includes/js/mce-view.min.js +1 -0
  1082. data/lib/wp/wp-includes/js/media-audiovideo.js +831 -0
  1083. data/lib/wp/wp-includes/js/media-audiovideo.min.js +1 -0
  1084. data/lib/wp/wp-includes/js/media-editor.js +1114 -0
  1085. data/lib/wp/wp-includes/js/media-editor.min.js +1 -0
  1086. data/lib/wp/wp-includes/js/media-grid.js +732 -0
  1087. data/lib/wp/wp-includes/js/media-grid.min.js +1 -0
  1088. data/lib/wp/wp-includes/js/media-models.js +1362 -0
  1089. data/lib/wp/wp-includes/js/media-models.min.js +1 -0
  1090. data/lib/wp/wp-includes/js/media-views.js +7484 -0
  1091. data/lib/wp/wp-includes/js/media-views.min.js +3 -0
  1092. data/lib/wp/wp-includes/js/mediaelement/background.png +0 -0
  1093. data/lib/wp/wp-includes/js/mediaelement/bigplay.png +0 -0
  1094. data/lib/wp/wp-includes/js/mediaelement/bigplay.svg +1 -0
  1095. data/lib/wp/wp-includes/js/mediaelement/controls.png +0 -0
  1096. data/lib/wp/wp-includes/js/mediaelement/controls.svg +1 -0
  1097. data/lib/wp/wp-includes/js/mediaelement/flashmediaelement.swf +0 -0
  1098. data/lib/wp/wp-includes/js/mediaelement/loading.gif +0 -0
  1099. data/lib/wp/wp-includes/js/mediaelement/mediaelement-and-player.min.js +181 -0
  1100. data/lib/wp/wp-includes/js/mediaelement/mediaelementplayer.min.css +1 -0
  1101. data/lib/wp/wp-includes/js/mediaelement/silverlightmediaelement.xap +0 -0
  1102. data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.css +274 -0
  1103. data/lib/wp/wp-includes/js/mediaelement/wp-mediaelement.js +34 -0
  1104. data/lib/wp/wp-includes/js/mediaelement/wp-playlist.js +175 -0
  1105. data/lib/wp/wp-includes/js/plupload/handlers.js +488 -0
  1106. data/lib/wp/wp-includes/js/plupload/handlers.min.js +1 -0
  1107. data/lib/wp/wp-includes/js/plupload/license.txt +339 -0
  1108. data/lib/wp/wp-includes/js/plupload/plupload.flash.swf +0 -0
  1109. data/lib/wp/wp-includes/js/plupload/plupload.full.min.js +28 -0
  1110. data/lib/wp/wp-includes/js/plupload/plupload.silverlight.xap +0 -0
  1111. data/lib/wp/wp-includes/js/plupload/wp-plupload.js +376 -0
  1112. data/lib/wp/wp-includes/js/plupload/wp-plupload.min.js +1 -0
  1113. data/lib/wp/wp-includes/js/quicktags.js +652 -0
  1114. data/lib/wp/wp-includes/js/quicktags.min.js +1 -0
  1115. data/lib/wp/wp-includes/js/shortcode.js +356 -0
  1116. data/lib/wp/wp-includes/js/shortcode.min.js +1 -0
  1117. data/lib/wp/wp-includes/js/swfobject.js +4 -0
  1118. data/lib/wp/wp-includes/js/swfupload/handlers.js +376 -0
  1119. data/lib/wp/wp-includes/js/swfupload/handlers.min.js +1 -0
  1120. data/lib/wp/wp-includes/js/swfupload/license.txt +32 -0
  1121. data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.cookies.js +53 -0
  1122. data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.queue.js +98 -0
  1123. data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.speed.js +342 -0
  1124. data/lib/wp/wp-includes/js/swfupload/plugins/swfupload.swfobject.js +105 -0
  1125. data/lib/wp/wp-includes/js/swfupload/swfupload.js +980 -0
  1126. data/lib/wp/wp-includes/js/swfupload/swfupload.swf +0 -0
  1127. data/lib/wp/wp-includes/js/thickbox/loadingAnimation.gif +0 -0
  1128. data/lib/wp/wp-includes/js/thickbox/macFFBgHack.png +0 -0
  1129. data/lib/wp/wp-includes/js/thickbox/thickbox.css +138 -0
  1130. data/lib/wp/wp-includes/js/thickbox/thickbox.js +314 -0
  1131. data/lib/wp/wp-includes/js/tinymce/langs/wp-langs-en.js +519 -0
  1132. data/lib/wp/wp-includes/js/tinymce/license.txt +504 -0
  1133. data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.js +370 -0
  1134. data/lib/wp/wp-includes/js/tinymce/plugins/charmap/plugin.min.js +1 -0
  1135. data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.js +112 -0
  1136. data/lib/wp/wp-includes/js/tinymce/plugins/colorpicker/plugin.min.js +1 -0
  1137. data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/css/dialog.css +212 -0
  1138. data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.js +304 -0
  1139. data/lib/wp/wp-includes/js/tinymce/plugins/compat3x/plugin.min.js +1 -0
  1140. data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.js +64 -0
  1141. data/lib/wp/wp-includes/js/tinymce/plugins/directionality/plugin.min.js +1 -0
  1142. data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.js +136 -0
  1143. data/lib/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js +1 -0
  1144. data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.js +30 -0
  1145. data/lib/wp/wp-includes/js/tinymce/plugins/hr/plugin.min.js +1 -0
  1146. data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.js +450 -0
  1147. data/lib/wp/wp-includes/js/tinymce/plugins/image/plugin.min.js +1 -0
  1148. data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.js +786 -0
  1149. data/lib/wp/wp-includes/js/tinymce/plugins/lists/plugin.min.js +1 -0
  1150. data/lib/wp/wp-includes/js/tinymce/plugins/media/moxieplayer.swf +0 -0
  1151. data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.js +774 -0
  1152. data/lib/wp/wp-includes/js/tinymce/plugins/media/plugin.min.js +1 -0
  1153. data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.js +1553 -0
  1154. data/lib/wp/wp-includes/js/tinymce/plugins/paste/plugin.min.js +1 -0
  1155. data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.js +125 -0
  1156. data/lib/wp/wp-includes/js/tinymce/plugins/tabfocus/plugin.min.js +1 -0
  1157. data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.js +272 -0
  1158. data/lib/wp/wp-includes/js/tinymce/plugins/textcolor/plugin.min.js +1 -0
  1159. data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.js +513 -0
  1160. data/lib/wp/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js +1 -0
  1161. data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.js +207 -0
  1162. data/lib/wp/wp-includes/js/tinymce/plugins/wpautoresize/plugin.min.js +1 -0
  1163. data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.js +92 -0
  1164. data/lib/wp/wp-includes/js/tinymce/plugins/wpdialogs/plugin.min.js +1 -0
  1165. data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.js +1035 -0
  1166. data/lib/wp/wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js +1 -0
  1167. data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js +78 -0
  1168. data/lib/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.min.js +1 -0
  1169. data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.js +130 -0
  1170. data/lib/wp/wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js +1 -0
  1171. data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.js +63 -0
  1172. data/lib/wp/wp-includes/js/tinymce/plugins/wplink/plugin.min.js +1 -0
  1173. data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.js +694 -0
  1174. data/lib/wp/wp-includes/js/tinymce/plugins/wpview/plugin.min.js +1 -0
  1175. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.inline.min.css +1 -0
  1176. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/content.min.css +1 -0
  1177. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/readme.md +1 -0
  1178. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.eot +0 -0
  1179. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.svg +62 -0
  1180. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf +0 -0
  1181. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce-small.woff +0 -0
  1182. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.eot +0 -0
  1183. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.svg +63 -0
  1184. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.ttf +0 -0
  1185. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/fonts/tinymce.woff +0 -0
  1186. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/anchor.gif +0 -0
  1187. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/loader.gif +0 -0
  1188. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/object.gif +0 -0
  1189. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/img/trans.gif +0 -0
  1190. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.ie7.min.css +1 -0
  1191. data/lib/wp/wp-includes/js/tinymce/skins/lightgray/skin.min.css +1 -0
  1192. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/audio.png +0 -0
  1193. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/dashicon-edit.png +0 -0
  1194. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/dashicon-no-alt.png +0 -0
  1195. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/embedded.png +0 -0
  1196. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/gallery-2x.png +0 -0
  1197. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/gallery.png +0 -0
  1198. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/more-2x.png +0 -0
  1199. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/more.png +0 -0
  1200. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/pagebreak-2x.png +0 -0
  1201. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/pagebreak.png +0 -0
  1202. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/playlist-audio.png +0 -0
  1203. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/playlist-video.png +0 -0
  1204. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/images/video.png +0 -0
  1205. data/lib/wp/wp-includes/js/tinymce/skins/wordpress/wp-content.css +618 -0
  1206. data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.js +617 -0
  1207. data/lib/wp/wp-includes/js/tinymce/themes/modern/theme.min.js +1 -0
  1208. data/lib/wp/wp-includes/js/tinymce/tiny_mce_popup.js +539 -0
  1209. data/lib/wp/wp-includes/js/tinymce/tinymce.min.js +11 -0
  1210. data/lib/wp/wp-includes/js/tinymce/utils/editable_selects.js +70 -0
  1211. data/lib/wp/wp-includes/js/tinymce/utils/form_utils.js +210 -0
  1212. data/lib/wp/wp-includes/js/tinymce/utils/mctabs.js +164 -0
  1213. data/lib/wp/wp-includes/js/tinymce/utils/validate.js +252 -0
  1214. data/lib/wp/wp-includes/js/tinymce/wp-mce-help.php +145 -0
  1215. data/lib/wp/wp-includes/js/tinymce/wp-tinymce.js.gz +0 -0
  1216. data/lib/wp/wp-includes/js/tinymce/wp-tinymce.php +39 -0
  1217. data/lib/wp/wp-includes/js/tw-sack.js +193 -0
  1218. data/lib/wp/wp-includes/js/tw-sack.min.js +1 -0
  1219. data/lib/wp/wp-includes/js/underscore.min.js +1 -0
  1220. data/lib/wp/wp-includes/js/utils.js +197 -0
  1221. data/lib/wp/wp-includes/js/utils.min.js +1 -0
  1222. data/lib/wp/wp-includes/js/wp-ajax-response.js +64 -0
  1223. data/lib/wp/wp-includes/js/wp-ajax-response.min.js +1 -0
  1224. data/lib/wp/wp-includes/js/wp-auth-check.js +112 -0
  1225. data/lib/wp/wp-includes/js/wp-auth-check.min.js +1 -0
  1226. data/lib/wp/wp-includes/js/wp-backbone.js +386 -0
  1227. data/lib/wp/wp-includes/js/wp-backbone.min.js +1 -0
  1228. data/lib/wp/wp-includes/js/wp-list-revisions.js +24 -0
  1229. data/lib/wp/wp-includes/js/wp-list-revisions.min.js +1 -0
  1230. data/lib/wp/wp-includes/js/wp-lists.js +469 -0
  1231. data/lib/wp/wp-includes/js/wp-lists.min.js +1 -0
  1232. data/lib/wp/wp-includes/js/wp-pointer.js +282 -0
  1233. data/lib/wp/wp-includes/js/wp-pointer.min.js +1 -0
  1234. data/lib/wp/wp-includes/js/wp-util.js +106 -0
  1235. data/lib/wp/wp-includes/js/wp-util.min.js +1 -0
  1236. data/lib/wp/wp-includes/js/wpdialog.js +19 -0
  1237. data/lib/wp/wp-includes/js/wpdialog.min.js +1 -0
  1238. data/lib/wp/wp-includes/js/wplink.js +615 -0
  1239. data/lib/wp/wp-includes/js/wplink.min.js +1 -0
  1240. data/lib/wp/wp-includes/js/zxcvbn-async.js +18 -0
  1241. data/lib/wp/wp-includes/js/zxcvbn-async.min.js +1 -0
  1242. data/lib/wp/wp-includes/js/zxcvbn.min.js +47 -0
  1243. data/lib/wp/wp-includes/kses.php +1526 -0
  1244. data/lib/wp/wp-includes/l10n.php +908 -0
  1245. data/lib/wp/wp-includes/link-template.php +3141 -0
  1246. data/lib/wp/wp-includes/load.php +828 -0
  1247. data/lib/wp/wp-includes/locale.php +368 -0
  1248. data/lib/wp/wp-includes/media-template.php +1235 -0
  1249. data/lib/wp/wp-includes/media.php +3329 -0
  1250. data/lib/wp/wp-includes/meta.php +1221 -0
  1251. data/lib/wp/wp-includes/ms-blogs.php +939 -0
  1252. data/lib/wp/wp-includes/ms-default-constants.php +153 -0
  1253. data/lib/wp/wp-includes/ms-default-filters.php +82 -0
  1254. data/lib/wp/wp-includes/ms-deprecated.php +347 -0
  1255. data/lib/wp/wp-includes/ms-files.php +82 -0
  1256. data/lib/wp/wp-includes/ms-functions.php +2476 -0
  1257. data/lib/wp/wp-includes/ms-load.php +458 -0
  1258. data/lib/wp/wp-includes/ms-settings.php +213 -0
  1259. data/lib/wp/wp-includes/nav-menu-template.php +678 -0
  1260. data/lib/wp/wp-includes/nav-menu.php +895 -0
  1261. data/lib/wp/wp-includes/option.php +1440 -0
  1262. data/lib/wp/wp-includes/pluggable-deprecated.php +192 -0
  1263. data/lib/wp/wp-includes/pluggable.php +2283 -0
  1264. data/lib/wp/wp-includes/plugin.php +920 -0
  1265. data/lib/wp/wp-includes/pomo/entry.php +78 -0
  1266. data/lib/wp/wp-includes/pomo/mo.php +262 -0
  1267. data/lib/wp/wp-includes/pomo/po.php +384 -0
  1268. data/lib/wp/wp-includes/pomo/streams.php +209 -0
  1269. data/lib/wp/wp-includes/pomo/translations.php +275 -0
  1270. data/lib/wp/wp-includes/post-formats.php +243 -0
  1271. data/lib/wp/wp-includes/post-template.php +1766 -0
  1272. data/lib/wp/wp-includes/post-thumbnail-template.php +142 -0
  1273. data/lib/wp/wp-includes/post.php +5842 -0
  1274. data/lib/wp/wp-includes/query.php +4666 -0
  1275. data/lib/wp/wp-includes/registration-functions.php +7 -0
  1276. data/lib/wp/wp-includes/registration.php +7 -0
  1277. data/lib/wp/wp-includes/revision.php +657 -0
  1278. data/lib/wp/wp-includes/rewrite.php +2180 -0
  1279. data/lib/wp/wp-includes/rss-functions.php +9 -0
  1280. data/lib/wp/wp-includes/rss.php +936 -0
  1281. data/lib/wp/wp-includes/script-loader.php +1045 -0
  1282. data/lib/wp/wp-includes/session.php +430 -0
  1283. data/lib/wp/wp-includes/shortcodes.php +410 -0
  1284. data/lib/wp/wp-includes/taxonomy.php +4006 -0
  1285. data/lib/wp/wp-includes/template-loader.php +76 -0
  1286. data/lib/wp/wp-includes/template.php +505 -0
  1287. data/lib/wp/wp-includes/theme-compat/comments-popup.php +128 -0
  1288. data/lib/wp/wp-includes/theme-compat/comments.php +101 -0
  1289. data/lib/wp/wp-includes/theme-compat/footer.php +30 -0
  1290. data/lib/wp/wp-includes/theme-compat/header.php +49 -0
  1291. data/lib/wp/wp-includes/theme-compat/sidebar.php +83 -0
  1292. data/lib/wp/wp-includes/theme.php +2014 -0
  1293. data/lib/wp/wp-includes/update.php +674 -0
  1294. data/lib/wp/wp-includes/user.php +2292 -0
  1295. data/lib/wp/wp-includes/vars.php +144 -0
  1296. data/lib/wp/wp-includes/version.php +35 -0
  1297. data/lib/wp/wp-includes/widgets.php +1514 -0
  1298. data/lib/wp/wp-includes/wlwmanifest.xml +43 -0
  1299. data/lib/wp/wp-includes/wp-db.php +2190 -0
  1300. data/lib/wp/wp-includes/wp-diff.php +523 -0
  1301. data/lib/wp/wp-links-opml.php +80 -0
  1302. data/lib/wp/wp-load.php +73 -0
  1303. data/lib/wp/wp-login.php +952 -0
  1304. data/lib/wp/wp-mail.php +260 -0
  1305. data/lib/wp/wp-settings.php +374 -0
  1306. data/lib/wp/wp-signup.php +749 -0
  1307. data/lib/wp/wp-trackback.php +127 -0
  1308. data/lib/wp/xmlrpc.php +101 -0
  1309. data/stump-cli.gemspec +26 -0
  1310. 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 );